struts2和urlrewriter结合使用 完成访问路径隐藏

最近写项目要完成访问地址的功能,后台使用的是struts2,本来以为struts2应该会提供这样的功能的,但是找了很久都没有找到,结果就看到有人使用urlrewriter来完成这个功能,所以自己就试了下,结果还真的可以,而且还很简单:

1. 我使用的是maven项目,所以直接加上

<dependency>
        <groupId>org.tuckey</groupId>
	<artifactId>urlrewritefilter</artifactId>
	<version>4.0.3</version>
</dependency>

若是不是使用maven的项目,可以自己去下载这个jar包,而且是可以从svn上检出源码:http://code.google.com/p/urlrewritefilter/downloads/list

 

2. 在web.xml中加入一个拦截器,放在struts2拦截器的前面,若还加入了字符编码的拦截器的话就要放到最前面:

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<display-name>j2ee_ttzh</display-name>
	<!-- url重写start -->
	<filter>
		<filter-name>UrlRewriteFilter</filter-name>
		<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
		<init-param>
			<param-name>confPath</param-name>
			<param-value>/WEB-INF/classes/urlrewrite.xml</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>UrlRewriteFilter</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
	</filter-mapping>
	<!-- url重写end -->
	<!-- struts2 拦截器 -->
	<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>
</web-app>

3. 新建一个urlrewrite.xml,通过上面web.xml中的配置可以看出这个文件是放在classpath下面的,若是不配置放置的位置,那么就默认在web-inf,可以查看源码验证。

 

 

<?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
         "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
<urlrewrite>
	<rule><from>/register.html</from><to type="forward">register!test</to></rule></urlrewrite>

4. 接下来就是访问 register.html 那么就会去访问register这个action里面的test方法



 

你可能感兴趣的:(struts,urlrewriter,访问路径隐藏)