`
metalsliver
  • 浏览: 24620 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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

阅读更多
我在维护一个论坛,论坛比较老,用了struts1.0

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

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


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

分享到:
评论
23 楼 coolzyt 2007-09-17  
论坛做静态页面,太麻烦了,还是在其他层面多调优好些,比如缓存
22 楼 tvjody 2007-09-17  
感觉那种方式不重要,性能高、速度快才是目标
21 楼 香克斯 2007-09-17  
shijunpu 写道
现在比较流行的是xml加xsl!!!

对于xml+xsl不怎么认可。javaeye里似乎有位仁兄在这方面很专长,但是对于水平不是那么好的人,xml+xsl是很让人头痛的。
个人感觉xml+freemarker可能比它更容易使用
20 楼 belivexiaoqi 2007-09-14  
还是觉得,在论坛进行静态化,有点不合适。

要是真的静态化,更新完后,放入一个编译队列,由线程调度执行jsp,生产静态文件,供用户访问。

psw:目录规则怎么定?
19 楼 xiaodai 2006-12-01  
像雾像雨又像风
18 楼 metalsliver 2006-12-01  
我得到了两个结论和大家讨论:
1,并不是所有的静态连接都是真是的静态文件...
  很多静态链接都是用的URL重写,主要目的应该是欺骗搜索引擎.提高自己网站的PageRank
  (猜测javaeye的处理应该就是这样的...)
  (URL重写这个概念比较虎人,实际上就是重写当前url中的所有url链接,目的只有一个就是为了把?去掉 ,apache的官方文档写了几千字,哎,感觉写文档的兄弟的目的就是为了让你看不懂.)

2,有状态的页面不可能重写成静态html..除非你把用户状态不管不顾
17 楼 ronghao 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();
16 楼 ctwu 2006-11-23  
能不能把这个整理下,给我们小弟一个具体的方案,呵呵。。。。比较关注这个。
15 楼 ctwu 2006-11-23  
能不能把这个整理下,给我们小弟一个具体的方案,呵呵。。。。比较关注这个。
14 楼 together 2006-11-23  
我做过类似的项目,可以使用velocity等模板技术,定义几个模板,凡是贴子的CUD操作,均同时根据模板生成对应的html文件。
13 楼 ronghao 2006-11-22  
正在做CMS,也是需要这个功能.研究开源中...
12 楼 metalsliver 2006-11-22  
抛出异常的爱 写道
metalsliver 写道
我在维护一个论坛,论坛比较老,用了struts1.0

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

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


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


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


我想这个应该没关系,文件的处理应该是操作系统的事情。。。再多的文件应该也没问题。
11 楼 metalsliver 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() );
    }
}

10 楼 ronghao 2006-11-22  
为什么楼主的问题:如何转换,反而讨论的是应不应该转换呢?
9 楼 myreligion 2006-11-22  
用squid之类的cache在前面,后台依然采用普通的方式,效果应该也会很好吧?
8 楼 metalsliver 2006-11-22  
具体到论坛着一块,我想
访问量越大,越需要这样做

我想问题主要有两个1,尽量减少文件的update(views+1的问题)
                  2, 用户信息的处理
解决了这两个问题,我想理论上就应该没有问题了
下面就是实践了
7 楼 eltonto 2006-11-22  
论坛用URL REWRITE就行了啊..。。
6 楼 metalsliver 2006-11-22  
呵呵,
我现把我知道的东西说一下,
很多大型的网站应用都在做动态文件到静态文件的转换,例如焦点网。

我们细心观察大家浏览的网站很大一部分都是html的文件,显然这些文件不是天生就是静态的
一个高并发量的应用在各个层面都是要做性能的处理的,转换静态文件应该是一个比较重要的手段,
其它应该还有cluster,专门数据库的优化。os部分也可能调优(甚至用大型机)

我只是觉得道理上应该是这样的,具体的东西准备尝试,测试



5 楼 bayers 2006-11-22  
天涯社区好象全部都是静态页。
4 楼 seairy 2006-11-22  
kj23 写道
如果每次回复重新生成静态文件是不合适的

论坛从内容来分析,我觉得不适合全站静态文件,毕竟不同于blog这样的形式。

当然也可以做,不过时效性就要牺牲,定期生成静态文件。


我也同意,若是资讯站可以做成静态,像论坛这种更新频率非常高的,做成静态html有点得不偿失,比如你访问一个帖子,帖子的views就要+1,也算是update吧?

相关推荐

    动态Jsp页面转换成静态Html页面

    动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html...

    动态Jsp页面转换成静态Html页面.zip

    动态Jsp页面转换成静态Html页面.zip

    快速将psd,jsp等静态资源转换为html页面

    快速将psd,jsp等静态资源转换为html页面

    jsp文件转换成静态的html

    NULL 博文链接:https://cuiquanmao.iteye.com/blog/704282

    jsp实现将动态网页转换成静态页面的方法

    可以称之为总版,模仿forum 类的接口做个superforum 并且实现cachable,不过因为这个页面刷新量比较大,虽然被cache 了,我还是想办法进行页面的缓存,感觉用jsp 产生的html静态内容当缓存,页面访问速度应该有所提高...

    JSP静态导入与动态导入使用详解

    使用了include指令的JSP页面在转换成Java文件时,将被插入的文件在当前JSP页面出来该指令的位置做整体的插入,合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。因此,必须保证插入文件后形成...

    jsp生成html文档

    jsp生成html的源代码文件,放到项目中可以把动态的jsp文件转换成静态的html文档

    JSP(全称JavaServer Pages)

    JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的...

    网页动静转换工具 v1.0.zip

    网页动静转换主要功能是用于将ASP网页、JSP网页转换为静态的HTML网页文件,使用这款软件可以加快转换的时间,提高效率。 网页动静转换工具特色: 网页动静转换助手用于将ASP网页、JSP网页转换为静态的HTML网页文件...

    JSP-常用编码转换工具

    在做J2EE时,经常需要将静态网页转换成jsp,但下载下来的htm或htm文件本身是UTF8和unicode,直接改成jsp会变成乱码,在MyEclipse中修改也不成,颇费劲。这个代码程序就是用来读取某种编码格式的html或txt文件并将它...

    JSP技术实现动态页面到静态页面的方法

    为了能深入浅出的理解这个框架的由来,我们首先来了解一下JSP解析器将我们写的JSP代码转换成的JAVA文件的内容。 下面是一个JSP文件test.jsp ﹤%@ page language=java contentType=text/html;charset=GB2312 %﹥ ﹤...

    jsp经典笔记jsp经典笔记

    JSP是服务器端运行的页面,JSP本身就是一个Servlet,他不仅可以包含静态的HTML代码,也可以包含动态的JAVA代码,服务器容器可以将JSP转换成Servlet发布,并接受请求。 Jsp文件只需放在应用文件下就可以了。 JSP例子...

    Java程序设计 12 JSP Servlet.ppt

    Java 服务器页面(Java Server Page,JSP)是一种动态网页技术,使用 Java 编程语言和基础类库,HTML 用于表示页面,而 Java 代码用于访问动态内容,并有效控制动态内容的生成。JSP 页面的扩展名为 .jsp。 JSP 执行...

    JSP生成静态页实践及其设计思想[转]

    引子:我们以两个大型网站为例作比较:51job和智联招聘(先声明我不是为...下面我们讨论一下jsp怎么转换成html??首先要做一个模板。后缀不限,但一般都用*.template例子<html><head><title>#title#

    jsp-企业人事管理系统.rar.tar.gz

    JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签...

    java伪静态URL重写的方法

    伪静态URL重写实际就是以静态地址(如:http://127.0.0.1:8080/pro/index.html)访问地态网页的方法(如:http://127.0.0.1:8080/pro/index.jsp)。 ...把静态的URL地址转换成动态地址,发起请求。

    jsp+sql毕业生招聘系统毕业设计(系统+论文+英文文献+综合材料).rar.tar.gz

    JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签...

    J2EE体系之-JSP学习

    JSP本质就是一个文档,他不仅可以包含静态的HTML代码,也可以包含动态的JAVA代码,服务器容器可以将JSP转换成Servlet发布,并接受请求 JSP文件只需放在应用文件下就可以了 JSP例子: <html> <title>...

    网上购物系统(JavaBean+Servlet+jsp).zip

    JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签...

Global site tag (gtag.js) - Google Analytics