`

java urlRewrite

    博客分类:
  • java
阅读更多

1:什么是UrlRewrite
UrlRewrite 是将静态页面转换为动态页面的一种技术.例如:您网站页面是http://www.yourdomain.com/news/docread.aspx?id=123。使用UrlRewrite转换后可以以http://www.yourdomain.com/news/123.html来访问.这样完成了网站伪静态的功能。其实,UrlRewrite技术就是一个过滤器。它将会过虑用户的所有请求,符合规则的便对其进行重定向。


2:UrlRewrite技术的优点
(1)、便于搜素引擎收录
由于某些搜索引擎不能支持动态页面的抓取,大量的信息就不能被潜在的用户搜索到。用UrlRewrite技术你可以把http://server/news.asp?id=111变成http://server/news/111.htm这样他们就会被搜索引擎收录了。
(2)、隐藏技术实现,提高网站的安全性
每个页面都挂着鲜明的.asp/.jsp这种开发语言的标记,可以一眼让人看出你的网站使用什么语言做的。而且在改变网站的语言的时候,你需要改动大量的链接。而且,一个页面修改了扩展名,他的pagerank也会随之消失,从头开始。我们可以用UrlRewrite技术隐藏我们的实现细节,这样修改移植都很方便,而且完全不损失pagerank。
(3)、美化URL
对于追求完美主义的网站设计师,即使是网页的地址也要看起来简洁明快。形如 http://server/news.asp?channel=3&id=111 的网页地址,肯定是上不了完美主义者的法眼的,用UrlRewrite技术,你可以把他变成http://server/news/3/111.htm 。
3、UrlRewrite技术的实现
(1)将UrlRewrite的jar包(urlrewrite-2.6.0.jar)拷贝到项目工程lib目录下。
(2)在工程web.xml文件中加入过滤器代码。如下:

<filter>
<filter-name>rewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlR ewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>rewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> 
 


(3)在工程WEB-INF目录下新建urlrewrite.xml文件,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
"http://tuckey.org/res/dtds/urlrewrite2.6.dtd"> 
<urlrewrite>
<rule>
<from>^/servlet/([a-z]+)/([a-z]+)\.html$</from>
<to type="forward">/servlet/Guide?module=$1&amp;submodu le=$2</to>
</rule>
<rule>
<from>^/urlRewrite/([a-z]+)\.html$</from>
<to type="forward">$1.jsp?module=$1</to>
</rule>
</urlrewrite> 

 

其中:
<from></from>里的内容为地址栏里显示的地址。
<to></to>里的内容为真实的地址。
例如上面的例子:
地址栏里显示的地址为:
http://localhost:8080/Test/servlet/parm1/parm2.htm l
实际地址为:
http://localhost:8080/Test/servlet/Guide?module=pa rm1&submodule=parm2
地址栏里显示的地址为:
http://localhost:8080/Test/ urlRewrite /parm.html
实际地址为:
http://localhost:8080/Test/ urlRewrite/ parm.jsp
注1:页面中不能加目录,例如(urlRewrite)除非根目录下有urlRewrite目录,即:parm.jsp页面在urlRewrite目录下才可。

注2:urlRewrite技术主要是用正则表达式实现的匹配转换的,所以,要想了解学习urlRewrite技术需要了解一下java的正则表达式。

<outbound-rule> 相当于 </rule>的逆向

实例:

1. servlet:

package com.show;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ShowServlet extends HttpServlet {

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String s = request.getParameter("s");
String n = request.getParameter("n");
request.setAttribute("suc", s);
request.setAttribute("name", n);
request.getRequestDispatcher("suc.jsp").forward(request, response);
}

@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
} 
 



2. urlrewrite.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
"http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
<urlrewrite use-query-string="true">
<rule>
<from>/show_(.*)_(.*)</from>
<to>/show?s=$1&amp;n=$2</to>
</rule>
<outbound-rule>
<from>show\?s=(.*)&amp;n=(.*)</from>
<to>show_$1_$2</to>
</outbound-rule>
</urlrewrite> 
 


3. web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
</filter-class>
<init-param>
<param-name>logLevel</param-name>
<param-value>WARN</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>ShowServlet</servlet-name>
<servlet-class>com.show.ShowServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>ShowServlet</servlet-name>
<url-pattern>/show</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app> 
 


4. index.jsp

<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>

<body>
<a href="show_chill_Yang">aaaa</a>
<a href="<c:url value="show?s=chill&n=Yang"></c:url>">bbbb</a>
</body>
</html> 

 


5. suc.jsp

<%@ page language="java" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'suc.jsp' starting page</title>
</head>

<body>
<%=request.getAttribute("suc") %>
<%=request.getAttribute("name") %>
</body>
</html> 
 



注意:4. index.jsp 中的:<a href="<c:url value="show?s=chill&n=Yang"></c:url>">bbbb</a> 标签里的属性href必须写成<c:url> 不然

2. urlrewrite.xml 中的配置项<outbound-rule></outbound-rule>会不认的。


参考资料2:
使用UrlRewrite Filter对url进行美化转换处理
1.下载
http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.4-src.zip
http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.4.zip
相关联接:http://tuckey.org/urlrewrite/

2.解压得到urlrewrite-2.4.jar和urlrewrite.xml.

3.创建一个测试用的webapp.
先建立一个Servlet,来输出request.getQueryString().
并将这个servlet映射为/*
4.引入urlrewrite-2.4.jar,
编辑web.xml,加入

<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>logLevel</param-name>
<param-value>DEBUG</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> 

 


5.在WEB-INF目录下创建urlrewrite.xml,然后定义一些url重写规则。
然后就可以在webapp中使用url重写了。
例如:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
    "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
<!-- https://urlrewrite.dev.java.net/manual/3.0 -->
<urlrewrite>
    <rule>
        <from>/view/([0-9]+).html</from>
        <to type="forward">/test.jsp?str=$1</to>
    </rule>
</urlrewrite> 

 


6.有一个特殊的url,/rewrite-status是用来显示urlrewrite的状态信息的。

UrlRewrite Filter确实简单实用且功能强大,不错。
Tomcat自带的Example里也有url重写的例子,不过功能比较弱。

分享到:
评论

相关推荐

    java urlrewrite jar及简单配置

    Java URLRewrite是一个非常有用的库,它主要用于处理和重写HTTP请求的URL,使得应用程序能够实现更加友好的、可读性强的伪静态地址。在Web开发中,这有助于提高用户体验和SEO(搜索引擎优化)。URLRewrite的核心是...

    java urlrewrite解决默认页问题

    为了实现URL重写功能,我们需要在`web.xml`中配置URL Rewrite Filter,并在`urlrewrite.xml`中定义重写规则。 **1. `web.xml` 配置:** ```xml &lt;filter-name&gt;UrlRewriteFilter &lt;filter-class&gt;org.tuckey.web....

    java urlrewrite 实现伪静态化 demo源码

    Java URLRewrite是一个非常实用的库,用于在服务器端实现URL重写,进而实现网站的伪静态化。这个技术在优化网站SEO(搜索引擎优化)和提高用户体验方面具有重要作用。在这个"java urlrewrite 实现伪静态化 demo源码...

    Java高并发:静态页面生成方案--UrlRewrite

    UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址。 优点 一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误...

    urlrewrite 3.2.0 java包

    **URLRewrite 3.2.0 for Java:详解与应用** URLRewrite 是一个功能强大的URL重写和转换工具,适用于Java环境。它基于Apache的Tuckey项目,为Web应用程序提供了类似于Apache HTTP服务器的mod_rewrite模块的功能。在...

    urlrewrite3.2(支持自定义配置文件) 附带修改后的源码

    对上一篇资源的补充(http://download.csdn.net/detail/cbai0722/5217430),有同学提到需要源码,现在打包一并发上来.ant-1.9.1.jar,slf4j-api-1.5.2.jar,slf4j-simple-1.5.2是使用源码的时候的用到的三个包,这三个...

    urlrewrite 支持自定义多配置文件(*通配符)

    urlrewrite 只支持单个配置文件,默认的配置文件为:/WEB-INF/urlrewrite.xml 现在对urlrewrite-3.2的源码进行了修改,使它能够支持多文件和通配符的形式加载自定义配置文件,即可以进行如下的配置: &lt;param-name&gt;...

    urlrewrite-maven-example.zip

    URLRewrite是一款强大的URL管理工具,尤其在Java Web应用中广泛使用,它可以帮助开发者实现URL的重写和转换,以达到优化URL、隐藏真实路径、提高SEO效果等目的。在本篇文章中,我们将深入探讨URLRewrite的核心概念和...

    urlrewrite3.04的demo

    `urlrewrite`是一款优秀的Java库,专门用于处理URL重写,它使得动态网站能够展现静态化URL的效果,提升网站的专业性和可读性。`urlrewrite`框架兼容于Java Servlet容器,如Tomcat,Jetty等,广泛应用于JSP项目中。 ...

    URLrewrite-实例

    《URL重写技术详解——基于Java的URLrewrite实践》 在Web开发中,URL重写(URL Rewrite)是一项重要的技术,它允许我们以更友好、更可读的方式隐藏实际的URL路径,从而提升用户体验和搜索引擎优化(SEO)。本文将...

    urlrewrite

    《深入理解URLRewrite:Java路径重写技术详解》 在Web开发中,URL重写是一种常见的技术,它能够帮助我们优化网站的URL结构,提高搜索引擎优化(SEO),以及实现更加友好的用户界面。本文将重点讲解Java环境下的URL...

    URLRewrite帮助文档

    ### URLRewrite使用帮助文档 #### 一、URLRewriteFilter简介 URLRewriteFilter是一个功能强大的Web过滤器,主要用于实现URL的改写操作。它能够帮助开发者将动态URL转换成静态URL,这对于提高用户体验、优化SEO...

    UrlRewrite例子

    UrlRewrite是一个强大的URL重写工具,常用于Java Web应用中,尤其是与Struts2框架结合使用时,能够帮助开发者优化URL结构,提高网站的SEO友好性和用户体验。在这个"UrlRewrite例子"中,我们将深入探讨UrlRewrite的...

    urlrewrite地址重写实例配置说明

    URLRewrite通常与Apache的mod_rewrite或者在Java Web应用中的Tuckey's URLRewriteFilter一起使用。以下将详细介绍URLRewrite的工作原理和实例配置。 **1. URLRewrite工作原理** URLRewrite基于HTTP请求的过程,...

    urlrewrite_demo

    在这个"**urlrewrite_demo**"项目中,我们将深入探讨如何使用Java来实现URL重写,以及相关的`urlrewrite`工具的运用。 `urlrewrite`通常指的是`Tuckey URLRewriteFilter`,这是一个基于Apache的开源过滤器,用于在...

    网站安全urlrewrite教程和jar包

    `urlrewrite`是一个流行的开源Java过滤器,它基于Apache的`Tuckey URLRewriteFilter`,用于在Servlet容器(如Tomcat)中实现URL重写规则。这个jar包提供了强大的配置灵活性,使得开发者能够轻松地定义各种重写规则。...

    urlrewrite 4.0.3 jar包.rar

    **URLRewrite 4.0.3:Java Web应用程序的URL重写利器** 在Web开发中,URL重写是一项重要的技术,它可以帮助我们优化URL结构,使其更具有可读性,便于用户理解和记忆,同时也对搜索引擎优化(SEO)有着积极的影响。`...

    UrlRewrite实现伪静态

    UrlRewrite是一个强大的URL重写工具,常用于Java Web应用中,它基于Tuckey开源项目,能够帮助开发者实现URL的美化,进而提高网站的用户体验和SEO(搜索引擎优化)效果。在本文中,我们将深入探讨如何使用UrlRewrite...

    urlrewrite的简单搭建

    标题 "urlrewrite的简单搭建" 涉及到的知识点主要集中在使用URL重写工具 `UrlRewriteFilter` 上,这是一个基于Java的开源过滤器,用于处理和重写HTTP请求的URL,通常与Web应用程序(如Spring MVC或Struts)一起使用...

    urlrewrite.dll

    “urlrewrite”标签表明这个话题主要涉及URL重写技术,这是一项广泛应用于Web开发中的技术,尤其是对于ASP.NET、PHP、Java等平台。它通过定义一系列规则,将用户请求的实际URL转换为服务器内部处理的另一种形式,...

Global site tag (gtag.js) - Google Analytics