JSP URL重写-urlrewrite
http://blog.csdn.net/mr_tank_/article/details/11892965
URL重写的目的不言而喻,首先引入urlrewrite-4.0.0.jar【或者其他版本】包,可以从官方下载。
1、web.xml【官方配置】
[html] view plaincopyprint?- xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <display-name>display-name>
- <welcome-file-list>
- <welcome-file>index.jspwelcome-file>
- welcome-file-list>
- <filter>
- <filter-name>UrlRewriteFilterfilter-name>
- <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilterfilter-class>
- <init-param>
- <param-name>logLevelparam-name>
- <param-value>WARNparam-value>
- init-param>
- filter>
- <filter-mapping>
- <filter-name>UrlRewriteFilterfilter-name>
- <url-pattern>/*url-pattern>
- filter-mapping>
- web-app>
index.jsp UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter logLevel WARN UrlRewriteFilter /*
2、urlrewrite.xml
- xml version="1.0" encoding="utf-8"?>
- "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
- <rule>
- <from>admin/([0-9]+)/(.*).shtml/(.*)from>
- <to>/admin_login.jsp?id=$1&name=$2&keyword=$3to>
- rule>
admin/([0-9]+)/(.*).shtml/(.*) /admin_login.jsp?id=$1&name=$2&keyword=$3
[html] view plaincopyprint? - <rule>
- <note>
- The rule means that requests to /test/status/ will be redirected to /rewrite-status
- the url will be rewritten.
- note>
- <from>/test/status/from>
- <to type="redirect">%{context-path}/rewrite-statusto>
- rule>
- <outbound-rule>
- <note>
- The 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 the
- url /rewrite-status only /test/status/ both in thier location bar and in hyperlinks
- in your pages.
- note>
- <from>/rewrite-statusfrom>
- <to>/test/status/to>
- outbound-rule>
-
The rule means that requests to /test/status/ will be redirected to /rewrite-statusthe url will be rewritten. /test/status/ %{context-path}/rewrite-status The 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?- <body>
- Admin Login Page.
- <br>
- <%=request.getParameter("id")%><br>
- <%=request.getParameter("name")%><br>
- <%=request.getParameter("keyword")%>
- 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。本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
