URL 重写使用步骤

来源:互联网 发布:枪林弹雨刷金币软件 编辑:程序博客网 时间:2024/06/05 06:53
1 下载 jar:
官方地址: http://tuckey.org/urlrewrite/ 

下载 urlrewritefilter-4.0.3.jar,加入到工程 lib 目录下

2 配置 web.xml:

<!-- 加到任何servlet映射的顶部,不然可能有些路径不能被过滤到http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html     --><filter><filter-name>UrlRewriteFilter</filter-name><filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class><!--设备文件重加载间隔 (0默示随时加载, -1默示不重加载, 默认-1)--><init-param><param-name>confReloadCheckInterval</param-name><param-value>60</param-value></init-param><!-- 自定义配置文件的路径,是相对context的路径,(默认位置 /WEB-INF/urlrewrite.xml)--><init-param><param-name>confPath</param-name><param-value>/WEB-INF/urlrewrite.xml</param-value></init-param><!--设置日志级别(将被记录到日志中)可以为: TRACE, DEBUG, INFO (default), WARN, ERROR, FATAL, log4j,commons, slf4j,比如 sysout:DEBUG(设置到控制台调试输出级别)(默认级别 WARN) -->init-param><param-name>logLevel</param-name><param-value>DEBUG</param-value></init-param></filter><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>

3 配置 urlrewrite.xml:(添加 urlrewrite.xml 到工程的 WEB-INF 目录下。):

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE urlrewritePUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN""http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd"><urlrewrite><rule><!--http://localhost:8080/ssh_test/user/findAllUser.html=>http://localhost:8080/ssh_test/user/findAllUser.action--><from>^/([A-Za-z0-9]+)/([A-Za-z0-9]+)\.html</from><to>/$1/$2.action</to></rule><outbound-rule><!--http://localhost:8080/ssh_test/user/findAllUser.action=>http://localhost:8080/ssh_test/user/findAllUser.html--><from>/([A-Za-z0-9]+)/([A-Za-z0-9]+)\.action$</from><to>/$1/$2.html</to></outbound-rule><rule><!--http://localhost:8080/ssh_test/user/updateUser/id-14.html=>http://localhost:8080/ssh_test/user/updateUser.action?id=13--><from>^/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)-([A-Za-z0-9]+)\.html$</from><to>/$1/$2.action?$3=$4</to></rule><rule><!--http://localhost:8080/ssh_test/user/updateUser.action?id=3=>http://localhost:8080/ssh_test/user/updateUser/id-3.html--><from>^/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)-([A-Za-z0-9]+)\.html$</from><to>/$1/$2.action?$3=$4</to></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 的上面。



小结:
urlrewrite 是个过虑器,它将会过虑用户的所有请求,符合规则的便对其进行重定向。
rule 结点中 from 的规则默认使用的是正则表达式来匹配的,
当用户访问服务器时的 URL 会与该配置相比较,如果符合规则就会按照下面 to 结点中的配
置对其进行跳转,其默认是 forward 跳转。
简单分析一下上面的正则表达式“^/vweb/view/index-([0-9]+)” : “” 匹配输入字符
串的开始位置 “ [Math Processing Error] ”匹配输入字符串的结束位置
“\”转义字符,表示后面的“-”不具有特殊含义,只是一个简单的字符串。
“([0-9]+)”:
“[0-9]”:由 0 到 9 中任何数据组成的字符串
“+”匹配 1 或多个正好在它之前的那个字符。



0 0
原创粉丝点击