Struts2.5 伪静态的配置

Posted 坚持到底gl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2.5 伪静态的配置相关的知识,希望对你有一定的参考价值。

伪静态

  伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。就是展示出来的是以html一类的静态页面形式,但其实是用JSP一类的动态脚本来处理的。

伪静态不足之处


 

  1. 网站承受能力低:由于伪静态是用正则判断而不是真实地址,分别显示哪个页面的责任也由直接指定转由CPU来判断了,所以CPU占有量的上升
  2. 网页打开慢:伪静态需要读取数据库,还有将网址重写额度过程
  3. 需要服务器的支持:不是所有的服务器都支持伪静态的

  不过伪静态不大量使用还是可以接受的

 

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>标签里的地址

伪静态可以根据自己的需求更改其中的一些内容,以适用于你的项目中

 

 

   【版本声明】本文为博主原创文章,转载请注明出处

 

以上是关于Struts2.5 伪静态的配置的主要内容,如果未能解决你的问题,请参考以下文章

Yii2 配置 Nginx 伪静态

各种服务器伪静态配置方法

DTcms网站伪静态逻辑

Nginx 伪静态简单配置

nginx常用伪静态设置

如何配置thinkphp的伪静态重写