jeecms3.0.4版本 详解请求如何找到首页
2011-03-23 17:11
447 查看
2011-03-23
第一步:发送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/}
/**
* 获得模板路径。将对模板文件名称进行本地化处理。
*
* @param request
* @param solution
*
方案路径
* @param dir
*
模板目录。不本地化处理。
* @param name
*
模板名称。本地化处理。
* @return
*/
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里有触发登录的请求
第一步:发送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/}
/**
* 获得模板路径。将对模板文件名称进行本地化处理。
*
* @param request
* @param solution
*
方案路径
* @param dir
*
模板目录。不本地化处理。
* @param name
*
模板名称。本地化处理。
* @return
*/
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版本 详解请求如何找到首页
- 详解SpringMVC请求的时候是如何找到正确的Controller
- 详解SpringMVC请求的时候是如何找到正确的Controller[附带源码分析]
- 详解SpringMVC请求的时候是如何找到正确的Controller
- 详解SpringMVC请求的时候是如何找到正确的Controller[附带源码分析]
- 详解SpringMVC请求的时候是如何找到正确的Controller[附带源码分析]
- 详解SpringMVC请求的时候是如何找到正确的Controller
- 详解SpringMVC请求的时候是如何找到正确的Controller
- springMVC原理(三):详解SpringMVC请求的时候是如何找到正确的Controller[附带源码分析]
- iOS在页面销毁时如何优雅的cancel网络请求详解
- 详解IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用)
- Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
- Laravel5.5以下版本中如何自定义日志行为详解
- 详解如何解决Vue和vue-template-compiler版本之间的问题
- 如何为Spark Application指定不同的JDK版本详解
- Spring MVC的handlermapping之请求分发如何找到正确的Handler(RequestMappingHandlerMapping)
- Ajax详解及其案例分析之如何获得Ajax对象,使用Ajax对象发送GET和POST请求,校验用户名,POST和GET请求时的乱码处理,实现级联的下拉列表
- 详解create-react-app 2.0版本如何启用装饰器语法
- tomcat 责任链设计模式 底层源码剖析---如何通过请求(url)找到jsp、servlet文件
- 如何找到文件版本号,以及如何在vs工程中设置(查找)版本号