伪静态_URLRewrite实例解析.doc_第1页
伪静态_URLRewrite实例解析.doc_第2页
伪静态_URLRewrite实例解析.doc_第3页
伪静态_URLRewrite实例解析.doc_第4页
伪静态_URLRewrite实例解析.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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.filters.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中的正则表达式是一一对应,可以为多个,()里是匹配的正则表达式, 在正则表达式指定字符的串开始,$为指定结束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.action.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, HttpServletRequest 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并没有值,所以显示为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.即伪静态的显示方式,并把参数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=$2&uuid=$3在index.jsp中添加如下链接:跳转-1当点击该链接,地址栏中显示url是:http:/localhost:8080/UrlRewrite/process/show/index注:这种方式在很多论坛中经常使用。实现方式2:在urlrewrite.xml中定义如下规则:/(a-z+)/(a-z+)/(a-z+).html$/$1.do?method=$2&uuid=$3在index.jsp中添加如下链接:跳转-2当点击该链接,地址栏中显示url是:http:/localhost:8080/UrlRewrite/process/show/index.html注:这只是伪静态的两种url展现方式。讲解3:在urlrewrite.xml配置文件中有两种规则:即和,在上面的例子中,讲解的都是规则,下面我们来讲解一下规则:这是非常类似的一个正常的规则,但它是用于重写的URL ,通过response.encodeURL() 或者 标签来实现下面我们在index.jsp中加入如下三段代码:a href=跳转-3a href=跳转-4在urlrewrite.xml中加入如下规则:process.do?method=(a-z+)&uuid=(a-z+)./$1.html正常情况下:在浏览器的地址栏中输入:http:/localhost:8080/UrlRewrite/我们把鼠标指向链接” 跳转-3”或者” 跳转-4”上的时候,状态栏的地址显示为:http:/localhost:8080/UrlRewrite/show.html当我们点击链接” 跳转-3”或者” 跳转-4”上的时候。地址栏显示地址为:http:/localhost:8080/UrlRewrite/show.html页面显示内容为:This is OK page.解析:a href=跳转-4该语句符合我在urlrewrite.xml中配置的拦截规则process.do?method=(a-z+)&uuid=(a-z+)./$1.html所以它会被服务器解析为:跳转-4,从而实现url重定向。讲解4:上面已经讲过,比如访问:http:/localhost:8080/UrlRewrite/process.do?method=show&uuid=index可以这样:/(a-z+)/(a-z+)/(a-z+).html$/$1.do?method=$2&uuid=$3+跳转-2相结合的配置访问。但是像这种配置:跳转-2的可读性比较差,不方便一眼看出是一个什么样的请求处理方式。所以可以把 与 结合使用:/(a-z+)/(a-z+)/(a-z+).html$/$1.do?method=$2&uuid=$3+(a-z+).do?method=(a-z+)&uuid=(a-z+)%context-path/$1/$2/$3.html+a href=跳转-4此时点击“跳转-4”,地址栏url显示为:http:/localhost:8080/UrlRewrite/process/show/index.html页面显示内容为:This is OK page.解析:1. a href=跳转-4该语句会根据规则被服务器解析为:跳转-42.我们点击“跳转-4 “实际上就是请求”/UrlRewrite/process/show/index.html“,该请求符合规则,所以会被转发到 ”process.do?method=show&uuid=index“,从而实现伪静态。总之,页面中的地址红过URLRewriter进行静态化以后,在请求的时候,URLRewriter又将其进行了还原,保证了一致性.讲解5:防止不同规则之间没必要的多次转发请求:/(a-z+)/(a-z+)/(a-z+).html$%context-path/$1.do?method=$2&uuid=$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/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,以开始以$结束(在正则表达式指定字符的串开始,$为指定结束).例如一个请求/my/url/path不匹配/url/$但匹配/url/3) 如果使用记住所有网址,在您的代码必须是编码如:a href=a href=4) 在outbound-rule处如果不加“ ”对相关的符号进行转义那么将使response.encodeURL或者绑定不上“美化后”的url。5) 对于中文参数要使用(.*)作为参数转义.6) 在制定rule时最好要加上.$,否则后果就是将你的web project下面的所有的你转发路径下的目录均认定成为参数了,导致页面图片以及css路径出错。7) 在浏览器url中输入:http:/localhost:8080/UrlRewrite/rewrite-status,则可以看见所有你自定义的重写规则。8) 简单的说:是对进入服务器的url进行重置。是对从服务器向页面输出的url进行重置。9) 正则表达式是复杂的,有些技巧, read Regular expression syntax for Java.阅读正则表达式语法的Java. 常见的两种跳转方式(type值):redirect、forward1.)forward (default) 如果请求匹配“from”中的规则,那么该请求将内部送交到URL指定的“ to“ 元素。注:在这种情况下,“to”链接必须和UrlRewriteFilter在同一上下文环境中,它

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论