jsp静态化和伪静态化《转载》

用UltraISO制作镜像以RAW格式刻录系统到U盘后,在Windows上无法识别的解决办法 在这篇文章中,用UltraISO制作镜像后,会使得U盘无法识别!!!那么,如何抹掉U盘的数据,格式化U盘呢? 阅读详情

首先说说为什么要静态化。
对于现在的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地址伪静态化

在网上找了很多关于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;"来代替"&"

我喜欢,驾驭着代码在风驰电掣中创造完美!我喜欢,操纵着代码在随必所欲中体验生活!我喜欢,书写着代码在时代浪潮中完成经典!每一段新的代码在我手中诞生对我来说就象观看刹那花开的感动!
Unity 数字孪生实战:PiXYZ Plugin工业模型高效处理指南 本文是Unity数字孪生实战指南,重点介绍了如何使用PiXYZ Plugin高效处理工业CAD模型。针对工业模型导入Unity时面临的格式壁垒、数据爆炸资产混乱等核心痛点,文章提供了从环境安装、基础导入到智能减面、资产清理的完整解决方案,并分享了预设自动化、运行时导入等高级技巧与性能优化策略,帮助开发者快速打通工业设计与实时交互流程。 阅读详情

相关推荐

YOLOv8 改进涨点 | 模块即插即用 直接可用

在目标检测任务中,注意力机制能够帮助模型聚焦于图像中的关键区域,显著提升检测精度。。创建模块代码注册模块修改任务解析tasks.py创建YAML配置文件模块核心优势适用场景计算开销SOCA捕获二阶统计信息,增强通道间相关性需要精细特征区分的场景中等SK自适应多尺度核选择多尺度目标检测中等偏高显式特征聚集-分配机制全局上下文建模中等A2-Net双线性注意力,高效全局交互复杂场景理解中等偏高CrissCross线性复杂度全局上下文高分辨率输入,长距离依赖较低。

u012133341的博客 1838

[笔记] 前端静态化伪静态

先看看别人对静态化的理解。 网页静态化有很多含义,在WEB开发中,静态网页一般理解为网站中大部分超级链接所引用的页面是单独的HTML静态页面文件(如*.htm、*.html等页面文件)。在ASP.NET中(ASP、PHP或JSP也一样),页面都是通过运行库(其他语言也有相应的解释器或运行环境)动态生成HTML代码,然后发送到浏览器端的,而是直接将页面文件发送。通过一定的技术手段,将浏览用...

BLOCKGOLD.E的博客 4256

95.qt qml-诺谦通用可扩展多功能QML界面

如下图所示:自带一个功能界面,可以通过功能界面添加同功能,并且可以固定到顶部水平导航栏中,对于N多小功能的项目而言,非常方便,这样用户就可以根据自己喜好来使用自己常用的功能了。

抵抗时间扭曲,坚持做一件有意义的事 2998

伪静态与纯静态的使用区别

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

必应@珠峰 1066

PHP 页面静态化/纯静态化/伪静态化

个人博客迁移至独立博客:https://blog.plcent.com/,欢迎大家访问 概念 PHP静态化分为:纯静态化 伪静态化;纯静态化又分为:局部静态化 完全静态化静态化:是把PHP生成的动态页面保存成静态的html文件,用户访问该静态页面,而是用户每一次访问都重新生成一张相同的网页,优点就是减小服务器开销,   局部静态化:是生成的静态文件中,有局部的数据还是通...

weixin_30387423的博客 238

php伪静态

一直在php的开发工作.在开发的过程中老早就听说了“伪静态”这一说。但是一直没有对其进行了解。 今天终于下定决定 要好好的了解下这方面的内容。 首先,什么是伪静态伪静态又名URL重写,是动态的网址看起来像静态的网址。换句话说就是,动态网页通过重写URL方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。 另外在补充两个名词解析 静态网址:纯静态H...

weixin_33711647的博客 214

【学习:页面静态化伪静态

1、原生页面静态化 1.1 页面静态化基本知识 1.2 ob缓冲介绍 1.3 ob缓冲相关函数 1.4 ob缓冲处理器 1.5 ob多缓冲 1.6 ob缓冲实现页面静态化 2、伪静态 1、原生页面静态化 1.1 页面静态化基本知识 什么是页面静态化? 就是把网页成 静态的网页(html网页) 首先了解下文件缓存页面静态化区别 文件缓存 页面静态化 ...

hello_sgw的博客 1225

jsp静态化伪静态化<转载>

首先说说为什么要静态化。对于现在的Web Application来说,动态页面是占有绝对高的地位的,正因为有了动态化,才有了现在Web的丰富多彩,但是如同所有别的事实一样,好处往往都是有 代价的。为了产生出动态的效果,每一次对页面的请求都会要求服务器对页面进行编译或者执行,这些操作都很消耗系统资源。如果这期间还有数据库的 通讯,那么代价将会更大。如果一个页面在一定的时间内,其内容没...

daxiang3255的博客 122

jsp静态化伪静态化<转载>

