伪静态_urlrewrite实例解析

上传人:第*** 文档编号:32744152 上传时间:2018-02-12 格式:DOC 页数:8 大小:86.50KB
返回 下载 相关 举报
伪静态_urlrewrite实例解析_第1页
第1页 / 共8页
伪静态_urlrewrite实例解析_第2页
第2页 / 共8页
伪静态_urlrewrite实例解析_第3页
第3页 / 共8页
伪静态_urlrewrite实例解析_第4页
第4页 / 共8页
伪静态_urlrewrite实例解析_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《伪静态_urlrewrite实例解析》由会员分享,可在线阅读,更多相关《伪静态_urlrewrite实例解析(8页珍藏版)》请在金锄头文库上搜索。

1、Url Rewrite Filter 实现页面伪静态化,简单实例及步骤1.首先新建一个 Web Project 本例把它命名为:UrlRewrite,在创建的时候,选择勾选“Add JSTL libraries to WEB-INF/lib folder ”(注:因为项目中会用到 jstl 核心标签库) ,然后再把 urlrewrite-2.6.0.jar 导入到项目 Bulid Path 路径下,最后再加入 struts 框架。2.配置 web.xml 文件把如下代码加入到 web.xml 配置文件中,更多的配置可参考官方文档:UrlRewriteFilterorg.tuckey.web.f

2、ilters.urlrewrite.UrlRewriteFilterlogLevelWARNUrlRewriteFilter/*3.新增 urlrewrite.xml 文件/(0-9+).html$/index.jsp?id=$1在 WEB-INF 目录下新建一个 Url Rewrite Filter 的规则配置文件,默认命名为urlrewrite.xml,示例内容如下:注:rule 是 url 重写规则,from 是显示出来的地址,to 是映射的实际地址,$1 是重写参数,它的值与 from 中的正则表达式是一一对应,可以为多个,() 里是匹配的正则表达式, 在正则表达式 指定字符的串开始,

3、$ 为指定结束4.新建一个简单的 action 处理类在此命名为:ProcessAction.java ;示例代码如下:package com.telin.struts.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.act

4、ion.ActionMapping;import org.apache.struts.actions.DispatchAction;public class ProcessAction extends DispatchAction /* Method execute* * param mapping* param form* param request* param response* return ActionForward*/public ActionForward show(ActionMapping mapping, ActionForm form, HttpServletReques

5、t request, HttpServletResponse response) return mapping.findForward(ok);5.在 struts-config.xml 中添加如下內容:6.新增 index.jsp 文件,添加如下内容:Hello word ! 7.新增 show.html 文件,添加如下内容:This is OK page.8.所有文件都操作处理完后,发布并启动项目下面做一下具体讲解讲解 1:正常情况下:在浏览器的地址栏中输入:http:/localhost:8080/UrlRewrite/页面内容如下:Hello word ! null(因为此时 id 并

6、没有值,所以显示为 null)Urlrewrite 之后:在浏览器的地址栏中输入:http:/localhost:8080/UrlRewrite/maomao.html页面内容如下:Hello word ! maomao解析:在项目中,maomao.html 实际上并不存在,该请求由 Url Rewrite Filter 负责拦截,由于它符合我在 urlrewrite.xml 中配置的拦截规则:/(0-9+).html$/index.jsp?id=$1所以该请求被转发由index.jsp负责处理,即实际处理请求的是index.jsp,但是地址栏中显示地址依旧是maomao.html.即伪静态的

7、显示方式,并把参数 id赋值”maomao” ,所以页面中id此时不为null。讲解 2:正常情况下:在浏览器的地址栏输入:http:/localhost:8080/UrlRewrite/process.do?method=show&uuid=index页面内容如下:This is OK page.我们怎么把这个 url 实现伪静态化呢?实现方式 1:在 urlrewrite.xml 中定义如下规则:/(a-z+)/(a-z+)/(a-z+)$/$1.do?method=$2uuid=$3在 index.jsp 中添加如下链接:跳转-1当点击该链接,地址栏中显示 url 是:http:/loc

8、alhost:8080/UrlRewrite/process/show/index注:这种方式在很多论坛中经常使用。实现方式 2:在 urlrewrite.xml 中定义如下规则:/(a-z+)/(a-z+)/(a-z+).html$/$1.do?method=$2uuid=$3在 index.jsp 中添加如下链接:跳转-2当点击该链接,地址栏中显示 url 是:http:/localhost:8080/UrlRewrite/process/show/index.html注:这只是伪静态的两种 url 展现方式。讲解 3:在 urlrewrite.xml 配置文件中有两种规则:即和,在上面的

