网站有一些不经常变动的页面例如文章之类的,为了减小应用服务器压力,直接生成html静态页访问
/**
* Copyright © 2015-2050 谦亨科技 All rights reserved.
*/
package com.qhwl.common.filter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.LoggerFactory;
import com.opensymphony.sitemesh.webapp.SiteMeshFilter;
import com.qhwl.common.config.Global;
import com.qhwl.common.utils.FileUtils;
import com.qhwl.common.web.Servlets;
/**
* 页面过滤器
*
* @author ztj
* @version 2017-8-5
*/
public class PageStaticFilter implements Filter {
/** * start file filecapturefilter.java */
private String protdirpath;
public void init(FilterConfig filterconfig) throws ServletException {
protdirpath = filterconfig.getServletContext().getRealPath("/");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// 获得在下面代码中要用的request,response,session对象
HttpServletRequest servletRequest = (HttpServletRequest) request;
boolean flag = Servlets.isAjaxRequest2(servletRequest);
// 获得用户请求的URI
String path = servletRequest.getRequestURI() + "?" + servletRequest.getQueryString();
String filename = protdirpath;
if (path.indexOf(".") > 0) {
filename = path.substring(path.lastIndexOf("/") + 1, path.indexOf(".")) + ".html";
}
response.setContentLength(-1);
PageStaticResponse responsewrapper = new PageStaticResponse((HttpServletResponse) response);
chain.doFilter(request, responsewrapper);
if (flag) {
// chain.doFilter(request, responsewrapper);
}else{
LoggerFactory.getLogger(getClass())
.debug("+++++++++++++++++++++++chain.doFilter(request, response);+++++++++++++++++++++++++++");
chain.doFilter(request, response);
}
String html = responsewrapper.getResult();
String realPath = Global.getUserfilesBaseDir() + Global.USERFILES_BASE_URL + "/" + filename;
FileUtils.createFile(FileUtils.path(realPath));
FileUtils.writeToFile(FileUtils.path(realPath), html, false);
}
public void destroy() {
}
}
/** * end file filecapturefilter.java */