`
千年松鼠
  • 浏览: 25833 次
文章分类
社区版块
存档分类
最新评论

jsp页面的静态化

阅读更多
    前些天接手了公司一个网站的维护和优化,考虑到有的动态页面中有太多的数据库操作,所以要将其进行静态化,这也是网站优化升级的一个必经的步骤。
    由于是菜鸟刚刚上阵,起初觉得无从下手,于是在ITeye发了一篇求助,通过一些老鸟的帮助再加上我自己的思考,从而确定了解决思路,并且最终成功搞定。下面说一下方案和步骤:

    1:封装一个httpclient,并每隔一段时间向服务器发一次请求(当然请求的是需要静态化的动态页面)
    2:以流的形式获取响应报文,并将其写到本地文件且命名为"***.html"
    3:配置过滤器,将对该动态页面(***.jsp)的请求转发到转化后的静态页面(***.html)

    方案确定了,然后是查对应的技术有哪些,这里面主要有两点,一个是httpclient,一个是定时器。
    通过各种搜索,我确定了用Apache的httpclient,然后定时器用quartz。然后去官网查看两者的用法,一步步搞定,下面我贴出一部分代码

Httpclient:
   
import java.io.File;
import java.io.FileOutputStream;

import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;


public class MyHttpClient {
	
	private static String urlString = "http://www.ncpqh.com/";
	private static String fileUrlString = "D:\\forTest\\test.html";
	public void fetchAndSave(){
		byte[] content = get(urlString);
		saveFile(content, fileUrlString);
	}
	
	private byte[] get(String url){

		  	HttpClient client = new HttpClient();
		    GetMethod getMethod = new GetMethod(url);
		    getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 
		    		new DefaultHttpMethodRetryHandler(3, false));
		    try {
		      int statusCode = client.executeMethod(getMethod);

		      if (statusCode != HttpStatus.SC_OK) {
		        System.err.println("Method failed: " + getMethod.getStatusLine());
		      }
		      InputStream inputStream = getMethod.getResponseBodyAsStream();
		      byte[] bytes = new byte[1024 * 2000];  
	            int index = 0;  
	            int count = inputStream.read(bytes, index, 1024 * 2000);  
	            while (count != -1) {  
	                index += count;  
	                count = inputStream.read(bytes, index, 1);  
	            }  
		      return bytes;
		    } catch (HttpException e) {		      
		      e.printStackTrace();
		      return null;
		    } catch (IOException e) {
		      e.printStackTrace();
		      return null;
		    } finally {
		    	getMethod.releaseConnection();
		    	
		    }  
	  }
	  
	private void saveFile(byte[] content,String fileUrl){
		  File htmlFile = new File(fileUrl);
		  if (content == null || content.equals("")) {
			System.out.println("There is no content");
		}else {
			  try {
				  if (htmlFile.exists()) {
						htmlFile.delete();
						htmlFile.createNewFile();
           //这里有个缺陷,如果恰巧删除的时候有人访问的话,对用户来说会很不友好
					}
				  	FileOutputStream fileOutputStream = new FileOutputStream(htmlFile);
				  	fileOutputStream.write(content);
				  	fileOutputStream.close();
			} catch (IOException e) {

				e.printStackTrace();
			}
		  }
		}	
}


    定时器的部分比较简单quartz官网有很详细的demo,我就不贴代码了

    下面是过滤器的部分,碰巧的是我需要静态化的页面只有首页,所以只需要在web.xml里配置一下欢迎页面就可以了,所以就不用过滤器了。但是如果不是首页的是需要配置过滤器的。

    好了,到这里静态化的工作就完成了,我这次的收获是这样的:对于毫无头绪的问题,要理性的去分析,一步一步来,不能急于求成。
分享到:
评论

相关推荐

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

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

    jsp页面静态化

    实现JSP页面静态化的一种常见方法是利用JSP内置对象`out`,它是`JspWriter`的实例,用于将数据回写到客户端。我们可以通过创建自定义类,继承`JspWriter`并重写其输出方法,将数据写入到服务器上的一个本地文件,而...

    JSP页面静态化

    包括使用freemarker和velocity两种技术来实现静态化。压缩包里面的文件有说明文档,说得很仔细,特别适合入门级别的人参考。还有freemarker和velocity开发所需要的jar包和插件。

    Jsp页面静态化(freemarker)教程及源码

    前台页面的静态化就有利于SEO,所以这个问题摆在了我的面前,在网上一搜,关于这方面的资料不是很多,又很杂,关于这方面的知识,越来或多的程序员将会碰到,原来项目中这部分静态化的功能主要由我来做的,现在我将...

    JSP页面静态化最普遍用的三种

    以下是JSP页面静态化最常用的三种方法的详细解释: 1. 模板替换法 这种方法是通过读取一个静态模板文件(如`template.htm`),然后使用Java代码动态替换其中的占位符,最终生成HTML文件。例如,`buildhtml.jsp`中的...

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

    在Web开发领域,动态JSP页面静态化是一种常见的优化策略,其主要目的是提高网站的性能和用户体验。这一过程涉及到将原本由服务器动态生成的JSP页面转换为纯HTML页面,从而减少服务器处理请求的压力,加快页面加载...

    jsp的页面静态化技术,很实用

    **JSP页面静态化技术详解** 在Web开发中,JavaServer Pages(JSP)是一种常见的动态网页技术,它允许开发者将HTML代码与Java代码混合编写,以实现动态内容的生成。然而,在高流量的网站中,为了提高性能和降低...

    jsp静态化,jsp静态化

    5. **第三方工具或框架**:如Struts、Spring MVC等框架提供了静态化插件或配置,帮助开发者实现JSP静态化。这些工具通常提供更灵活的配置,可以根据业务需求选择静态化策略。 在实际应用中,JSP静态化需要注意以下...

    jsp静态化和伪静态化

    为了提高效率和用户体验,人们提出了页面静态化和伪静态化技术。 **页面静态化**是指将动态生成的HTML页面保存为静态文件,之后的用户请求不再通过服务器动态生成,而是直接读取这些静态文件,从而减轻服务器负担,...

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

    页面静态化是Web开发中一种优化技术,主要目的是减少服务器负担和提高网页加载速度,尤其对于高访问量的网站,效果显著。本实例是关于如何将JSP(Java Server Pages)页面转换为HTML静态页面的过程,这对于提升用户...

    JSP生成静态页面

    - **Apache Tiles**:Tiles是一个JSP框架,支持布局管理和页面静态化。通过定义模板和视图,可以方便地生成静态页面。 - **Spring MVC的PageCache**:Spring MVC提供了PageCache注解,可以标记某个Controller方法的...

    有关Java页面静态化

    Java页面静态化主要有两种方式:服务器端静态化和客户端静态化。 1. 服务器端静态化: - **预渲染(Prerendering)**:在用户请求之前,系统自动将一些常用或者热点页面生成静态HTML文件,存储在文件系统或CDN上。...

    java 页面静态化

    在进行页面静态化时,我们还需要考虑一些问题,比如如何处理动态内容(如用户登录状态、个性化推荐)、如何同步静态文件和动态数据、以及如何清理过期的静态文件等。这些问题可以通过设计合理的缓存策略和定时任务来...

    页面静态化

    页面静态化是Web开发中的一个重要概念,主要目的是提高网站的访问速度和搜索引擎优化(SEO)。在Java Web开发中,页面静态化通常涉及到将动态生成的HTML页面转化为纯HTML文件,以便用户请求时无需通过服务器执行复杂...

    动态页面静态化汇总--页面静态化方案

    以下是对动态页面静态化方案的详细解释: 1. **Java与JSP**: Java是一种广泛使用的后端编程语言,JSP(JavaServer Pages)是Java中用于创建动态网页的技术。在传统的JSP应用中,服务器接收到请求后,会解析JSP...

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

    这个过程称为静态化,它能够使网页在客户端直接加载,而无需每次请求时都执行服务器端的Java代码。 一、JSP与HTML的差异 1. JSP是一种服务器端脚本语言,它允许在HTML页面中嵌入Java代码,实现动态内容的生成。JSP...

    jsp静态化总结(jsp2html)

    3. **自动化工具**:通过一些自动静态化工具,如SiteMesh、JSP2HTML等,可以实现JSP页面的自动化静态化。 4. **CDN服务**:结合内容分发网络(CDN),在边缘节点缓存静态HTML,进一步提升用户体验。 **四、JSP静态...

    jsp动态页面转化静态化--实例

    2. 编写JSP页面:编写你需要静态化的JSP页面,确保其功能正常。 3. 实现静态化逻辑:在Servlet或Filter中,当接收到请求时,判断是否需要生成静态页面。如果需要,可以使用JSP的`javax.servlet.jsp.JspWriter`对象...

    页面静态化处理

    页面静态化处理是一种提高网站性能和用户体验的技术,它将动态生成的网页转换为静态HTML文件,用户请求时直接返回这些预先生成的文件,而非每次都执行数据库查询和其他服务器端逻辑。这种方式降低了服务器负担,加快...

Global site tag (gtag.js) - Google Analytics