Java伪静态urlrewriter的使用

最近公司以前的一个项目需要升级改版,其中的一个模块是使用Struts2做的不需要改动,但是需要将其从之前的项目里面剥离出来,看了看官网,发现所有的链接访问的静态地址,以为是FreeMarker实现的,仔细研究了会发现不是那么回事,原来是伪静态,程序使用了urlrewriter。其实urlrewriter的使用很简单,看看下面你就明白了。

urlrewriter简介:url rewrite将我们的动态网页地址转化为静态的地址,如html、shtml,还可以隐藏网页的真正路径,比如:有时候需要将xxx.com/news/ type1/001.jsp 转化成显示路径为xxx.com/news_type1_001.jsp。

 

【第一步】下载jar包

http://tuckey.org/urlrewrite/#download下载最新的jar文件,当前最新的是Beat3.2我下载的是urlrewritefilter-2.6.zip。解压得到urlrewrite-2.6.0.jar 和 urlrewrite.xml

 

【第二步】新建Web项目TestUrlRewrite,

在WebRoot下新建index.jsp,修改其代码如下所示:

Java代码
  1. <%@ page contentType="text/html; charset=UTF-8"%>   
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
  4.   
  5. <html>   
  6.   
  7.         <head>   
  8.   
  9.                <title>测试TestUrlRewrite</title>   
  10.   
  11.         </head>   
  12.   
  13.         <body>   
  14.   
  15.                <%   
  16.   
  17.                       String id = (String) request.getParameter("id");   
  18.   
  19.                       out.println("<h3> the value is   : " + id +" </h3> ");   
  20.   
  21.                %>     
  22.   
  23. </body>   
  24.   
  25. </html>  
<%@ page contentType="text/html; charset=UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

       <head>

              <title>测试TestUrlRewrite</title>

       </head>

       <body>

              <%

                     String id = (String) request.getParameter("id");

                     out.println("<h3> the value is  : " + id +" </h3> ");

              %>  

</body>

</html>

 

【第四步】发布程序

将程序发布到Tomcat中,然后在浏览器输入如下地址:

http://localhost:8080/TestUrlRewrite/index.jsp?id=2,页面展示效果如图1所示:

 

 


【第五步】添加urlrewrite文件

将urlrewrite-2.6.0.jar复制到WebRoot\WEB-INF\lib下。

将urlrewrite.xml复制到WebRoot\WEB-INF下,其中urlrewrite.xml代码如下所示:

 

 

Xml代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.1//EN"   
  4.   
  5.          "http://tuckey.org/res/dtds/urlrewrite3.1.dtd">  
  6.   
  7. <urlrewrite>  
  8.   
  9.        <rule>  
  10.   
  11.               <from>/(.*).html</from>  
  12.   
  13.               <to>index.jsp?id=$1</to>  
  14.   
  15.        </rule>  
  16.   
  17. </urlrewrite>  
<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.1//EN"

        "http://tuckey.org/res/dtds/urlrewrite3.1.dtd">

<urlrewrite>

       <rule>

              <from>/(.*).html</from>

              <to>index.jsp?id=$1</to>

       </rule>

</urlrewrite>

 

 

 

 

    *.html 是一个正则表达式的串。如果你对这个不理解可以学习一下java中正则表达式的应用。

    $1 也是一个正则表达式的语言匹配正则中的组捕获。

 

【第六步】修改web.xml文件

在web.xml 增加如下内容:

Xml代码
  1. <filter>  
  2.   
  3.        <filter-name>UrlRewriteFilter</filter-name>  
  4.   
  5.        <filter-class>  
  6.   
  7.                org.tuckey.web.filters.urlrewrite.UrlRewriteFilter   
  8.   
  9.        </filter-class>  
  10.   
  11.        <init-param>  
  12.   
  13.               <param-name>logLevel</param-name>  
  14.   
  15.               <param-value>DEBUG</param-value>  
  16.   
  17.        </init-param>  
  18.   
  19. </filter>  
  20.   
  21. <filter-mapping>  
  22.   
  23.        <filter-name>UrlRewriteFilter</filter-name>  
  24.   
  25.        <url-pattern>/*</url-pattern>  
  26.   
  27. </filter-mapping>  
<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>DEBUG</param-value>

       </init-param>

</filter>

<filter-mapping>

       <filter-name>UrlRewriteFilter</filter-name>

       <url-pattern>/*</url-pattern>

</filter-mapping>

 

【第七步】重启tomcat

       访问http://localhost:8080/TestUrlRewrite/2.html,页面效果如图所示:

 

 


       在这里是匹配
/(.*).html,将请求转发到index.jsp?id=$1。你还可以根据需要转到xxx.action?id=$1

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值