jeecms3.0.4版本 详解请求如何找到首页(转)
第一步:发送http://localhost:8080/emisstrade/ 请求
第二步:首先进入配置文件web.xml,
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/application-context.xml
/WEB-INF/config/cache-context.xml
/WEB-INF/config/captcha-context.xml
/WEB-INF/config/jeecore-context.xml
/WEB-INF/config/jeecms-context.xml
</param-value>
</context-param>
应用范围内的初始化参数
第三步:选择页面:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.shtml</welcome-file>
<welcome-file>index.jhtml</welcome-file> 走这个
</welcome-file-list>
第四步:web.xml中的servlet配置拦截
<servlet>
<servlet-name>JeeCmsFront</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/jeecms-servlet-front.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JeeCmsFront</servlet-name>
<url-pattern>*.jhtml</url-pattern>
</servlet-mapping>
第五步:找到/WEB-INF/config/jeecms-servlet-front.xml
FrontContextInterceptor和FrontLocaleInterceptor拦截器
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<ref bean="frontContextInterceptor"/>
<ref bean="frontLocaleInterceptor"/>
</list>
</property>
</bean>
<bean id="frontContextInterceptor" class="com.jeecms.cms.web.FrontContextInterceptor"/>
<bean id="frontLocaleInterceptor" class="com.jeecms.cms.web.FrontLocaleInterceptor"/>
发送http://localhost:8080/emisstrade/ 请求时被FrontContextInterceptor拦截----CMS上下文信息拦截器。
执行preHandle方法中---》cmsSiteMng.getListFromCache()返回站点集合---》dao.getList(true)--》String hql = "from CmsSite bean order by bean.id asc"; return getSession().createQuery(hql).setCacheable(cacheable).list();
此时给站点赋值并保存到request中(CmsUtils.setSite(request, site)方法中---》request.setAttribute(SITE_KEY, site);)用户信息也是如此保存到request(CmsUtils.setUser(request,user);)
然后进入FrontLocaleInterceptor拦截----前台本地化信息拦截器:
执行preHandle方法中---》CmsUtils.getSite(request)方法中---》request.getAttribute(SITE_KEY);
还有个方法localeResolver.setLocale(request, response, (Locale) localeEditor.getValue());
第六步:jeecms-servlet-front.xml里面有<import resource="jeecms-servlet-front-action.xml"/>
在jeecms-servlet-front-action.xml配置文件中有
<bean id="dynamicAct" class="com.jeecms.cms.action.front.DynamicPageAct"/>
可以找到类DynamicPageAct,根据注解机制:
@RequestMapping(value = "/index.jhtml", method = RequestMethod.GET)
public String indexForWeblogic(HttpServletRequest request, ModelMap model) {//此时model为{}
return index(request, model);//方法如下
}
@RequestMapping(value = "/", method = RequestMethod.GET)
public String index(HttpServletRequest request, ModelMap model) {
CmsSite site = CmsUtils.getSite(request);//获取站点信息
FrontUtils.frontData(request, model, site);//方法如下
//为前台模板设置公用数据里面有frontData(map, site, ser, location, startTime);给map添加数据
return FrontUtils.getTplPath(request, site.getSolutionPath(),TPLDIR_INDEX, TPL_INDEX);
//获得模板路径。将对模板文件名称进行本地化处理。返回路径/WEB-INF/t/cms/www/red/index/首页.html
}
public static void frontData(Map<String, Object> map, CmsSite site,
CmsUser user, String location, Long startTime) {//给map添加数据,很重要
if (startTime != null) {
map.put(START_TIME, startTime);
}
if (user != null) {
map.put(USER, user);
}
map.put(SITE, site);
String ctx = site.getContextPath() == null ? "" : site.getContextPath();
map.put(BASE, ctx);
map.put(RES_SYS, ctx + RES_PATH);
String res = ctx + RES_PATH + "/" + site.getPath() + "/"
+ site.getTplSolution();
// res路径需要去除第一个字符'/'
map.put(RES_TPL, res.substring(1));
map.put(LOCATION, location);
}
map数据例子:{(START_TIME)_start_time=1300770144531, (SITE)site=com.jeecms.cms.entity.main.CmsSite@2e3013f6, (BASE)base=/emisstrade,(RES_SYS)resSys=/emisstrade/r/cms, (RES_TPL)res=emisstrade/r/cms/www/red,(LOCATION)location=http://localhost:8080/emisstrade/}
public static String getTplPath(HttpServletRequest request,
String solution, String dir, String name) {
return solution + "/" + dir + "/"+ MessageResolver.getMessage(request, name) +TPL_SUFFIX;
//MessageResolver.getMessage(request, name)获得国际化信息
}
其他
返回首页.html后,加载并执行标签,然后再发出用户登录页面请求,在用户登录的js里有触发登录的请求
jeecms3.0.4版本 详解请求如何找到首页(转)的更多相关文章
- Apache2.2+Tomcat7.0整合配置详解
一.简单介绍 Apache.Tomcat Apache HTTP Server(简称 Apache),是 Apache 软件基金协会的一个开放源码的网页服务器,可以在 Windows.Unix.Lin ...
- 转 OAuth 2.0授权协议详解
http://www.jb51.net/article/54948.htm 作者:阮一峰 字体:[增加 减小] 类型:转载 时间:2014-09-10我要评论 这篇文章主要介绍了OAuth 2.0授权 ...
- redis5.0.3配置文件详解
Redis最新版本5.0.3配置文件详解 单位 #当你需要为某个配置项指定内存大小的时候,必须要带上单位, #通常的格式就是 1k 5gb 4m 等: #1k => 1000 bytes #1k ...
- IIS7.0 Appcmd 命令详解和定时重启应用池及站点的设置
IIS7.0 Appcmd 命令详解 废话不说!虽然有配置界面管理器!但是做安装包的时候命令创建是必不可少的!最近使用NSIS制作安装包仔细研究了一下Appcmd的命令,可谓是功能齐全. 上网查了些资 ...
- IIS7.0 Appcmd 命令详解
原文 IIS7.0 Appcmd 命令详解 一:准备工作 APPcmd.exe 位于 C:\Windows\System32\inetsrv 目录 使用 Cd c:\Windows\System32\ ...
- Android EventBus 3.0 实例使用详解
EventBus的使用和原理在网上有很多的博客了,其中泓洋大哥和启舰写的非常非常棒,我也是跟着他们的博客学会的EventBus,因为是第一次接触并使用EventBus,所以我写的更多是如何使用,源码解 ...
- RxJava2.0的使用详解
RxJava2.0的使用详解 1,初识RxJava RxJava就是一种用Java语言实现的响应式编程,来创建基于事件的异步程序 RxJava是一个基于事件订阅的异步执行的一个类库,目前比较火的一些技 ...
- loadrunner11.0 安装破解详解使用教程
loadrunner11.0 安装破解详解使用教程 来源:互联网 作者:佚名 时间:01-21 10:25:34 [大 中 小] 很多朋友下载了loadrunner11但不是很会使用,这里简单介绍下安 ...
- QuartusII13.0使用教程详解(一个完整的工程建立)
好久都没有发布自己的博客了,因为最近学校有比赛,从参加到现在都是一脸懵逼,幸亏有bingo大神的教程,让我慢慢走上了VIP之旅,bingo大神的无私奉献精神值得我们每一个业界人士学习,向bingo致敬 ...
随机推荐
- 【数据库】_由2000W多条开房数据引发的思考、实践----给在校生的一个真实【练耙场】,同学们,来开始一次伟大的尝试吧。
× 缘起---闲逛博客园 前几天的时候,在某一QQ群看到一条消息“XXX酒店开房XXXBTXX迅雷BT下载”,当时是一目十行的心态浏览,目光掠过时, 第一反应我想多了~以为是XX种子(你懂的~ ...
- AngularJs的$http发送POST请求,php无法接收Post的数据解决方案
最近在使用AngularJs+Php开发中遇到php后台无法接收到来自AngularJs的数据,在网上也有许多解决方法,却都点到即止.多番摸索后记录下解决方法:tips:当前使用的AngularJ ...
- Debian/Ubuntu安装SSH-Server(SFTP)
在Debian/Ubuntu命令行执行: sudo apt-get update sudo apt-get install ssh sudo apt-get install openssh-serve ...
- 知乎一道前端面试题详解,关于this的使用
请说明要输出正确的myName的值要如何修改程序?并解释原因 foo = function(){ this.myName = "Foo function."; } foo.prot ...
- jquery中ajax用return来返回值无效
jquery中,ajax返回值,有三种写法,只有其中一种是成功的 /** * async:false,同步调用 * 返回1:2 * 失败 * 分析:ajax内部是一个或多个定义的函数,ajax中ret ...
- oracle存储过程
1.存储过程定义 储存程序 (Stored Procedure),又可称预储程序或者存储过程,是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象,它可以视为数据库中的一种函数或子程序.-- ...
- JavaScript replace() 方法
参考:http://www.w3school.com.cn/jsref/jsref_replace.asp 需要有一点注意的是:可以是函数的形式做为返回值,如下: "test{0}" ...
- Mysql 查看、创建、更改 数据库和表
一.一探究竟 我想看看有多少个数据库,有多少个表,以及表里有啥东西.那么你可以这样: 图形界面: 命令: 查看多少个数据库:注意 后面带s #查看 SHOW DATABASES; #查看表 USE b ...
- Java学习笔记(未完待续)
变量的作用域(scope)是指变量可以在程序中引用的范围.在方法中定义的变量称为局部变量(local variable).局部变量的作用域从声明变量的地方开始,直到包含该变量的块结束为止.局部变量都必 ...
- 在Ubuntu下安装ISE并给Atlys板子编程
参考 http://blog.csdn.net/rill_zhen/article/details/13770655 http://www.eefocus.com/zilion/blog/12-07/ ...