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

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中把动态页面转换为静态页面.doc

    为了解决这个问题,一种常见的优化策略是将动态页面转换为静态页面。JSP(JavaServer Pages)是一种动态网页技术,通过将Java代码嵌入HTML中,可以在服务器端执行这些代码来生成动态内容。然而,动态页面每次请求都...

    jsp文件转换成静态的html

    在IT行业中,将JSP(JavaServer Pages)文件转换为静态HTML是常见的优化网站性能的手段之一。JSP是一种服务器端脚本语言,用于动态生成HTML、XML或其他文本格式的网页。然而,对于那些不涉及数据库交互或动态内容...

    JSP中把动态页面转换为静态页面

    在JSP中,将动态页面转换为静态页面是一种常见的优化技术,主要目的是提高网站的访问速度和降低服务器负载。动态页面通常需要服务器端执行代码,而静态页面则可以直接由Web服务器提供,无需额外的处理。以下是一些...

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

    使用这样的工具或方法将动态JSP转换为静态HTML有诸多好处,包括提高页面加载速度、减轻服务器压力、优化SEO排名等。但同时也需要注意,如果网站内容频繁更新或需要高度交互,过度依赖静态HTML可能会增加维护复杂性和...

    JSP动态生成HTML静态页面源码

    JSP动态生成HTML静态页面是一种优化网站性能的技术,它能够将频繁访问的动态内容转换为静态HTML页面,从而减轻服务器负担,提高网页加载速度。本源码提供了实现这一功能的具体方法。 首先,我们需要理解JSP的工作...

    jsp静态化,jsp静态化

    而JSP静态化就是将这些动态页面转换为纯HTML页面,从而减少服务器负担,加快用户访问速度。 JSP静态化主要有以下几种实现方式: 1. **页面缓存**:当一个JSP页面被请求时,服务器会将其转换成HTML并存储在缓存中。...

    动态JSP页面静态化,html输出

    JSP页面静态化就是将动态JSP页面转化为静态HTML的过程。当用户首次访问动态JSP页面时,服务器会生成对应的HTML页面并保存,后续的相同请求则直接返回该HTML,不再执行JSP的逻辑。这种方式可以显著提升网站性能,尤其...

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

    ### JSP实现将动态网页转换成...通过上述步骤,我们可以有效地利用JSP技术将动态内容转换为静态页面,从而实现性能优化的目标。这种方法不仅适用于论坛类应用,还可以广泛应用于各类需要频繁访问数据库的Web项目中。

    jsp 生成 HTML 静态页实例

    4. **自定义Tag Library(标签库):** 创建自定义标签来处理动态内容,并在其他地方用静态HTML替换。 5. **在后端逻辑中生成HTML:** 如果动态内容较少,可以在JSP的后台Java代码中直接生成HTML字符串,然后输出。...

    JSP转换HTML

    总之,JSP转换HTML是一个将服务器端渲染转变为前端渲染的过程,它涉及到动态内容的静态化、模板引擎的使用、预编译的处理以及自动化工具的集成。这个过程对于优化现代Web应用的性能和SEO具有重要意义。

    java JSP页面静态化总结_动态页面变为静态页面以减少访问数据库的次数提高速度.zip

    - JSP页面静态化的核心思想是将原本需要服务器实时解析的动态内容,提前转换为静态HTML文件,存储在服务器上。这样,当用户请求这些页面时,服务器不再需要执行JSP脚本,而是直接返回已经生成好的静态HTML,大大...

    页面静态化实例,jsp转化成html

    3. **静态页面生成**:静态化过程中,我们需要在用户请求之前,或者在后台定期执行,将`index.jsp`的动态内容转换为HTML文件,例如生成`index.html`。这通常通过读取JSP,执行其中的Java代码,然后将结果写入HTML...

    jsp静态化总结(jsp2html)

    1. **提高性能**:静态HTML页面的加载速度远超动态JSP页面,因为静态页面无需经过服务器解析,直接由Web服务器发送给浏览器。 2. **降低服务器压力**:大量请求时,静态页面可以减少服务器CPU和内存的消耗,提高...

    将jsp转化为静态的html文件输出

    将 JSP 转换为 HTML 的核心思想是在服务器端预处理 JSP 文件,将其中的动态内容转换为静态 HTML 格式存储,以便后续快速分发。具体步骤包括: 1. **读取 JSP 文件**:首先,服务器需要读取原始 JSP 文件的内容。 2....

    JSP生成静态页面

    **JSP生成静态页面**是一种优化网站性能的技术,它通过将动态内容转化为静态HTML文件,减少服务器处理请求的负担,提高网页的加载速度。这种方式在高流量网站中尤其常见,因为静态页面可以被缓存,减少了数据库查询...

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

    如果JSP页面包含了静态内容,如纯HTML、CSS或JavaScript,这部分可以直接提取出来转换为独立的HTML文件。这样做可以提高网页的加载速度,因为浏览器不需要执行服务器端的Java代码。 在转换过程中,需要注意保持设计...

    jsp实现URL伪静态.rar

    URL伪静态是网站优化的一个重要技术手段,它主要应用于动态网站,使得原本的动态URL展现为静态页面的格式,从而提高用户体验,优化搜索引擎的抓取效率。本资料"jsp实现URL伪静态.rar"将详细介绍如何在JSP环境下实现...

    jsp 动态转静态 URL重写

    URL重写是通过服务器配置或者应用程序内部处理,将用户请求的动态URL转换为看似静态的URL。这个过程并不会改变实际的请求处理逻辑,只是对外展示的URL形式发生了变化。 四、jsp动态转静态URL重写实现 1. 使用...

Global site tag (gtag.js) - Google Analytics