JSP URL重写-urlrewrite

http://blog.csdn.net/mr_tank_/article/details/11892965

URL重写的目的不言而喻,首先引入urlrewrite-4.0.0.jar【或者其他版本】包,可以从官方下载。

1、web.xml【官方配置】

[html] view plaincopyprint?
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  6.     <display-name>display-name>  
  7.     <welcome-file-list>  
  8.         <welcome-file>index.jspwelcome-file>  
  9.     welcome-file-list>  
  10.   
  11.       
  12.     <filter>  
  13.         <filter-name>UrlRewriteFilterfilter-name>  
  14.         <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilterfilter-class>  
  15.         <init-param>  
  16.             <param-name>logLevelparam-name>  
  17.             <param-value>WARNparam-value>  
  18.         init-param>  
  19.     filter>  
  20.     <filter-mapping>  
  21.         <filter-name>UrlRewriteFilterfilter-name>  
  22.         <url-pattern>/*url-pattern>  
  23.     filter-mapping>  
  24. web-app>  

index.jspUrlRewriteFilterorg.tuckey.web.filters.urlrewrite.UrlRewriteFilterlogLevelWARNUrlRewriteFilter/*


2、urlrewrite.xml

[html] view plaincopyprint?
  1. xml version="1.0" encoding="utf-8"?>  
  2.         "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">  
  3.   
  4.   
  5.      <rule>     
  6.           
  7.         <from>admin/([0-9]+)/(.*).shtml/(.*)from>  
  8.         <to>/admin_login.jsp?id=$1&name=$2&keyword=$3to>    
  9.     rule>     


   admin/([0-9]+)/(.*).shtml/(.*)/admin_login.jsp?id=$1&name=$2&keyword=$3     
[html] view plaincopyprint?
  1.       
  2.     <rule>  
  3.         <note>  
  4.             The rule means that requests to /test/status/ will be redirected to /rewrite-status  
  5.             the url will be rewritten.  
  6.         note>  
  7.         <from>/test/status/from>  
  8.         <to type="redirect">%{context-path}/rewrite-statusto>  
  9.     rule>  
  10.   
  11.   
  12.     <outbound-rule>  
  13.         <note>  
  14.             The outbound-rule specifies that when response.encodeURL is called (if you are using JSTL c:url)  
  15.             the url /rewrite-status will be rewritten to /test/status/.  
  16.   
  17.             The above rule and this outbound-rule means that end users should never see the  
  18.             url /rewrite-status only /test/status/ both in thier location bar and in hyperlinks  
  19.             in your pages.  
  20.         note>  
  21.         <from>/rewrite-statusfrom>  
  22.         <to>/test/status/to>  
  23.     outbound-rule>  
  24.   
  25.   
  26.     The rule means that requests to /test/status/ will be redirected to /rewrite-statusthe url will be rewritten./test/status/%{context-path}/rewrite-statusThe outbound-rule specifies that when response.encodeURL is called (if you are using JSTL c:url)the url /rewrite-status will be rewritten to /test/status/.The above rule and this outbound-rule means that end users should never see theurl /rewrite-status only /test/status/ both in thier location bar and in hyperlinksin your pages./rewrite-status/test/status/


    3、项目结构:


    4、admin_login.jsp页面代码:

    [html] view plaincopyprint?
    1. <body>  
    2.     Admin Login Page.  
    3.     <br>  
    4.     <%=request.getParameter("id")%><br>  
    5.     <%=request.getParameter("name")%><br>  
    6.     <%=request.getParameter("keyword")%>  
    7. body>  
    Admin Login Page.
    <%=request.getParameter("id")%>
    <%=request.getParameter("name")%>
    <%=request.getParameter("keyword")%>

    测试结果:


    http://123.125.115.53/view/1002788.html?fromTaglist

    URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程。举个例子来说,如果通过浏览器进来的URL是“UserProfile.aspx?ID=1”那么它可以被重写成 “UserProfile/1.aspx”,这样的URL,这样的网址可以更好的被网站所阅读。 如果浏览器不支持Cookie或用户阻止了所有Cookie,可以把会话ID附加在HTML页面中所有的URL上,这些页面作为响应发送给客户。这样,当用户单击URL时,会话ID被自动作为请求行的一部分而不是作为头行发送回服务器。这种方法称为URL重写(URL rewriting)。 一般来说,URL重写是支持会话的非常健壮的方法。在不能确定浏览器是否支持Cookie的情况下应该使用这种方法。然而,使用URL重写应该注意下面几点: 1.如果使用URL重写,应该在应用程序的所有页面中,对所有的URL编码,包括所有的超链接和表单的action属性值。 2.应用程序的所有的页面都应该是动态的。因为不同的用户具有不同的会话ID,因此在静态HTML页面中无法在URL上附加会话ID。 3.所有静态的HTML页面必须通过Servlet运行,在它将页面发送给客户时会重写URL。

     


    本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部