JSP请求地址重写

阅读更多
请求地址重写好处不在赘述。现在有开源框架支持,非常方便:urlrewrite,http://tuckey.org/urlrewrite/。具体实现也非常简单,首先下载他的jar包,放到lib里,并添加library。首先在web.xml里的最上面,所有filter最上面,添加:

    UrlRewriteFilter
    org.tuckey.web.filters.urlrewrite.UrlRewriteFilter


    UrlRewriteFilter
    *.aspx
    REQUEST
    FORWARD


*.aspx就是你要拦截的请求地址结尾。
然后再WEN-INF下新建urlrewrite.xml,内容为:






    
        
                注释文本,映射规则说明
        
        ^/(\w+)/(\w+)/(\w+)\.aspx$
        $2Action!$3.aspx
    
    
        
            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.
        
        /rewrite-status
        /test/status/
    


    



之后改web-inf里struts的拦截器,一定类似底下的:
 
    
        struts2
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    
    
        struts2
        *.aspx
         REQUEST
         FORWARD
         INCLUDE
    

*.aspx可以换成你映射后的真实路径的结尾,struts配置文件中也要有相应的配置:


最关心的应该是映射规则,那里from节点是请求过来的地址,to节点是映射的真实地址, type是表示转发还是重定向,转发,struts拦截后可以获取参数,重定向则获取不到。2个节点可以是 真实的地址,也可以用正则表达式匹配,最好是正则表达式,要不然写死人。

你可能感兴趣的:(jsp重写地址,url重写,URL重写)