Struts2、ssh实现url伪静态步骤:
依赖jar:urlrewrite-3.2.0.jar
第一步:在WEB-INF下新建urlrewrite.xml文件
第二步:配置web.xml文件,注意配置文件顺序,需要在struts配置前面
<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>
</filter></init-param>
<filter-mapping>
<filter-name>urlRewriteFilter</filter-name>
<url-pattern>*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<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>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
第三步:配置urlrewrite.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
"http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
<urlrewrite>
<rule>
<from>^/([A-Za-z0-9]+)/([A-Za-z0-9]+)\.htm$</from>
<to type="forward">/$1!$2.do</to>
</rule>
<outbound-rule>
<from>/([A-Za-z0-9]+)!([A-Za-z0-9]+)[\.do]$</from>
<to>/$1/$2.htm</to>
</outbound-rule>
</urlrewrite>
注:rule是url重写规则,from是显示出来的地址,to是映射的实际地址。示例:<a href="http://localhost:8080/douwanplay/user/testUrlRewrite.htm">GO</a>,表示实际请求为user!testUrlRewrite.do
$1是重写参数,它的值与from中的正则表达式是一一对应,可以为多个,()里是匹配的正则表达式, 在正则表达式^指定字符的串开始,$为指定结束(form一个括号--对应to的一个$参数)
outbound-rule 是反重写配置,即实际动态连接经其映射之后在页面显示为静态连接模式。示例:<a href="<c:url value="/user!testUrlRewrite.do" />">NO</a>,实际页面显示为user/testUrlRewrite.htm。参数配置同rule, <c:url /> 为 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
说明:
1、配struts2拦截器的时候需要加:
<dispatcher>REQUEST</dispatcher> //不加这个页面不能使用struts2标签
<dispatcher>FORWARD</dispatcher> //转发必须
<dispatcher>INCLUDE</dispatcher>
2、配置web.xml的时候,rewrite一定要在strtus2的上面。
web.xml 配置顺序
1>struts-cleanup:
2>sitemesh
3>UrlRewriteFilter 这个必须在sitemesh 后,否则rewrite后的页面不会被sitemesh 渲染。
4>struts2