zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

静态HTML网站 访问 页面 直接 jeecms
2023-09-27 14:23:17 时间

   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
版权声明:本文为博主原创文章,转载请附上博文链接!