伪静态
伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。就是展示出来的是以html一类的静态页面形式,但其实是用JSP一类的动态脚本来处理的。
伪静态不足之处
- 网站承受能力低:由于伪静态是用正则判断而不是真实地址,分别显示哪个页面的责任也由直接指定转由CPU来判断了,所以CPU占有量的上升
- 网页打开慢:伪静态需要读取数据库,还有将网址重写额度过程
- 需要服务器的支持:不是所有的服务器都支持伪静态的
不过伪静态不大量使用还是可以接受的
Struts伪静态的配置
第一步:需要下载伪静态的jar包 urlrewritefilter-4.0.3.jar 官方网站:http://tuckey.org/urlrewrite/ 下载jar包放在你的lib目录下
第二步:官网上说的很明白,在你的web.xml中添加以下的filter,过滤所有的请求
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
解释一下这个filter中的一些标签含义
首先可以了解一下
RequestDispatcher
RequestDispatcher提供两个方法forward和include
都表示要跳转到其他资源,不同的是,如果使用forward跳转则后面的response输出则不会执行,而用include来跳转,则include的servlet执行完后,再返回到原来的servlet执行response的输出(如果有)
<dispatcher>元素
这个元素有四个可能的值:即REQUEST,FORWARD,INCLUDE和ERROR。可以在一个<filter-mapping>元素中加入任意数目的<dispatcher>如果没有指定任何< dispatcher >元素,默认值是REQUEST。
请求是以(/*)的,表示所有的起高球,并且是通过request dispatcher的forward方法传递过来或者直接从客户端传递过来的,则必须经过这个过滤器。
所以需要加上那三个dispatcher很重要,可以避免一些不必要的错误
第三步:在你的WEB-INF目录下创建一个 urlrewrite.xml的文件 与web.xml同级,内容就是对请求过来的经行过滤,改变其后缀为html
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN" "http://tuckey.org/res/dtds/urlrewrite2.6.dtd">
<urlrewrite>
<rule>
<from>/([a-zA-Z0-9]*).html</from>
<to type="forward">$1.do</to>
</rule>
</urlrewrite>
有些地方说需要加上他的另一半,<outbound-rule>,我感觉有这一个<rule>就够 了 ,(.html)前面是正则表达式为了匹配你的请求地址
意思就是你在浏览器地址栏上输入的地址(.html )会经过这里转变为(.do)的形式去执行的你的action ,还有的你的请求地址也带有的html也会转变为do,例如你的网页中的<a>标签里的地址
伪静态可以根据自己的需求更改其中的一些内容,以适用于你的项目中
【版本声明】本文为博主原创文章,转载请注明出处