`
osacar
  • 浏览: 209506 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JEECMS v3.0.1 beta版源码分析

阅读更多
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");
   }


分享到:
评论
2 楼 osacar 2012-09-19  
关于jeecms的?
1 楼 ie0ie0ie 2012-07-02  
你好我有个问题想请教你,请问你有QQ号么?

相关推荐

    JEECMS v3.0.1 beta 源代码(反编译) java spring freemaker springmvc

    JEECMS v3.0.1 beta版 源代码 我将发布版反编译的版本,主要是业务相关部分 core common部分没有反编译,如果第一次运行,需要手动运行install.html,并将web.xml中的替换掉 采用hibernate3+spring mvc+spring2+...

    jeecms v3.0.1 开源jsp网站管理系统.rar

    JEECMS V3.0.1 beta版完整更新列表: 1、新增会员中心模块; 3、页头会员登录改为CSI方式调用,不再受页面静态化影响; 4、修正前台投票报错问题; 5、修正后台投票项无法删除的问题; 6、修正后台栏目“是否允许顶...

    JEECMS v3.0.0 beta 源代码(反编译)_1

    JEECMS v3.0.1 beta 源代码(反编译)

    JEECMS v2.2 beta 贺岁版

    JEECMS v2.2 beta版对以下方面进行了更新: ·降低运行环境要求为jdk1.5、tomcat5.5、mysql5.0 ·增加了会员系统,为会员特设了“会员中心”控制模块 ·增加了文章浏览权限设置功能 ·修正了在linux平台下的系统...

    jeecms v9.3 正式版 源码包.zip

    jeecms v9.3 正式版 源码包 更新日志 1、栏目添加选择模型模板只选择一个报错 2、内容复用待审核查询报错(开源版) 3、根栏目添加内容报错 4、后台页面样式调整 5、后台编辑器分页问题 7、数据统计今日...

    jeecms3.0.1beta 源码(反编译) 带common包

    NULL 博文链接:https://jbutton.iteye.com/blog/841475

    JEECMS v2.4.1 beta 系统程序.rar

    JEECMS v2.4.1 beta版主要修正了JEECMS v2.4.0 beta版中存在的问题,在功能方面应用户的要求加入了专题系统、下载系统、全文检索等。在技术主要对数据库连接池组件进行的更换,采用了c3p0连接池组件,有效解决了由于...

    jeecms X1.0.1 正式版 源码包

    JEECMS是一款可以根据行政级别建立大型门户网站群的CMS,通过对站群权限的控制,可以建立中央部委、省、市、县、街道(镇)或总公司、分公司等... jeecms X1.0.1 更新日志:1、源码包和安装包瘦身2、修复了一些已知BUG

    JEECMS v3.0.0 beta 源代码(反编译)_2

    JEECMS v3.0.0 beta 源代码(反编译)

    JEECMS v2.3.2 Final版是JEECMS面世以来发布的第一个正式版是JEECMS面世以来发布的第一个正式

    五、面向未来的过渡,JEECMS v2.3.2 Final版是JEECMS面世以来发布的第一个正式版本,具有更大的灵活性和稳定性;-一、系统内核完全开源,为用户提供透明的管理平台,为java初学者提供良好的学习平台; 二、核心模板...

    jeecms X1.4.1 正式版 源码包

    详细介绍 – [ jeecms X1.4.1 正式版 源码包 ] jeecms X1.4.1 正式版 源码包 更新日志 1、修复了一些已知问题 JEECMS简介 JEECMS 是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。...

    [CMS程序]JEECMS v3.0 beta.zip

    前几年的JavaJsp应用源码Demo,主要面向的是学生毕业设计学习。

    jeecms v9.3 正式版 安装包.zip

    jeecms v9.3 正式版 安装包 更新日志 1、栏目添加选择模型模板只选择一个报错 2、内容复用待审核查询报错(开源版) 3、根栏目添加内容报错 4、后台页面样式调整 5、后台编辑器分页问题 7、数据统计今日...

    jeecms X1.11.0 正式版源码包

    jeecms X1.11.0 正式版源码包

    JEECMS v3.1.0 beta

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 · 采用SpringMVC3+Spring3+Hibernate3+...

    jeecms v2012版

    jeecms v2012版是一款集新闻管理、图库管理、视频管理、下载系统、作品管理、产品发布及留言板于一体的综合性CMS系统。从2012版起,jeecms将更注重用户体验、系统性能和实际应用的研发,让jeecms的适用范围更广、...

    jsp网站管理系统JEECMS v9.3 正式版 源码包 -源码.zip

    源码,压缩包解压密码:www.cqlsoft.com

    jeecms v8.1 源码

    JEECMSv8.1是一款支持微信小程序、栏目模型、内容模型交叉自定义、以及具备支付和财务结算的内容电商为一体内容管理系统:通过后台的简单设置即可自定义出集新闻管理、图库管理、视频...doc/jeecms模板置标使用手册.doc

    JEECMS v2.3.2 正式版用源码

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 采用hibernate3+struts2+spring2+freemarker...

    jeecms v8.0 正式版 源码包

    JEECMS是一款可以根据行政级别建立大型门户网站群的CMS,通过对站群权限的控制,可以建立中央部委、

Global site tag (gtag.js) - Google Analytics