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 v9.3 正式版 源码包 更新日志 1、栏目添加选择模型模板只选择一个报错 2、内容复用待审核查询报错(开源版) 3、根栏目添加内容报错 4、后台页面样式调整 5、后台编辑器分页问题 7、数据统计今日...
JEECMS V3.0.1 beta版完整更新列表: 1、新增会员中心模块; 3、页头会员登录改为CSI方式调用,不再受页面静态化影响; 4、修正前台投票报错问题; 5、修正后台投票项无法删除的问题; 6、修正后台栏目“是否允许顶...
Jeecms 3.0.1 Beta 是一个开源的Java内容管理系统,它的源码被反编译后提供了更深入的学习和定制机会。源码分析对于开发者来说是宝贵的资源,可以帮助理解系统的架构和工作原理,从而进行二次开发或者优化。在这个...
JEECMS v2.2 beta版对以下方面进行了更新: ·降低运行环境要求为jdk1.5、tomcat5.5、mysql5.0 ·增加了会员系统,为会员特设了“会员中心”控制模块 ·增加了文章浏览权限设置功能 ·修正了在linux平台下的系统...
【JEECMS v3.0.0 beta 源代码(反编译)_1】这一资源主要提供了JEECMS的v3.0.1 beta版本的源代码,经过了反编译处理。JEECMS是一款基于Java企业级平台开发的内容管理系统,广泛应用于企业网站、新闻门户以及各种信息...
对于学习者来说,通过研究JEECMS v3.0 beta的源码,可以深入了解Java Web开发的实践,包括MVC(Model-View-Controller)架构模式、Servlet和JSP的协同工作、以及如何在实际项目中应用Java EE(企业版)规范。...
JEECMS v2.4.1 beta版主要修正了JEECMS v2.4.0 beta版中存在的问题,在功能方面应用户的要求加入了专题系统、下载系统、全文检索等。在技术主要对数据库连接池组件进行的更换,采用了c3p0连接池组件,有效解决了由于...
JEECMS是一款可以根据行政级别建立大型门户网站群的CMS,通过对站群权限的控制,可以建立中央部委、省、市、县、街道(镇)或总公司、分公司等... jeecms X1.0.1 更新日志:1、源码包和安装包瘦身2、修复了一些已知BUG
《Jeecms V8.1 正式版源码包详解》 Jeecms V8.1 是一款专为构建大型门户网站群而设计的内容管理系统(CMS)。它以其强大的站群管理能力和灵活的权限控制机制,成为了众多企业和政府机构构建中央部委、地市级乃至区...
JEECMSv8.1是一款支持微信小程序、栏目模型、内容模型交叉自定义、以及具备支付和财务结算的内容电商为一体内容管理系统:通过后台的简单设置即可自定义出集新闻管理、图库管理、视频...doc/jeecms模板置标使用手册.doc
jeecms v9.3 正式版 安装包 更新日志 1、栏目添加选择模型模板只选择一个报错 2、内容复用待审核查询报错(开源版) 3、根栏目添加内容报错 4、后台页面样式调整 5、后台编辑器分页问题 7、数据统计今日...
本文将详细介绍JEECMS v1.1 Beta版本的核心特性、技术架构以及其在毕业设计和学习中的价值。 首先,JEECMS v1.1 Beta是一个源代码开放的CMS系统,这意味着开发者可以深入理解系统的内部机制,对其进行定制和优化以...
JEECMS v3.0.0 beta是一个测试版,意味着可能存在一些未解决的问题和待优化的地方。通过源代码,开发者可以跟踪版本变更,了解新功能和修复的bug。 总结,JEECMS v3.0.0 beta的反编译源代码为开发者提供了深入了解...
【CMS程序】JEECMS v3.0 beta是一款基于Java EE技术栈的开源内容管理系统,专为构建企业级网站提供高效、稳定且可扩展的解决方案。这个版本是beta测试版,意味着它可能包含一些未公开的功能,同时也可能在功能完善和...
五、面向未来的过渡,JEECMS v2.3.2 Final版是JEECMS面世以来发布的第一个正式版本,具有更大的灵活性和稳定性;-一、系统内核完全开源,为用户提供透明的管理平台,为java初学者提供良好的学习平台; 二、核心模板...
**JEECMS V8.0 源码详解** JEECMS V8.0 是一款基于Java技术构建的内容管理系统,其核心目标是为企业和个人提供一个高效、易用且具有高度可扩展性的平台。该系统以其全开源的特性,赢得了开发者们的青睐,允许用户在...
详细介绍 – [ jeecms X1.4.1 正式版 源码包 ] jeecms X1.4.1 正式版 源码包 更新日志 1、修复了一些已知问题 JEECMS简介 JEECMS 是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。...
【Jeecms V8.0 正式版 源码包】是一个针对大型门户网站群构建的CMS(内容管理系统)解决方案。这款系统以其强大的站群管理功能和灵活的权限控制系统,特别适合于中央部委级别的组织或者需要搭建多层级、多站点架构的...
在本文中,我们将对 JEECMS 2.0 版本的源码进行阅读和分析,了解其核心组件、技术框架和实现机制。 一、JEECMS 概述 JEECMS 是一个基于 Java 的内容管理系统,提供了强大的内容管理功能、灵活的模板系统和扩展性强...