`
wiwiluo
  • 浏览: 17810 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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:语文不好,不怎么会写总结,凑合着看吧

分享到:
评论
2 楼 liguocai2009 2012-06-26  
10分!
我想知道这个filter的原理是怎样的?
虽不是对HttpServletRequest对象做了什么操作?导致servlet容器认为filter修改后的URL才是真正的URL?
1 楼 zhuzhu1124 2010-02-04  
总结的很好啊,学习了

相关推荐

    URLrewrite-实例

    在实际项目中,`URLrewrite`可以用于多种场景:隐藏Servlet或JSP的实际路径,防止直接访问;实现URL参数的隐藏,提升安全性;优化SEO,比如将动态URL转换为静态URL形式;以及根据用户状态进行不同处理,如权限控制等...

    urlrewrite3.04的demo

    `urlrewrite`框架兼容于Java Servlet容器,如Tomcat,Jetty等,广泛应用于JSP项目中。 **一、URL重写的重要性** 1. **用户体验**:简洁、有意义的URL有助于用户更好地理解页面内容,提高用户对网站的接受度。 2. *...

    urlrewrite 3.2.0 java包

    要使用URLRewrite 3.2.0,首先需要将其JAR包添加到Web应用程序的`WEB-INF/lib`目录下。接着,在Web应用的`WEB-INF`目录下创建`urlrewrite.xml`配置文件,编写重写规则。 ### 4. 示例配置 ```xml &lt;urlrewrite&gt; ^...

    urlrewrite

    在Java Web应用程序中,URLRewrite常用于隐藏实际的Servlet或JSP路径,提升用户体验,同时也有助于保护内部系统结构。 二、URLRewrite的工作原理 URLRewrite的核心是通过匹配规则来转换HTTP请求的URL。这些规则...

    URLRewrite配置和使用[借鉴].pdf

    这个URL先会根据`&lt;outbound-rule&gt;`转换为`http://localhost:8080/URLRewrite/page/second`,然后再由`&lt;rule&gt;`转换为`http://localhost:8080/URLRewrite/page/second.jsp`,最终访问到实际的资源。 总结来说,URL...

    JSP使用URLRewirte实现url地址伪静态化

    本篇文章将深入探讨如何在JSP环境中使用URLRewrite来实现URL的伪静态化。 首先,理解URL伪静态化的概念至关重要。伪静态化是将动态网页的URL转换成看似静态的URL形式,这样做的好处包括提高搜索引擎友好度、提升...

    urlrewrite重写URL伪静态请求路径.

    `urlrewritefilter`遵循特定的配置文件(通常命名为`urlrewrite.xml`),该文件包含了重写规则,例如将动态请求映射到实际的Servlet或者JSP页面。 在描述中提到的博客链接,可能详细介绍了如何使用`urlrewrite`进行...

    伪静态URLRewrite实例解析

    ### 伪静态URLRewrite实例解析 #### 一、伪静态URLRewrite概念与作用 在Web开发领域,为了提高用户体验、便于搜索引擎抓取以及优化网站结构,常常需要对URL进行美化处理,这就是所谓的“伪静态”。通过将动态URL...

    urlrewrite(把jsp变成HTML).(个人总结综合教程,适合新入门的朋友阅读)

    &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter&lt;/filter-class&gt; &lt;param-name&gt;logLevel&lt;/param-name&gt; &lt;param-value&gt;commons&lt;/param-value&gt; &lt;/init-param&gt; &lt;/filter&gt; &lt;filter-name&gt;...

    Url Rewrite Filter实现页面伪静态化,简单实例及步骤

    DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN" "http://tuckey.org/res/dtds/urlrewrite2.6.dtd"&gt; &lt;urlrewrite&gt; ^/([0-9]+).html$&lt;/from&gt; &lt;to type="forward"&gt;/index.jsp?id=$1&lt;/to&gt; &lt;/...

    动态网站实现假静态利用urlrewrite

    2. **配置web.xml**:在项目的`web.xml`配置文件中,声明URLRewriteFilter作为Servlet过滤器,并设定其初始化参数,指定`urlrewrite.xml`的位置。 3. **编写urlrewrite.xml**:创建`urlrewrite.xml`文件,定义规则...

    JSP+Servlet系统 使用伪静态

    "JSP+Servlet系统 使用伪静态" 这个标题表明这是一个基于Java Web技术构建的系统,特别提到了"JSP"(JavaServer Pages)和"Servlet",它们是Java语言用于开发动态网页和服务的核心组件。"伪静态"则是指将动态URL转化...

    JSP使用URLRewirte实现静态 例子

    本篇文章将深入探讨如何在JSP环境中使用URLRewrite工具来实现URL的伪静态化,以及其背后的原理和优势。 首先,我们要理解什么是URL伪静态化。在动态网站中,URL通常会包含一些参数,如 "?id=123",这样的URL对于...

    Linux下搭建JSP环境.pdf

    Apache是最流行的Web服务器,但它不支持JSP和Servlet,因此通常我们会将其与Servlet容器(如Tomcat)结合使用,Apache处理静态页面,Tomcat处理动态页面,以实现各自的优势。 Tomcat是Apache基金会的一个Servlet...

    Java WEB实现URL重写

    2. **使用URL映射和Servlet**:在Servlet配置中,可以定义多个URL映射,每个映射对应不同的业务逻辑。这样,用户看到的URL就可以与实际处理请求的Servlet映射关系解耦。 ```xml &lt;!-- web.xml配置 --&gt; &lt;servlet&gt; ...

    jsp实现URL伪静态.rar

    使用URL重写技术,如Apache的mod_rewrite模块或Tomcat的Context配置,可以将动态请求转换成伪静态形式。在JSP中,我们可能需要结合服务器的配置来实现这一过程。 5. **隐藏Servlet路径** 为了使URL看起来更像静态...

    (301重定向)urlrewritefilter-4.0.3

    URLRewriteFilter是由Tuckey组织开发的一款强大的URL处理工具,它基于Apache HTTP服务器的mod_rewrite模块理念,但适用于任何支持Servlet和JSP的Web应用程序。该过滤器允许开发者通过配置规则来灵活地控制请求的URL...

    jsp get提交 如何隐藏地址栏中的问号.zip

    2. **URL重写(UrlRewrite)**:通过第三方库如Tuckey的UrlRewriteFilter,可以实现URL的重写,将实际的请求路径和参数转换成更友好的形式。例如,`/index.jsp?ptr=xxx` 可以被重写为 `/ptr/xxx`,隐藏了原URL中的....

    jsp URLRewirte地址静态化

    JSP URLRewrite地址静态化是一个重要的Web开发技巧,通过使用`URLRewriteFilter`工具,我们可以实现动态URL的静态化展示,进而提升网站的SEO效果和用户体验。正确配置和使用该工具,对于提升网站的整体质量有着积极...

Global site tag (gtag.js) - Google Analytics