论坛首页 Java企业应用论坛

jsp动态内容转换为静态html的问题?

浏览 16592 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-11-22  
为什么楼主的问题:如何转换,反而讨论的是应不应该转换呢?
0 请登录后投票
   发表时间:2006-11-22  
ronghao 写道
为什么楼主的问题:如何转换,反而讨论的是应不应该转换呢?


还没开始弄,目前停留在想法上
google查了查,只找到了这个filter的例子!
感觉这方面实现的资料比较少。。。


jsp在服务器端保存为html对减轻服务器压力很有帮助(特别是在大流量的访问中,服务器不必每个页面都动态解析)
下面是生成html页面的关键代码

servletFilter过滤器,被过滤的页面都会生成一个html页面


package com.cn;

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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FileCaptureFilter extends HttpServlet implements Filter {

  private String protDirPath;
    
  public void init(FilterConfig filterConfig)throws ServletException
  {
    protDirPath = filterConfig.getServletContext().getRealPath("/");
    System.out.println(protDirPath);
    }
    
  public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException, ServletException{
     
    String fileName = protDirPath+"forum\\html.html";
    
    System.out.println(protDirPath);
    System.out.println(fileName);
    
    PrintWriter out = response.getWriter(); 
    FileCaptureResponseWrapper responseWrapper = new FileCaptureResponseWrapper((HttpServletResponse)response);
    chain.doFilter(request, responseWrapper);
    // fill responseWrapper up 
    String html = responseWrapper.toString();
    System.out.println(html);
    //得到的html页面结果字符串 
       responseWrapper.writeFile(fileName);
      // dump the contents 写成html文件,也可以保存在内存 
      //responseWrapper.writeResponse( out ); 
      // back to browser 
      //responseWrapper.sendRedirect("lastestThread.jsp");
  }


}




把html写入硬盘的类

package com.cn;

import javax.servlet.*;
import javax.servlet.http.*;

import java.io.*;

public class FileCaptureResponseWrapper extends HttpServletResponseWrapper {

  private CharArrayWriter output;
  
  public String toString(){
    return output.toString();
  }
  
    public FileCaptureResponseWrapper(HttpServletResponse response){
      super(response);
      output = new CharArrayWriter();
    }

    public PrintWriter getWriter(){
      return new PrintWriter(output); 
    }

    public void writeFile(String fileName)throws IOException{
      System.out.println("fileName = "+fileName);
      
      FileWriter fw = new FileWriter(fileName);
        fw.write( output.toCharArray() );
        fw.close();
  }

    public void writeResponse(PrintWriter out) {
      out.print( output.toCharArray() );
    }
}

0 请登录后投票
   发表时间:2006-11-22  
抛出异常的爱 写道
metalsliver 写道
我在维护一个论坛,论坛比较老,用了struts1.0

想把所有论坛贴转换为静态的html文件,
用户再浏览的时候查看静态html,而在update的时候重写静态html文件

我想尽量少的修改代码,甚至不修改


大家在这方面有没有相关的经验,提示一下


好强的想法...不过帖子数不会太多而变慢么
而且文件数量过多web服务器会死机


我想这个应该没关系,文件的处理应该是操作系统的事情。。。再多的文件应该也没问题。
0 请登录后投票
   发表时间:2006-11-22  
正在做CMS,也是需要这个功能.研究开源中...
0 请登录后投票
   发表时间:2006-11-23  
我做过类似的项目,可以使用velocity等模板技术,定义几个模板,凡是贴子的CUD操作,均同时根据模板生成对应的html文件。
0 请登录后投票
   发表时间:2006-11-23  
能不能把这个整理下,给我们小弟一个具体的方案,呵呵。。。。比较关注这个。
0 请登录后投票
   发表时间:2006-11-23  
能不能把这个整理下,给我们小弟一个具体的方案,呵呵。。。。比较关注这个。
0 请登录后投票
   发表时间:2006-11-27  
用freemarker解决了这个问题 ,实际是非常的简单,定义一个模板
content.ftl 然后
Map root = new HashMap();
root.put("content", c.getContent());
Template temp = cfg.getTemplate("content.ftl");
//发布日期
String date=c.getActivedate()
String filename = c.getId()+".html";
//创建目录
Path.createFold(Path.getWebCmsHtmlDirPath(),date);
Writer out = new OutputStreamWriter(new FileOutputStream
                    (Path.getWebCmsHtmlDirPath()+"/"+date+"/"+filename));
temp.process(root, out);
out.flush();
0 请登录后投票
   发表时间:2006-12-01  
我得到了两个结论和大家讨论:
1,并不是所有的静态连接都是真是的静态文件...
  很多静态链接都是用的URL重写,主要目的应该是欺骗搜索引擎.提高自己网站的PageRank
  (猜测javaeye的处理应该就是这样的...)
  (URL重写这个概念比较虎人,实际上就是重写当前url中的所有url链接,目的只有一个就是为了把?去掉 ,apache的官方文档写了几千字,哎,感觉写文档的兄弟的目的就是为了让你看不懂.)

2,有状态的页面不可能重写成静态html..除非你把用户状态不管不顾
0 请登录后投票
   发表时间:2006-12-01  
像雾像雨又像风
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics