Java中urlrewrite伪静态的使用总结

来源:互联网 发布:阿里巴巴怎么传淘宝 编辑:程序博客网 时间:2024/06/05 11:38

可以有两种方法来做,第一种就是使用URLRewrite来转换url,不让别人看到你的真实路径,另外一种就是使用freemarker来生成静态化的页面

url伪静态,以为是 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>  
[java] view plaincopyprint?
  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>  

 

【第四步】发布程序

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

http://localhost:8080/TestUrlRewrite/index.jsp?username=niejingyu ,页面展示效果如图 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] view plaincopyprint?
  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>  

 

 

    *.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 >   
[xml] view plaincopyprint?
  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>  

 

【第七步】 重启 tomcat

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

 

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

0 0
原创粉丝点击