posts - 2, comments - 27, trackbacks - 0, articles - 60
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

JSP静态化HTML笔记

Posted on 2012-07-23 19:37 ZhouFeng 阅读(1877) 评论(0)  编辑  收藏 所属分类: 转载Web开发JAVA
至于将JSP页面静态化为HTML的好处,想必不用我在此解释了。之前用过一种伪处理的方式,用urlrewrite地址重定向伪装了访问路径,每次访问页面的时候还是会读取数据库,其实每次读取的数据都一样,特别是如新闻内容这种类型的页面,还是不太完美,今天在网上找了一些资料,也发现用urlrewrite的不少,我希望是能生成html文件那样的处理,还好找到一个博客,写的这样的处理方法,才发现,人家早就写了,只是当时没有下功夫去学习,今天按照上面的步骤做出来了,顺便记在这里

创建一个Servlet,主要内容如下
 1 String url = "";
 2 String name = "";
 3 
 4 Charset charset = Charset.forName("UTF-8");  //设置生成文件的字符集
 5 ServletContext servletContext = getServletContext();
 6 
 7 String file_name = request.getParameter("file_name");
 8 url = "/" + file_name + ".jsp";    // 你要生成的页面动态页面来源
 9 name = servletContext.getRealPath("/")+"\\"+ file_name + ".html";
10 // 这是生成的html文件名,如index.html文件名字与源文件名相同
11 
12 RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher(url);
13 
14 final ByteArrayOutputStream outStream = new ByteArrayOutputStream();
15 
16 final ServletOutputStream stream = new ServletOutputStream() {
17     public void write(byte[] data, int offset, int length) {
18         outStream.write(data, offset, length);
19     }
20 
21     public void write(int b) throws IOException {
22         outStream.write(b);
23     }
24 };
25 
26 final PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(outStream,charset));
27 
28 HttpServletResponse rep = new HttpServletResponseWrapper(response) {
29     public ServletOutputStream getOutputStream() {
30         return stream;
31     }
32 
33     public PrintWriter getWriter() {
34         return printWriter;
35     }
36 };
37 requestDispatcher.include(request, rep);
38 printWriter.flush();
39 FileOutputStream fos = new FileOutputStream(name); // 把jsp输出的内容写到html文件中去
40 outStream.writeTo(fos);
41 fos.close();
42 out.print("<p align=center>OK</p>");
我是想把page.jsp这个文件转换成page.html,所以只传了一个参数,如果想把show.jsp?id=123转换成123.html,相信这也难不到大家,只不过得注意引用CSS或图片的路径
这是在网上那位仁兄贴出来的代码,并做了些修改,他还介绍了其它的些,其它的还没来得及学习,先把这些记录下来。
我在转换的时候,碰到中文问题,更改request和response的字符集都搞不定,还好参考了http://www.blogjava.net/zphab/articles/295631.html,把字符编码加过来了,中文才算搞定了,简单的测试通过后,放在应用里就好办了。人家写出来这么多年了,才发现,惭愧呀

以上方案参考:http://blog.csdn.net/noove_001/article/details/1953682

只有注册用户登录后才能发表评论。


网站导航: