jeeCmsV7-src 源码解析之七(前台页面初始化是request赋值)

原创 2016年08月29日 18:04:08

问题:当输入http://localhost:8070/jeeCms/时,通过拦截器“/”后台时,request 中包含了很多值是哪里来的?

回答:

 1、加载web.xml

<!-- 前台控制 --> 
	<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
				/WEB-INF/config/plug/**/*-servlet-front-action.xml
			</param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
	</servlet>


2、其初使化方法中 进入jeecms-servlet-front.xml,初使化:

<bean id="frontContextInterceptor" class="com.jeecms.cms.web.FrontContextInterceptor"/>

3. 为reques和中放入值

/**
 * CMS上下文信息拦截器
 * 
 * 包括登录信息、权限信息、站点信息
 */
public class FrontContextInterceptor extends HandlerInterceptorAdapter {
	public static final String SITE_COOKIE = "_site_id_cookie";
	@Override
	public boolean preHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler)
			throws ServletException {
		CmsSite site = null;
		List<CmsSite> list = cmsSiteMng.getListFromCache();
		int size = list.size();
		if (size == 0) {
			throw new RuntimeException("no site record in database!");
		} else if (size == 1) {
			site = list.get(0);
		} else {
			String server = request.getServerName();
			String alias, redirect;
			for (CmsSite s : list) {
				// 检查域名
				if (s.getDomain().equals(server)) {
					site = s;
					break;
				}
				// 检查域名别名
				alias = s.getDomainAlias();
				if (!StringUtils.isBlank(alias)) {
					for (String a : StringUtils.split(alias, ',')) {
						if (a.equals(server)) {
							site = s;
							break;
						}
					}
				}
				// 检查重定向
				redirect = s.getDomainRedirect();
				if (!StringUtils.isBlank(redirect)) {
					for (String r : StringUtils.split(redirect, ',')) {
						if (r.equals(server)) {
							try {
								response.sendRedirect(s.getUrl());
							} catch (IOException e) {
								throw new RuntimeException(e);
							}
							return false;
						}
					}
				}
			}
			if (site == null) {
				throw new SiteNotFoundException(server);
			}
		}
		
		<span style="background-color: rgb(204, 153, 51);">CmsUtils.setSite(request, site);</span>
		CmsThreadVariable.setSite(site);
		Subject subject = SecurityUtils.getSubject();
		if (subject.isAuthenticated()|| subject.isRemembered()) {
			String username =  (String) subject.getPrincipal();
			CmsUser user = cmsUserMng.findByUsername(username);
			CmsUtils.setUser(request, user);
			// Site加入线程变量
			CmsThreadVariable.setUser(user);
		}
		createJsessionId(request, response, site);
		return true;
	}


jeeCmsV7-src 源码解析之六(前台页面初始化)

一、项目启动,初始化配置文件: 二、浏览器输入http://localhost:8070/jeeCms/:...
  • nipanlong001
  • nipanlong001
  • 2016年08月26日 14:17
  • 524

jeeCmsV7-src 源码解析之五(Spring + FreeMarker的集成)

auto_detect 5 UTF-8 UTF-8 zh_CN true,false yyyy-MM-dd HH:mm:ss yyyy-MM-d...
  • nipanlong001
  • nipanlong001
  • 2016年08月25日 16:30
  • 355

jeeCmsV7-src 源码解析之四(cache-context.xml)

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schem...
  • nipanlong001
  • nipanlong001
  • 2016年08月25日 11:17
  • 366

jeeCmsV7-src 源码解析之二(application-context.xml)

  • nipanlong001
  • nipanlong001
  • 2016年08月25日 11:15
  • 411

jeeCmsV7-src 源码解析之九(jeeCms整合webservice)

第一步:在jeeCms .添加jar包 第二步:增加webservice相关配置。 web.xml contextConfigLocation /WEB-IN...
  • nipanlong001
  • nipanlong001
  • 2016年09月06日 15:37
  • 1064

Servlet源码解析:Session、Request以及Response

首先我们来看看ServletRequest的源码: public interface ServletRequest { //获取request的属性(注意不是请求参数) publi...
  • flashflight
  • flashflight
  • 2015年04月20日 02:42
  • 2213

jeeCmsV7-src 源码解析之三(ehcache-hibernate.xml)

磁盘存储:将缓存中暂时不使用的对象,转移到硬盘,类似于Windows系统的虚拟内存         path:指定在硬盘上存储对象的路径      --> -->         defaultCa...
  • nipanlong001
  • nipanlong001
  • 2016年08月25日 11:16
  • 425

Spring初始化过程源码分析(1)

本文主要详细分析Spring执行过程的源码分析,目的是理解Spring具体是如何工作的。...
  • cnctcom
  • cnctcom
  • 2017年01月19日 12:23
  • 279

aiohttp 源码解析之 request 的处理过程

【转自 太阳尚远的博客:http://blog.yeqianfeng.me/2016/04/01/python-yield-expression/】 使用过 python 的 aiohttp 第三方...
  • gettogetto
  • gettogetto
  • 2017年06月11日 14:36
  • 151

(四)Tomcat源码解析 - 一次request与response的过程

Tomcat最本质就是一个能运行JSP/Servlet的Web服务器 ,如果真正的想了解tomcat它的运转机制,最典型的应用就是用户通过浏览器访问服务器,Tomcat接收到请求后转发给Servlet...
  • leicool_518
  • leicool_518
  • 2015年02月28日 11:46
  • 671
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jeeCmsV7-src 源码解析之七(前台页面初始化是request赋值)
举报原因:
原因补充:

(最多只允许输入30个字)