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;
	}


相关文章推荐

jeecms修改后台路径

修改jeecms-V6版本后台登陆路径

转jeecms中一些分析

 1. 拦截器: 后台管理拦截器:com.jeecms.cms.web.AdminContextInterceptor 前台拦截器:FrontContextInterceptor 都会把site...

jeecms导入myeclipse

jeecms导入myeclipse 1。新建web项目,选择源码所在目录,同时注意WebContent对应myeclipse里面的WebRoot目录,所以需要将WebRoot改为WebContent...

jeecms后台配置表现层参数的位置和文件名------config/jeecms-server-admin.xml

jeecms后台配置表现层参数的位置和文件名-

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

一、项目启动,初始化配置文件: 二、浏览器输入http://localhost:8070/jeeCms/:...

jeeCmsV7-src 源码解析之八(后台导入模板与资源文件)

一、导入模板 1.模板指的是项目模板包,即页面压缩包。层级结构为:压缩包名为default_my.zip(必须是zip格式)----->项目名称为default_my(和压缩包名一致)------>...

通过在拦截器配置request对象,在前台页面显示返回的消息(1)

通过在拦截器里添加request的Attribute属性,然后在前台分别使用struts2标签和request.getAttribute()方法接收,拦截器代码如下: /** * 用户登录认证拦截...

前台页面的数据传输到后台接收出现乱码问题的解决方法

js中编码的方式有三种 escape() 方法 escape方法以Unicode格式返回一个包含传入参数内容的string类型的值。 Escape方法会将传入参数中所有的空格、标点符号、重音字符以...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jeeCmsV7-src 源码解析之七(前台页面初始化是request赋值)
举报原因:
原因补充:

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