首先说说为什么要静态化。对于现在的Web Application来说,动态页面是占有绝对高的地位的,正因为有了动态化,才有了现在Web的丰富多彩,但是如同所有别的事实一样,好处往往都是有 代价的。为了产生出动态的效果,每一次对页面的请求都会要求服务器对页面进行编译或者执行,这些操作都很消耗系统资源。如果这期间还有数据库的 通讯,那么代价将会更大。如果一个页面在一定的时间内,其内容没有发生改变,那

a476777389的专栏 561

伪静态----jsp静态化伪静态化<转载>

伪静态----jsp静态化伪静态化<转载>

黄昏的大树 492

jap页面静态化伪静态化转载

首先说说为什么要静态化。 对于现在的Web Application来说,动态页面是占有绝对高的地位的,正因为有了动态化,才有了现在Web的丰富多彩,但是如同所有别的事实一样,好处往往都是有 代价的。 为了产生出动态的效果,每一次对页面的请求都会要求服务器对页面进行编译或者执行,这些操作都很消耗系统资源。如果这期间还有数据库的 通讯,那么代价将会更大。 如果一个页面在一定的时间内,其内容没有

ONisNull的博客 442

jsp伪静态化

关于URLRewirte的用法;该方法只是实现了url的伪静态化,并是真正的静态化。   URLRewirte版本:urlrewrite-2.6.0.jar   URLRewirte的用处:     1.满足搜索引擎的要求;     2.隐藏技术实现,提高网站的移植性;     3.满足美感的要求。   具体使用:   1.首先在http://tucke

perry_zhao的博客 2026

jsp页面静态化问题

首先说说为什么要静态化。《转载他人,感觉很实用》 对于现在的Web Application来说,动态页面是占有绝对高的地位的,正因为有了动态化,才有了现在Web的丰富多彩,但是如同所有别的事实一样,好处往往都是有代价的。 为了产生出动态的效果,每一次对页面的请求都会要求服务器对页面进行编译或者执行,这些操作都很消耗系统资源。如果这期间还有数据库的通讯,那么代价将会更大。 如果一个页面在一定

waiting的专栏 1907

jsp网页的伪静态化

1使用URLRewrite实现url地址伪静态化1.1URLRewirte的用处 1.满足搜索引擎的要求。 2.隐藏技术实现,提高网站的移植性。 3.满足美感的要求(个人感觉这个用处太牵强)。 1.2项目部署 1.首先在http://tuckey.org/urlrewrite/下载urlrewirtefilter,现在有2.6.03.2.0两个版本,这里我选择的是前面一个稳...

weixin_30347335的博客 74

JSP页面静态化总结之一使用URLRewrite实现url地址伪静态化

1使用URLRewrite实现url地址伪静态化1.1URLRewirte的用处 1.满足搜索引擎的要求。 2.隐藏技术实现,提高网站的移植性。 3.满足美感的要求(个人感觉这个用处太牵强)。 1.2项目部署 1.首先在http://tuckey.org/urlrewrite/下载urlrewirtefilter,现在有2.6.03.2.0两个版本,这里我选择的是前面一...

weixin_30599769的博客 91

网站实现伪静态化

网站实现伪静态化  (2006-06-27 16:17:43) 转载▼   分类: 技巧程序 目的 1、满足搜索引擎的要求 某些搜索引擎能支持动态页面的抓取,大量的信息就能被潜在用户搜索到。用UrlRewrite技术你可以把 http://server/news.asp?id=111 变成 http://server/n

目标范式 1039

1使用URLRewrite实现url地址伪静态化(转载)

1使用URLRewrite实现url地址伪静态化1.1URLRewirte的用处1.满足搜索引擎的要求。2.隐藏技术实现,提高网站的移植性。3.满足美感的要求(个人感觉这个用处太牵强)。 1.2项目部署1.首先在http

iRollin的专栏 504

jsp使用URLRewrite实现url地址伪静态化

1.1URLRewirte的用处 1.满足搜索引擎的要求。 2.隐藏技术实现,提高网站的移植性。 3.满足美感的要求(个人感觉这个用处太牵强)。 1.2项目部署 1.首先在http://tuckey.org/urlrewrite/下载urlrewirtefilter,现在有2.6.03.2.0两个版本,这里我选择的是前面一个稳定版本。 2.解压所下载的文件...

weixin_34236497的博客 105

JSP静态化伪静态

  关于URLRewirte的用法;该方法只是实现了url的伪静态化,并是真正的静态化。   URLRewirte版本:urlrewrite-2.6.0.jar   URLRewirte的用处:     1.满足搜索引擎的要求;     2.隐藏技术实现,提高网站的移植性;     3.满足美感的要求。   具体使用:   1.首先在http://tuckey.org/urlrew...

weixin_30662849的博客 141

2006-2020年 CSP-S1 NOIP提高组 初赛 第1轮 真题及答案.rar

2006-2020年 CSP-S1 NOIP提高组 初赛 第1轮 真题及答案.rar

嵌入式初学者STM32控制SG90舵机相关代码

基于Keil5编译环境的STM32控制SG90舵机相关代码

上一篇: java当中的定时器的4种使用方式
下一篇: 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()《转载》
ONisNull
博客等级 码龄10年 3粉丝 9原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值