jsp/servlet/UrlRewrite使用

最近做了一个项目,因为有大量的新闻页面,为了提高对搜索引擎的收录支持,所以使用了UrlRewrite

现在把做项目之前对UrlRewrite的相关学习做了一下整理,现在发上来做个记录

 

一:还是先把UrlRewrite下载下来吧

      下载地址:下载UrlRewrite 。我下载的是urlrewritefilter-2.6.zip,最新的是urlrewritefilter-3.2.0.zip,不过这个还是测试版。

 

二:解压之后共有两个文件,一个是配置文件:urlrewrite.xml,另一个是jar包,新建工程,把jar包扔进去,配置文件放到WEB-INF下。

 

三:在web.xml中加入如下代码:

<!-- UrlRewrite start -->
<filter>
	<filter-name>UrlRewriteFilter</filter-name>
	<filter-class>
		org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
	</filter-class>
</filter>
<filter-mapping>
	<filter-name>UrlRewriteFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- UrlRewrite start -->

 

四:关于urlrewrite.xml的讲解

首先把我写的代码贴出来吧

<urlrewrite>

    <!-- first -->
    <rule>
    	<from>/news/([A-Za-z0-9]+)_([A-Za-z0-9]+).html$</from>
    	<to type="forward">/news/newslist.jsp?tid=$1&amp;uname=$2</to>
    </rule>

    <!-- second -->
    <rule>
        <from>/news/singlenews.html</from>
        <to type="forward">/news/singlenews.jsp</to>
    </rule>
    
    <!-- third -->
     <rule>
    	<from>/testurl/([A-Za-z0-9]+)_([A-Za-z0-9]+).html$</from>
    	<to type="forward">/servlet/URLServlet?tid=$1&amp;uname=$2</to>
    </rule>

</urlrewrite>

 

rule是定义URL的伪装规则

每个rule下都包含一对标签<from />和<to />

以我写的第二个rule为例,当用户访问的路径(from中定义的)是/news/singlenews.html时,

实际上访问的是下面to映射的地址:/news/singlenews.jsp

 

当访问的地址带参数的时候,如第一种rule

当用户访问的路径是/news/123_hello.html的时候

实际上访问的是to中定义的/news/newslist.jsp?tid=123&uname=hello

 

当访问Servlet的时候,如第三种rule

用户访问的路径是/testurl/123_hello.html

实际上访问的是to中定义的/servlet/URLServlet?tid=123&uname=hello

 

PS:from中的访问规则通常需要用正则表达式,但是不会用的很复杂。

注意:跳转的时候,就不要写实际路径了,跳转路径要按照映射的规则写

以上面为例:想要跳转到/news/newslist.jsp?tid=123&uname=hello

需要这样写:response.sendRedirect("/news/"+123+"_"+hello+".html");

(总结完)

 

 

PS:PS:新近补充,urlrewrite在resin下部署不能出现任何的同名!~比如首页映射的是index.html,新闻的映射为news/index.html,虽然路径不同,但是在resin下仍然会出现无法找到或者抛出异常,通过测试,在tomcat下不存在这个问题。同时在resin下可能会对输入输出流有一点点影响。因为过滤的是全部url,在项目实施过程中出现了验证码无法生成的问题。同样的,在tomcat下无不良影响。

 

PS.PS:语文不好,不怎么会写总结,凑合着看吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值