URL重写技术
搞了一个小时才完成URL重写技术,下面就写一下学习笔记,用一个实例的方式解释如何实现URL重写
我的目标就是令类似/personal/a1/a2的所有HTTP请求
解释成/urlReWrite.do?city=a1&name=a2,并执行相应的Action输出2个参数
1.首先是新建一个Struts项目,之后增加一个jsp页面,目录结构如下所示
2.下载urlrewriterfilter,附件那里我会提供下载
之后把jar文件和xml配置文件导入到项目相应的目录中
导入jar文件
之后选择urlrewrite-3.1.0.jar
导入XML配置文件
选择XML catalog文件,之后选择导入的路径,就是在WEB-INF目录下
之后选择 import files from file system
之后选择你的urlrewriter.xml的目录位置
之后点击finish,完成了导入的工作了
3.在web.xml文件中增加以下的一个filter,主要是过滤所有/personal/的HTTP请求
<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>/personal/*</url-pattern>
</filter-mapping>
4.配置urlrewriter.xml文件,配置如下
<rule>
<from>/personal/([a-z]+)/([a-z]+)</from>
<to type="forward">/urlReWriter.do?city=$1&name=$2</to>
</rule>
5.在urlRewrite.jsp页面中增加如下代码
<html:link page="/personal/jilin/gaohongyan">click here</html:link>
6.添加一个Action,path路径设置为urlReWriter
修改Action代码如下所示
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
System.out.println("city="+request.getParameter("city"));
System.out.println("name="+request.getParameter("name"));
return null;
}
主要是在控制台输出2个参数
7.最后就是部署项目,最后效果如下
点击之后
希望对大家学习有所帮助。