美文网首页Java 杂谈
Filter实现页面静态化之生成静态html

Filter实现页面静态化之生成静态html

作者: 睦邻量 | 来源:发表于2018-03-18 00:48 被阅读0次

package cn.itcast.book.web.filter;

import java.io.File;

import java.io.IOException;

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;

public class StaticFilter implements Filter {

private FilterConfig config;

public void destroy() {}

public void init(FilterConfig fConfig) throws ServletException {

this.config = fConfig;

}

public void doFilter(ServletRequest request,

ServletResponse response, FilterChain chain)

throws IOException, ServletException {

HttpServletRequest req = (HttpServletRequest) request;

HttpServletResponse res = (HttpServletResponse) response;

/*

 * 1. 第一次访问时,查找请求对应的html页面是否存在,如果存在重定向到html

 * 2. 如果不存在,放行!把servlet访问数据库后,输出给客户端的数据保存到一个html文件中

 *   再重定向到html

 */

/*

 * 一、获取category参数!

 * category有四种可能:

 * * null --> null.html

 * * 1 --> 1.html

 * * 2 --> 2.html

 * * 3 --> 3.html

 *

 * html页面的保存路径, htmls目录下

 *

 * 判断对应的html文件是否存在,如果存在,直接重定向!

 */

String category = request.getParameter("category");

String htmlPage = category + ".html";//得到对应的文件名称

String htmlPath = config.getServletContext().getRealPath("/htmls");//得到文件的存放目录

File destFile = new File(htmlPath, htmlPage);

if(destFile.exists()) {//如果文件存在

// 重定向到这个文件

res.sendRedirect(req.getContextPath() + "/htmls/" + htmlPage);

return;

}

/*

 * 二、如果html文件不存在,我们要生成html

 * 1. 放行,show.jsp会做出很多的输出,我们要让它别再输出给客户端,而是输出到我们指定的一个html文件中

 * 完成:

 * * 调包response,让它的getWriter()与一个html文件绑定,那么show.jsp的输出就到了html文件中

 */

StaticResponse sr = new StaticResponse(res, destFile.getAbsolutePath());

chain.doFilter(request, sr);//放行,即生成了html文件

// 这时页面已经存在,重定向到html文件

res.sendRedirect(req.getContextPath() + "/htmls/" + htmlPage);

}

}

/********************************************************************************************/

package cn.itcast.book.web.filter;

import java.io.FileNotFoundException;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpServletResponseWrapper;

public class StaticResponse extends HttpServletResponseWrapper {

private PrintWriter pw;

/**

 * String path:html文件路径!

 * @param response

 * @param path

 * @throws UnsupportedEncodingException

 * @throws FileNotFoundException

 */

public StaticResponse(HttpServletResponse response, String path)

throws FileNotFoundException, UnsupportedEncodingException {

super(response);

// 创建一个与html文件路径在一起的流对象

pw = new PrintWriter(path, "utf-8");

}

public PrintWriter getWriter() {

// 返回一个与html绑定在一起的printWriter对象

// jsp会使用它进行输出,这样数据都输出到html文件了。

return pw;

}

}

相关文章

  • Filter实现页面静态化之生成静态html

    package cn.itcast.book.web.filter; import java.io.File; i...

  • 听欢哥讲PHP页面静态化

    页面静态化 1、什么是PHP静态化 PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在用户面前。 ...

  • 大数据并发处理解决方案:

    1、HTML静态化 效率最高、消耗最小的就是纯静态化的html页面,所以尽可能使网站上的页面采用静态页面来实现,这...

  • PHP中9大缓存技术总结

    1、全页面静态化缓存 也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解...

  • PHP中9大缓存技术总结

    1、全页面静态化缓存 也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解...

  • 静态模板freeMarker页面静态化

    如果采用cms系统就可以实现由cms自动化对页面进行页面进行更新,自动采用静态化的技术就是生成html页面,快速上...

  • 创建个人静态博客

    思路: 本地使用Hexo生成静态页面(html) 上传到WEB服务器 1、 安装Hexo 及生成静态页面 安装No...

  • HTML和CSS基础讲解

    1 HTML/CSS 1.1 网站生成HTML静态页面的好处 1.1.1 网站的访问速度更快 静态页面可以降低数据...

  • 全局静态画和动态静态化

    一:全局静态化全局静态化是将一个页面生成静态文件存在某个文件中常用的方法有:1.当前时间与生成的静态文件时间差2....

  • HTML页面静态化

    HTML页面静态化 随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一...

网友评论

    本文标题:Filter实现页面静态化之生成静态html

    本文链接:https://www.haomeiwen.com/subject/uvbsqftx.html