`
holoblog
  • 浏览: 1260769 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:19498
文章分类
社区版块
存档分类
最新评论

JSP静态化

 
阅读更多

首先说说为什么要静态化。
对于现在的Web Application来说,动态页面是占有绝对高的地位的,正因为有了动态化,才有了现在Web的丰富多彩,但是如同所有别的事实一样,好处往往都是有代价的。
为了产生出动态的效果,每一次对页面的请求都会要求服务器对页面进行编译或者执行,这些操作都很消耗系统资源。如果这期间还有和数据库的通讯,那么代价将会更大。
如果一个页面在一定的时间内,其内容没有发生改变,那么就不必为每一次对它的访问进行一次“新”的编译或执行。我们可以把它在这段没有发生改变的时间内的 结果保存到一个静态的页面里面,然后每次访问这个页面时,就用刚才保存的静态页面进行回复。这样便能大大地减少系统资源的消耗,并且提高对客户的响应速 度。而这个过程就称之为页面静态化。

现在所面临的问题就是如何在JSP中将页面的内容保存下来。
在访问JSP页面的时候,服务器会先将JSP文件编译为Servlet文件,然后对这个Servlet编译、执行,并最终把结果返回给客户端。而我们的任务就是要把这个最终生成的HTML静态页面保留下来,存放在服务器上。
解决的方法其实很简单。普通的对于JSP的访问,最终的数据流是回写到客户端的,如果我们把它重定向,让它回写到服务器上一个本地的文件,这样就能把JSP的执行结果保存起来,而这个文件就是我们想要得到的静态化的结果。

好了,说了那么多废话,现在说说具体怎么实现。
看过将JSP编译成的Servlet文件以后,可以知道这个Servlet是通过一个"JspWriter"类型的对象将数据回写给客户端的,而这个对象 正是JSP里面的内置对象"out",现在我们只需要定义一个自己的类,让它继承"JspWriter"类,覆盖里面的输出相关函数,让数据都输出到一个 指定的文件就可以了。
例如(省略了部分重载函数):

程序代码

import java.io.*;
import javax.servlet.jsp.*;
public class ConstPageWriter extends JspWriter {
private PrintWriter pw;
public ConstPageWriter(String fileName){
super(JspWriter.DEFAULT_BUFFER, false);
try{
pw = new PrintWriter(fileName, "UTF-8");
}catch(Exception e){
e.printStackTrace();
}
}
@Override
public void print(String arg0) throws IOException {
pw.print(arg0);
}
......
@Override
public void println() throws IOException {
pw.println();
}
@Override
public void println(Object arg0) throws IOException {
pw.println(arg0);
}
......
@Override
public void write(char[] arg0, int arg1, int arg2) throws IOException {
pw.write(arg0, arg1, arg2);
}
}


然后将需要静态化的页面写成如下形式:

程序代码

<%
String fileName = "ConstPageName"; // 生成的静态页面文件名
if (notNeedUpdate){ // 判断是否需要更新
response.sendRedirect(fileName);
return;
}
out = new ConstPageWriter(pageContext.getServletContext().getRealPath(fileName));
%>
<%
// Build this page,更新页面
%>
<%
out.close();
response.sendRedirect(fileName);
%>


这样页面静态化基本上就算完成了,余下的操作就是处理何时需要更新。至于何时更新是跟特定的应用程序相关的,这里就不详细分析了。

JSP使用URLRewirte实现url地址伪静态化

JSP使用URLRewirte实现url地址伪静态化

在网上找了很多关于URLRewirte的使用,基本都是关于asp的,jsp的相关文档很少,而且大多写的很模糊,看了之后也是不清不楚,而且在 项目中无法使用成功,鉴于此,自己整理了关于URLRewirte的用法.该方法只是实现了url的伪静态化,并不是真正的静态化.

工作环境:Eclipse3.2.2+MyEclipse_5.5.1+Tomcat5.0.28

URLRewirte版本:urlrewrite-2.6.0.jar

前提条件:有一个可以正常使用的web应用项目

URLRewirte的用处:

1.满足搜索引擎的要求

2.隐藏技术实现,提高网站的移植性

3.满足美感的要求(个人感觉这个用处太牵强)

项目部署

1.首先在http://tuckey.org/urlrewirte/下载urlrewirtefilter

2.解压所下载的文件,把urlrewrite-2.6.0.jar复制到项目的WebRoot/WEB-INF/lib/目录下,然后编译

3.把urlrewrite.xml复制到项目的WebRoot/WEB-INF/目录下

4.在web.xml文件中加入以下:

<!-- 动态地址静态化 -->
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>logLevel</param-name>
<param-value>WARN</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

5.需要配置urlrewrite.xml文件来实现url静态化,下面将详细说明

到这里相关的配置已经完成,下面看如何把动态地址静态化

1.普通url静态化

例如:要把http://localhost/prjtest/user/list.jsp转换成http://localhost/prjtest/user/list.html

这种是最简单的,当一个servlet跳转到list.jsp页面列出user列表时,在urlrewrite.xml中这样配置:

<rule>
<from>^/user/list.html</from>
<to>/user/list.jsp</to>
</rule>

当请求/user/list.html这个页面时,实际上相当于请求/user/list.jsp页面

在servlet的跳转要这样写:

response.sendRedirect("./user/list.html");

2.带参数的url静态化

例如:要把http://localhost/prjtest/user/view.jsp?cid=1&cname=admin转换成

http://localhost/prjtest/user/view/1_admin.html

在urlrewrite.xml中这样配置:

<rule>
<from>^/user/view/([0-9]+)_([a-z]+).html$</from>
<to>/user/view.jsp?cid=$1&amp;cname=$2</to>
</rule>

当请求/user/view/1_admin.html这个页面时,实际上相当于请求/user/list.jsp?cid=1&cname=admin页面

在servlet的跳转要这样写(cid,cname为变量):

response.sendRedirect("./user/view/"+ cid +"_"+ cname +".html");

注意:配置文件中用"&amp;"来代替"&"



分享到:
评论
3 楼 120153216 2015-02-02  
我这是一直点击Table标签,最后点提交就变成这样了..你删掉吧
2 楼 as1245 2015-01-27  
<a href="http://www.baidu.com">1楼的回复是什么鬼?</a>
1 楼 120153216 2015-01-21  
引用
|||||||||||||||||||||||||
||||||||||||||||||||||||
||||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
||||||||||||||||||||||
||||||||||||||||||||||
|||||||||||||||||||||
|||||||||||||||||||||
||||||||||||||||||||
||||||||||||||||||||
|||||||||||||||||||
|||||||||||||||||||
||||||||||||||||||
||||||||||||||||||
||||||||||||||||||||||||
[b][b][b][b][b][b][b][u][u][u][i][i][i][i][i]
引用
[url][url][url][img][img][img][img][img][img][img][img][img][img][img][img][img][/img][/img][/img][/img][/img][/img][/img][/img][/img][/img][/img][/img][/img][/url][/url][/url]
[/i][/i][/i][/i][/i][/u][/u][/u][/b][/b][/b][/b][/b][/b][/b]
|||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||
||||||||||||||||||||||||||||
||||||||||||||||||||||||||||
|||||||||||||||||||||||||||
|||||||||||||||||||||||||||
||||||||||||||||||||||||||
||||||||||||||||||||||||||
|||||||||||||||||||||||||
|||||||||||||||||||||||||
||||||||||||||||||||||||
||||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
||||||||||||||||||||||
||||||||||||||||||||||
|||||||||||||||||||||
|||||||||||||||||||||
||||||||||||||||||||
||||||||||||||||||||
|||||||||||||||||||
|||||||||||||||||||
||||||||||||||||||
  ||||||||||||||||||
|||||||||||||||||
|||||||||||||||||
||||||||||||||||
||||||||||||||||
|||||||||||||||
|||||||||||||||
||||||||||||||
||||||||||||||
|||||||||||||
|||||||||||||
||||||||||||
||||||||||||
|||||||||||
|||||||||||
||||||||||
||||||||||
|||||||||
|||||||||
||||||||
||||||||
|||||||
|||||||
||||||
||||||
|||||
|||||
||||
||||
|||
|||
||
||
|
|

相关推荐

    jsp静态化,jsp静态化

    JSP静态化主要有以下几种实现方式: 1. **页面缓存**:当一个JSP页面被请求时,服务器会将其转换成HTML并存储在缓存中。下次相同请求到来时,直接从缓存中读取HTML,不再解析JSP,降低了服务器的计算开销。 2. **...

    jsp静态化总结(jsp2html)

    **一、JSP静态化的原理** JSP静态化的基本思路是将用户请求的JSP页面在首次访问时或定时任务中预先执行,生成不包含任何服务器端脚本的纯HTML页面,然后将这个HTML页面返回给客户端。这样,后续的请求就可以直接...

    jsp静态化和伪静态化

    在JSP中,实现伪静态化通常需要借助Web服务器(如Apache、Nginx)或应用服务器(如Tomcat)的URL重写模块,通过配置规则将看似静态的URL映射到实际的动态处理程序。 总的来说,静态化和伪静态化都是优化Web性能的...

    freemarker把jsp静态化简单应用

    6. **JSP静态化** JSP静态化是指将原本动态生成的JSP页面转换为纯HTML页面,减少服务器端的计算负担,提高页面加载速度。在FreeMarker中,我们可以预先生成HTML页面并存储在服务器上,当用户请求时直接返回静态页面...

    JSP静态化(已测试)

    【资源介绍】:JSP静态化(已测试),多种方法 【备注】: 亲爱的下载用户: 谢谢您光临CSDN阿Q资源中心! 本中心发布的资源均是经过本人测试通过后才发布的,请放心下载。如果您有不清楚的问题或者建议,...

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

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

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

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

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

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

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

    三、MyEclipse实现JSP静态化步骤 1. 创建JSP项目:在MyEclipse中新建一个Java Web项目,包含必要的Web-INF目录和JSP文件。 2. 编写JSP页面:编写你需要静态化的JSP页面,确保其功能正常。 3. 实现静态化逻辑:在...

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

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

    jsp页面静态化

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

    JSP页面静态化

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

    jsp页面的静态化处理方法一

    NULL 博文链接:https://liu0107613.iteye.com/blog/394825

    jsp生成静态页

    四、实现JSP静态化的策略 1. 使用过滤器(Filter):通过配置一个过滤器,可以在用户请求JSP页面后自动将其转换为静态HTML并存储在指定目录下。 2. 依赖于Web服务器:某些Web服务器如Apache HTTP Server有内置的功能...

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

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

    JSP文件生成静态页面

    但是,对于基础的JSP静态化,上述过滤器方法已经足够实现目标。 总结起来,"JSP文件生成静态页面"是一个旨在优化Web应用性能的技术,通过过滤器在请求处理阶段生成HTML并转发给客户端,降低了服务器处理动态请求的...

    jsp转html页面

    在Web开发领域,JavaServer Pages (JSP) 是一种广泛使用的...通过JSP静态化,开发者可以有效地提升网站的性能,同时降低服务器的资源消耗。在实际项目中,需要根据具体需求和资源状况,合理选择静态化策略和工具。

    jsp伪静态化

    /jsp-rewrite/WebRoot/WEB-INF/urlrewrite.xml sql文件: DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `userpwd` varchar(20)...

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

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

    JSP生成静态页面

    总的来说,JSP生成静态页面是提高网站效率的有效手段,但同时也需要谨慎处理静态化过程中的各种细节,以确保网站的正常运行和用户体验。在实际项目中,应结合具体需求和资源来选择合适的静态化策略。

Global site tag (gtag.js) - Google Analytics