第一步:发送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版本 详解请求如何找到首页(转)的更多相关文章

  1. Apache2.2+Tomcat7.0整合配置详解

    一.简单介绍 Apache.Tomcat Apache HTTP Server(简称 Apache),是 Apache 软件基金协会的一个开放源码的网页服务器,可以在 Windows.Unix.Lin ...

  2. 转 OAuth 2.0授权协议详解

    http://www.jb51.net/article/54948.htm 作者:阮一峰 字体:[增加 减小] 类型:转载 时间:2014-09-10我要评论 这篇文章主要介绍了OAuth 2.0授权 ...

  3. redis5.0.3配置文件详解

    Redis最新版本5.0.3配置文件详解 单位 #当你需要为某个配置项指定内存大小的时候,必须要带上单位, #通常的格式就是 1k 5gb 4m 等: #1k => 1000 bytes #1k ...

  4. IIS7.0 Appcmd 命令详解和定时重启应用池及站点的设置

    IIS7.0 Appcmd 命令详解 废话不说!虽然有配置界面管理器!但是做安装包的时候命令创建是必不可少的!最近使用NSIS制作安装包仔细研究了一下Appcmd的命令,可谓是功能齐全. 上网查了些资 ...

  5. IIS7.0 Appcmd 命令详解

    原文 IIS7.0 Appcmd 命令详解 一:准备工作 APPcmd.exe 位于 C:\Windows\System32\inetsrv 目录 使用 Cd c:\Windows\System32\ ...

  6. Android EventBus 3.0 实例使用详解

    EventBus的使用和原理在网上有很多的博客了,其中泓洋大哥和启舰写的非常非常棒,我也是跟着他们的博客学会的EventBus,因为是第一次接触并使用EventBus,所以我写的更多是如何使用,源码解 ...

  7. RxJava2.0的使用详解

    RxJava2.0的使用详解 1,初识RxJava RxJava就是一种用Java语言实现的响应式编程,来创建基于事件的异步程序 RxJava是一个基于事件订阅的异步执行的一个类库,目前比较火的一些技 ...

  8. loadrunner11.0 安装破解详解使用教程

    loadrunner11.0 安装破解详解使用教程 来源:互联网 作者:佚名 时间:01-21 10:25:34 [大 中 小] 很多朋友下载了loadrunner11但不是很会使用,这里简单介绍下安 ...

  9. QuartusII13.0使用教程详解(一个完整的工程建立)

    好久都没有发布自己的博客了,因为最近学校有比赛,从参加到现在都是一脸懵逼,幸亏有bingo大神的教程,让我慢慢走上了VIP之旅,bingo大神的无私奉献精神值得我们每一个业界人士学习,向bingo致敬 ...

随机推荐

  1. eclipse中启动调试maven构建的javaweb项目

    RT,遇到这个问题,我的第一反应就是找教程,今天折腾了一天,书也看了,博客也看了,maven视频都看了,有种做不出来的感觉了,带着前几个小时看的相关的资料和经验,就自己去摸索了. 直接开始说我是怎么做 ...

  2. NodeJS 爬虫爬取LOL英雄联盟的英雄信息,批量下载英雄壁纸

    工欲善其事,必先利其器,会用各种模块非常重要. 1.模块使用 (1)superagent:Nodejs中的http请求库(每个语言都有无数个,java的okhttp,OC的afnetworking) ...

  3. java 枚举的简单应用。

    枚举,就是保存着原始的<key,value> 在代码中会经常用到.为了不坑自己,记录一下笔记 package com.fortunedr.common.constant; public e ...

  4. mybatis.net 多表联查

    mybatis.net针对多表联查,其实不用讲联查出的所有的列全部做一个新的resultMap,我们完全可以通过集成关系来实现,真是上一次说的懒加载,在一定程度上可以提高其性能,但这并不是说懒加载性能 ...

  5. bootstrap学习笔记--bootstrap概览

    HTML 5 文档类型(Doctype) Bootstrap 使用了一些 HTML5 元素和 CSS 属性.为了让这些正常工作,您需要使用 HTML5 文档类型(Doctype). 因此,请在使用 B ...

  6. jQuery选择器总结

    jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法   $("#myELement")    选择id值等于myElement的元素,id值不能重复在文档中 ...

  7. 【先定一个小目标】Redis 安装成windows服务-开机自启

    1.第一步安装成windows服务的,开机自启动 redis-server --service-install redis.windows.conf 2.启动\关闭 redis-server --se ...

  8. php扩展memcached和memcache的安装配置方法:转载

    本文转载:http://www.jb51.net/article/56999.htm php连接memcached缓存服务器的客户端有两个,一个是memcache是比较底层的开发库,memcached ...

  9. xml中处理大于小与符号

    原符号   <    <=    >    >=     &      '       " 替换符号 < <= > >= & ...

  10. Java的输入方式总结

    写java代码的时候,经常会遇到的情况就是输入输错了怎么办?大部分想的是用一个if判断,但是用if判断的话我们就无法让用户再次输入,因为if语句程序执行后就会直接退出程序.因此要想实现循环就要用whi ...