JEECMS v3.0.1 beta版发布,采用的是采用hibernate3+spring mvc+spring2+freemarker主流技术架构.
首先对web.xml分析一下
这里面用的是springmvc的配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>JeeCms3</display-name>
<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>
<filter>
<filter-name>processTime</filter-name>
<filter-class>com.jeecms.common.web.ProcessTimeFilter</filter-class>
</filter>
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter>
<filter-name>osivFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<!--
<filter>
<filter-name>urlrewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>confReloadCheckInterval</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>logLevel</param-name>
<param-value>sysout:DEBUG</param-value>
</init-param>
</filter>
-->
<filter-mapping>
<filter-name>processTime</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>osivFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>processTime</filter-name>
<url-pattern>*.jspx</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.jspx</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>osivFilter</filter-name>
<url-pattern>*.jspx</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>processTime</filter-name>
<url-pattern>*.jhtml</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.jhtml</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>osivFilter</filter-name>
<url-pattern>*.jhtml</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>processTime</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>osivFilter</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>processTime</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>osivFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>JeeCmsAdmin</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-admin.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</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>
<servlet-name>Jcaptcha</servlet-name>
<servlet-class>com.jeecms.common.captcha.JcaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Jcaptcha</servlet-name>
<url-pattern>/captcha.svl</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>DbFile</servlet-name>
<servlet-class>com.jeecms.core.action.front.DbFileServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JeeCmsAdmin</servlet-name>
<url-pattern>/jeeadmin/jeecms/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JeeCmsFront</servlet-name>
<url-pattern>*.jhtml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JeeCmsFront</servlet-name>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JeeCmsFront</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JeeCmsFront</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DbFile</servlet-name>
<url-pattern>/dbfile.svl</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<session-config>
<session-timeout>20</session-timeout>
</session-config>
<!--
<jsp-config>
<taglib>
<taglib-uri>http://displaytag.sf.net/el</taglib-uri>
<taglib-location>/WEB-INF/tld/displaytag-el.tld</taglib-location>
</taglib>
</jsp-config>
-->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jhtml</welcome-file>
</welcome-file-list>
<error-page>
<error-code>403</error-code>
<location>/WEB-INF/error/403.jsp</location>
</error-page>
<mime-mapping>
<extension>rar</extension>
<mime-type>application/zip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>doc</extension>
<mime-type>application/zip</mime-type>
</mime-mapping>
<!--
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/WEB-INF/error/uncaughtException.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/WEB-INF/error/500.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/error/404.jsp</location>
</error-page>
-->
</web-app>
分析jeecms filter配置
几个公用的filter
<filter>
<filter-name>processTime</filter-name>
<filter-class>com.jeecms.common.web.ProcessTimeFilter</filter-class>
</filter>
可以记录处理时间的在外面统计加,感觉比原来在程序内部加的好.包括整个处理流程中的时间都会记录
processTime被配置在过滤器的最前端
下面是编码encoding过滤器
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
默认字符编码是utf-8
下面是编码osivFilter过滤器
<filter>
<filter-name>osivFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
一个Request的处理周期内,Session都是Open
对这几个filter
处理不同的扩展名的请求:*.do,*.jspx,*.jhtml,*.htm,*.jsp
processTime
à
?
encoding
à
?
osivFilter
后台处理过滤器
JeeCmsAdmin
/jeeadmin/jeecms/*
Jeecms路径前台采用的是二级路径,不属于后台的请求被前台的filter拦截
JeeCmsFront
*.do,*.jspx,*.jhtml,*.htm,*.jsp
验证码
Jcaptcha
/captcha.svl
DbFile
/dbfile.svl
在com.jeecms.cms.action.front. DynamicPageAct中预处理这些请求如/news/index.jhtml
/**
* <pre>
* 映射所有路径到 这个方法如 /news/index.jhtml
</pre>
*/
@RequestMapping(value={"/**/*.*"}, method={org.springframework.web.bind.annotation.RequestMethod.GET})
public String dynamic(HttpServletRequest request, HttpServletResponse response, ModelMap model)
{
int pageNo = URLHelper.getPageNo(request);
String[] params = URLHelper.getParams(request);
URLHelper.PageInfo info = URLHelper.getPageInfo(request);
String[] paths = URLHelper.getPaths(request);
int len = paths.length;
if (len == 1)
{
return channel(paths[0], pageNo, params, info, request, response,
model);
}if (len == 2) {
if (paths[1].equals("index"))
{
return channel(paths[0], pageNo, params, info, request,
response, model);
}
try
{
Integer id = Integer.valueOf(Integer.parseInt(paths[1]));
return content(id, pageNo, params, info, request, response,
model);
} catch (NumberFormatException e) {
log.debug("Content id must String: {}", paths[1]);
return FrontUtils.pageNotFound(request, response, model);
}
}
log.debug("Illegal path length: {}, paths: {}", Integer.valueOf(len), paths);
return FrontUtils.pageNotFound(request, response, model);
}
DynamicPageAct中将处理首页请求”/”和”/index.jhtml”
@RequestMapping(value={"/"}, method={org.springframework.web.bind.annotation.RequestMethod.GET})
public String index(HttpServletRequest request, ModelMap model)
{
CmsSite site = CmsUtils.getSite(request);
FrontUtils.frontData(request, model, site);
return FrontUtils.getTplPath(request, site.getSolutionPath(),
"index", "tpl.index");
}
@RequestMapping(value={"/index.jhtml"}, method={org.springframework.web.bind.annotation.RequestMethod.GET})
public String indexForWeblogic(HttpServletRequest request, ModelMap model)
{
return index(request, model);
}
例如运行访问首页运行结果
/WEB-INF/t/cms/www/red
CmsSite.java
public String getSolutionPath()
{
return "/WEB-INF/t/cms/" + getPath() + "/" + getTplSolution();
}
首页处理方法会返回到对应的视图:下面的首页地址
/WEB-INF/t/cms/www/red/index/首页.html
DynamicPageAct.java
@RequestMapping(value={"/"}, method={org.springframework.web.bind.annotation.RequestMethod.GET})
public String index(HttpServletRequest request, ModelMap model)
{
CmsSite site = CmsUtils.getSite(request);
FrontUtils.frontData(request, model, site);
return FrontUtils.getTplPath(request, site.getSolutionPath(),
"index", "tpl.index");
}
分享到:
相关推荐
JEECMS v3.0.1 beta版 源代码 我将发布版反编译的版本,主要是业务相关部分 core common部分没有反编译,如果第一次运行,需要手动运行install.html,并将web.xml中的替换掉 采用hibernate3+spring mvc+spring2+...
JEECMS V3.0.1 beta版完整更新列表: 1、新增会员中心模块; 3、页头会员登录改为CSI方式调用,不再受页面静态化影响; 4、修正前台投票报错问题; 5、修正后台投票项无法删除的问题; 6、修正后台栏目“是否允许顶...
JEECMS v3.0.1 beta 源代码(反编译)
JEECMS v2.2 beta版对以下方面进行了更新: ·降低运行环境要求为jdk1.5、tomcat5.5、mysql5.0 ·增加了会员系统,为会员特设了“会员中心”控制模块 ·增加了文章浏览权限设置功能 ·修正了在linux平台下的系统...
jeecms v9.3 正式版 源码包 更新日志 1、栏目添加选择模型模板只选择一个报错 2、内容复用待审核查询报错(开源版) 3、根栏目添加内容报错 4、后台页面样式调整 5、后台编辑器分页问题 7、数据统计今日...
NULL 博文链接:https://jbutton.iteye.com/blog/841475
JEECMS v2.4.1 beta版主要修正了JEECMS v2.4.0 beta版中存在的问题,在功能方面应用户的要求加入了专题系统、下载系统、全文检索等。在技术主要对数据库连接池组件进行的更换,采用了c3p0连接池组件,有效解决了由于...
JEECMS是一款可以根据行政级别建立大型门户网站群的CMS,通过对站群权限的控制,可以建立中央部委、省、市、县、街道(镇)或总公司、分公司等... jeecms X1.0.1 更新日志:1、源码包和安装包瘦身2、修复了一些已知BUG
JEECMS v3.0.0 beta 源代码(反编译)
五、面向未来的过渡,JEECMS v2.3.2 Final版是JEECMS面世以来发布的第一个正式版本,具有更大的灵活性和稳定性;-一、系统内核完全开源,为用户提供透明的管理平台,为java初学者提供良好的学习平台; 二、核心模板...
详细介绍 – [ jeecms X1.4.1 正式版 源码包 ] jeecms X1.4.1 正式版 源码包 更新日志 1、修复了一些已知问题 JEECMS简介 JEECMS 是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。...
前几年的JavaJsp应用源码Demo,主要面向的是学生毕业设计学习。
jeecms v9.3 正式版 安装包 更新日志 1、栏目添加选择模型模板只选择一个报错 2、内容复用待审核查询报错(开源版) 3、根栏目添加内容报错 4、后台页面样式调整 5、后台编辑器分页问题 7、数据统计今日...
jeecms X1.11.0 正式版源码包
JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 · 采用SpringMVC3+Spring3+Hibernate3+...
jeecms v2012版是一款集新闻管理、图库管理、视频管理、下载系统、作品管理、产品发布及留言板于一体的综合性CMS系统。从2012版起,jeecms将更注重用户体验、系统性能和实际应用的研发,让jeecms的适用范围更广、...
源码,压缩包解压密码:www.cqlsoft.com
JEECMSv8.1是一款支持微信小程序、栏目模型、内容模型交叉自定义、以及具备支付和财务结算的内容电商为一体内容管理系统:通过后台的简单设置即可自定义出集新闻管理、图库管理、视频...doc/jeecms模板置标使用手册.doc
JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 采用hibernate3+struts2+spring2+freemarker...
JEECMS是一款可以根据行政级别建立大型门户网站群的CMS,通过对站群权限的控制,可以建立中央部委、