• Jeecms网站直接访问html静态页面


       jeecms网站维护,遇到了直接通过链接的方式访问静态页面,jeecms官网也做了详细的解答,但是没有得到满意的结果。但是通过自己的深入研究以及别人的帮助,发现了一个很好的解决方法。

            首先说明一下jeecms网站的访问特点,例如这个链接:http://127.0.0.1:8080/news/3567.jhtml

            前面为ip地址:127.0.0.1

            端口号:8080

            栏目访问路径:news

            文章id:3567

            访问后缀:.jhtml

             jeecms项目的web.xml对访问的形式做了过滤,后台有3个过滤器,如下

    <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>
              这里分别为时间的处理,字符编码的处理以及hibernate的session的处理,这些跟访问的链接没有什么关系。
              访问静态的html页面,在web.xml中可以找到对应servlet的代码,如下

    <servlet-mapping>
    <servlet-name>JeeCmsFront</servlet-name>
    <url-pattern>*.htm</url-pattern>
    </servlet-mapping>
             这样可以找到对应的文件,其实就是jeecms-servlet-front.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</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
    </servlet>
             在jeecms-servlet-front.xml中没有找到对前台访问链接的过滤对应的类,但是在jeecms-servlet-front.xml中可以找到这个文件,其实就是jeecms-servlet-front-action.xml文件,这个文件中包含了很多的控制层代码,重要的代码如下:
    <bean id="dynamicAct" class="com.jeecms.cms.action.front.DynamicPageAct"/>

              前面说了很多,重要的就是在DynamicPageAct类里面,前台访问的链接主要通过DynamicPageAct里面的dynamic处理,代码如下
    /**
    * 动态页入口
    */
    @RequestMapping(value = "/**/*.*", method = RequestMethod.GET)
    public String dynamic(HttpServletRequest request,
    HttpServletResponse response, ModelMap model) {
    // 尽量不要携带太多参数,多使用标签获取数据。
    // 目前已知的需要携带翻页信息。
    // 获得页号和翻页信息吧。
    int pageNo = URLHelper.getPageNo(request);
    String[] params = URLHelper.getParams(request);
    PageInfo info = URLHelper.getPageInfo(request);
    String[] paths = URLHelper.getPaths(request);
    int len = paths.length;
    if (len == 1) {
    //连接后的第一个参数
    if(paths[0].equals("xxx")){
    //返回静态页的文件位置
    return "xxx.html";
    }
    // 单页
    return channel(paths[0], pageNo, params, info, request, response,
    model);
    } else if (len == 2) {
    if (paths[1].equals(INDEX)) {
    // 栏目页
    return channel(paths[0], pageNo, params, info, request,
    response, model);
    } else {
    // 内容页
    try {
    Integer id = 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);
    }
    }
    } else {
    log.debug("Illegal path length: {}, paths: {}", len, paths);
    return FrontUtils.pageNotFound(request, response, model);
    }
    }
             这样就可以访问jeecms项目下的静态页了,如上代码可以通过http://127.0.0.1:8080/xxx.html访问到项目WebRoot下的xxx.html页面。访问其它的页面,可以修改一下上述代码。
    还有另一种方式:在spring-mvc的配置文件中加入以下代码可以实现上述功能
    <!-- 将springmvc不能处理的请求交给tomcat 处理-->
    <mvc:default-servlet-handler/>
    <mvc:annotation-driven/>


    ---------------------
    作者:山边的微风
    来源:CSDN
    原文:https://blog.csdn.net/u012606318/article/details/53394764
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    NIS详解
    Linux的硬链接和软链接有何区别?
    使用sed和cut将进程的pid过滤出来
    sticky(粘附位)的含义
    使用ulimit来产生core dump文件
    Linux常用shell脚本
    LFS5.0安装完成心得
    sshd + xinetd 限制IP登录
    Linux磁盘限额配置(Ext3)
    LFS安装手记
  • 原文地址:https://www.cnblogs.com/Jeely/p/11195586.html
Copyright © 2020-2023  润新知