9、例子中,讲解的都是规则,下面我们来讲解一下 规则:这是非常类似的一个正常的规则,但它是用于重写的 URL ,通过response.encodeURL() 或者 标签来实现下面我们在 index.jsp 中加入如下三段代码:跳转-3跳转-4在 urlrewrite.xml 中加入如下 规则:process.do?method=(a-z+)uuid=(a-z+)./$1.html正常情况下:在浏览器的地址栏中输入:http:/localhost:8080/UrlRewrite/我们把鼠标指向链接” 跳转-3”或者” 跳转-4 ”上的时候,状态栏的地址显示为:http:/localhost:8080

10、/UrlRewrite/show.html当我们点击链接” 跳转-3” 或者” 跳转-4 ”上的时候。地址栏显示地址为:http:/localhost:8080/UrlRewrite/show.html页面显示内容为:This is OK page.解析:跳转-4 该语句符合我在 urlrewrite.xml 中配置的拦截规则process.do?method=(a-z+)uuid=(a-z+)./$1.html所以它会被服务器解析为:跳转-4 ,从而实现 url 重定向。讲解 4:上面已经讲过,比如访问:http:/localhost:8080/UrlRewrite/process.do?m

11、ethod=show&uuid=index可以这样:/(a-z+)/(a-z+)/(a-z+).html$/$1.do?method=$2uuid=$3+跳转-2相结合的配置访问。但是像这种配置:跳转-2的可读性比较差,不方便一眼看出是一个什么样的请求处理方式。所以可以把 与 结合使用:/(a-z+)/(a-z+)/(a-z+).html$/$1.do?method=$2uuid=$3+(a-z+).do?method=(a-z+)uuid=(a-z+)%context-path/$1/$2/$3.html+跳转-4此时点击“跳转-4” ,地址栏 url 显示为:http:/localhost

12、:8080/UrlRewrite/process/show/index.html页面显示内容为:This is OK page.解析:1. 跳转-4该语句会根据规则被服务器解析为:跳转-42.我们点击“跳转-4 “实际上就是请求 ”/UrlRewrite/process/show/index.html“,该请求符合规则,所以会被 转发到 ”process.do?method=show&uuid=index“,从而实现伪静态。总之,页面中的地址红过 URLRewriter 进行静态化以后,在请求的时候,URLRewriter 又将其进行了还原,保证了一致性.讲解 5:防止不同规则之间没必要的多次

13、转发请求:/(a-z+)/(a-z+)/(a-z+).html$%context-path/$1.do?method=$2uuid=$3+process.do?method=(a-z+)uuid=(a-z+)%context-path/$2.jsp+跳转-2在浏览器的地址栏中输入:http:/localhost:8080/UrlRewrite/我们把鼠标指向链接” 跳转-2”状态栏的地址显示为:http:/localhost:8080/UrlRewrite/process/show/index.html当我们点击链接” 跳转-2” 后,地址栏显示地址为:http:/localhost:8080

14、/UrlRewrite/index.jsp解析:1. 跳转-2 该语句会根据第一个 规则被转发到/process.do?method=show&uuid=index2. 被转发后的请求 /process.do?method=show&uuid=index,同时它又符合第二个规则,所以它会被转发到 index.jsp,所以此时地址栏显示为最后的地址。注:似乎这种在不同之间转发的情况,只在 type=redirect时才出现。常见的问题:1) 当你想要把“ ”放在 rule 规则中时,你必须键入的 XML 实体&”.2) 为了简单你可能想要启动所有的 froms,以 开始以$结束(在正则表达

15、式指定字符的串开始,$ 为指定结束).例如一个请求/my/url/path 不匹配/url/$ 但匹配/url/3) 如果使用 记住所有网址,在您的代码必须是编码如:4) 在 outbound-rule 处如果不加“ ”对相关的符号进行转义那么将使response.encodeURL 或者绑定不上“美化后 ”的 url。5) 对于中文参数要使用(.*)作为参数转义.6) 在制定 rule 时最好要加上.$,否则后果就是将你的 web project 下面的所有的你转发路径下的目录均认定成为参数了,导致页面图片以及 css 路径出错。7) 在浏览器 url 中输入:http:/localhost

16、:8080/UrlRewrite/rewrite-status,则可以看见所有你自定义的重写规则。8) 简单的说:是对进入服务器的 url 进行重置。是对从服务器向页面输出的 url 进行重置。9) 正则表达式是复杂的,有些技巧, 阅读正则表达式 语法的 Java. 常见的两种跳转方式(type 值):redirect、forward1.)forward (default) 如果请求匹配“from ”中的规则 ,那么该请求将内部送交到 URL 指定的“ to“ 元素。注:在这种情况下,“to”链接必须和 UrlRewriteFilter 在同一上下文环境中,它等同于:RequestDispatcher rq = request.getRequest

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号