欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

urlrewrite和Struts2的生成伪静态页面

程序员文章站 2022-04-23 19:22:49
...

首先让我们了解它的工作原理,说白了它就是一个简单的过滤器(Filter) ,看看源码你就会很快的明白,它就是通过我们在jsp中常用的两个方法实现的forward(),sendRedirect().有这个urlrewrite的目的就是为了简化与美观及对SEO,搜索引擎收录等方面都有好处。
下面我们就快速的为你的web搭建Url重写技术。
第一步:下载urlrewrite-3.2.0.jar。将urlrewrite-3.2.0.jar拷到项目的lib目录下。
第二步:在WEB-INF目录下建一个urlrewrite.xml文件。
第三步:在web.xml中初始化,加入url rewrite filter,一定要放到struts2 filter的前面 。

 

web.xml 

<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>  
</filter-mapping>

 

添加struts2 filter的参数: 

<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
		</filter-class>
</filter>
<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>
		<dispatcher>REQUEST</dispatcher>    
        <dispatcher>FORWARD</dispatcher>  
        <dispatcher>INCLUDE</dispatcher> 
</filter-mapping>

 

 

所有的规则配置都写在urlrewrite.xml中。 

<rule>
    <from></from>
    <to type="forward></to>
</rule>

 <from></from> 写上你自己定义的访问地址,<to type="forward></to>就是实际的访问地址。比如我们实际的访问地址是: /entity.htm ?category=user&page=2.而我们想把它重写为/entity/uesr /page_2.html。这样看起来比我们实际的要好看的多。我们就应该这样的写: 

<rule>
    <from>^/(\w+)/(\w+)/page_(\d+)\.html$</from>
    <to type="forward">/$1.htm?category=$2&amp;page=$3</to>
</rule>

 

urlrewrite.xml       jsp->html     action->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">

<!-- Configuration file for UrlRewriteFilter http://tuckey.org/urlrewrite/ -->
<urlrewrite>

	<rule>
		<from>^/jsp/(.*).html$</from>
		<to>/jsp/$1.jsp</to>
	</rule>
<!-- 
	<rule>
		<from>^/jsp/emailMan.html</from>
		<to>/jsp/emailMan.jsp</to>
	</rule>
 -->
	<rule>
		<from>/icsslogin.html</from>
		<to>/icsslogin.jsp</to>
	</rule>
	
</urlrewrite>

将jsp页面内的所有*.jsp替换成*.html。

这样,进入网站首页后,鼠标触碰<a>标记时,浏览器左下角显示的是*.html,然而实际*问的是*.jsp或者*.action。

 

 

简单的介绍一下常用的正规表示式:

 

代码
说明

 


.
匹配除换行符以外的任意字符


\w
匹配字母或数字或下划线或汉字


\s
匹配任意的空白符


\d
匹配数字


\b
匹配单词的开始或结束


^
匹配字符串的开始


$
匹配字符串的结束

 

常用的&amp;要用 &amp;来表示。$1,$2代表与你配置正规表达式/(\w+)/(\w+)/相对应的参数。<to type="forward">默认的是 type="forward".