地址重写--Java中urlrewriter的使用
最近公司以前的一个项目需要升级改版,其中的一个模块是使用Struts2做的不需要改动,但是需要将其从之前的项目里面剥离出来,看了看官网,发现所有的链接访问的静态地址,以为是FreeMarker实现的,仔细研究了会发现不是那么回事,原来是伪静态,程序使用了urlrewriter。其实urlrewriter的使用很简单,看看下面你就明白了。
urlrewriter简介:url rewrite将我们的动态网页地址转化为静态的地址,如html、shtml,还可以隐藏网页的真正路径,比如:有时候需要将xxx.com/news/ type1/001.jsp 转化成显示路径为xxx.com/news_type1_001.jsp。
【第一步】下载jar包
在http://tuckey.org/urlrewrite/#download下载最新的jar文件,当前最新的是Beat3.2我下载的是urlrewritefilter-2.6.zip。解压得到urlrewrite-2.6.0.jar 和 urlrewrite.xml
【第二步】新建Web项目TestUrlRewrite,
在WebRoot下新建index.jsp,修改其代码如下所示:
- <%@ page contentType="text/html; charset=UTF-8"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>测试TestUrlRewrite</title>
- </head>
- <body>
- <%
- String id = (String) request.getParameter("id");
- out.println("<h3> the value is : " + id +" </h3> ");
- %>
- </body>
- </html>
【第四步】发布程序
将程序发布到Tomcat中,然后在浏览器输入如下地址:
http://localhost:8080/TestUrlRewrite/index.jsp?username=niejingyu,页面展示效果如图1所示:
【第五步】添加urlrewrite文件
将urlrewrite-2.6.0.jar复制到WebRoot\WEB-INF\lib下。
将urlrewrite.xml复制到WebRoot\WEB-INF下,其中urlrewrite.xml代码如下所示:
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.1//EN"
- "http://tuckey.org/res/dtds/urlrewrite3.1.dtd">
- <urlrewrite>
- <rule>
- <from>/(.*).html</from>
- <to>index.jsp?id=$1</to>
- </rule>
- </urlrewrite>
*.html 是一个正则表达式的串。如果你对这个不理解可以学习一下java中正则表达式的应用。
$1 也是一个正则表达式的语言匹配正则中的组捕获。
【第六步】修改web.xml文件
在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>
【第七步】重启tomcat
访问http://localhost:8080/TestUrlRewrite/2.html,页面效果如图所示:
在这里是匹配/(.*).html,将请求转发到index.jsp?id=$1。你还可以根据需要转到xxx.action?id=$1
转:http://xiaopihai.iteye.com/blog/384386
地址重写--Java中urlrewriter的使用的更多相关文章
- 如何重写Java中的equals方法
Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, double),boolean, char不是对象,其他的所有类型, ...
- 重写Java中包装类的方法
知识点一.Object类Object是所有类的父类.Object中的方法有:toString() 描述对象的信息,需要重写.System.out.println在打印对象的时候会默认调用对象的toSt ...
- 浅析 Java 中的继承和重写
浅析 Java 中的继承和重写 Java 中的构造方法不能被继承. Java 中 static 修饰的方法可以被继承,但不能被子类重写. Java 中 final 修饰方法不允许被子类重写,但是可以被 ...
- Java中的native方法
博客引用地址:Java中的native方法 今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解. 一. 什么是Native Method 简单地 ...
- java中equal方法总结
场景:本周在完成一个公司业务功能时,在判断是否为代叫单时调用了equal方法: PublishOrderType.HELP_ORDER.equals(valetOrderExtraInfoDO.get ...
- 转:Java中子类是否可以继承父类的static变量和方法而呈现多态特性
原文地址:Java中子类是否可以继承父类的static变量和方法而呈现多态特性 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明 ...
- JAVA中==与equals的区别
equals如果没有被重写的话,和==的作用是一样的,都是判断两个对象引用是否指向同一个地址.一般重写了equals()方法就表示比较它们“实际意义上相等”,比较的是内容,而不是引用地址.Java中S ...
- Java中会有内存泄露吗?
一.Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址.Java中对象是采用new或者反射的方法创建的, 这些对象的创建都是在堆(He ...
- java中equals和==的区别详解
java中的数据类型,可分为两类: 1.基本数据类型. byte,short,char,int,long,float,double,boolean这八大原始数据类型他们之间的比较,使用“==”,比较的 ...
随机推荐
- Linux Shell逻辑运算符和表达式详解
Shell 逻辑运算符涉及以下几种类型,只要适当选择,可以解决我们很多复杂的判断,达到事半功倍效果. 一.逻辑判断1.关于文件与目录的逻辑判断-f 常用.判断『文件』是否为普通文件,比如: if [ ...
- B树叶子节点split
一.B-Tree索引的分裂 1. 创建测试表 SQL> create table split_tab (id number, name varchar2(100)); 表已创建. SQL> ...
- MOUNT MACBOOK DISK (OSX / HFS+) ON UBUNTU 12.04 LTS WITH READ/WRITE
MOUNT MACBOOK DISK (OSX / HFS+) ON UBUNTU 12.04 LTS WITH READ/WRITE So you want to mount your HFS+ ( ...
- jQuery 弹出div层
目的:使用jQuery弹出一个div窗口:这种效果经常应用于页面内容的展示,登录效果的实现.其实,实现这种效果有好多种方式: 效果如下: 代码如下: <html> <head> ...
- Oracle11gRAC安装
安装Oracle RAC 一.硬件环境 ①用虚拟机搭建两台机器,操作系统都为: [root@node1 ~]# cat /etc/issue Red Hat Enterprise Linux Serv ...
- 应用Observer接口实践Observer模式
原文:http://zhangjunhd.blog.51cto.com/113473/68949/ 在Java中通过Observable类和Observer接口实现了观察者模式.Observer对象是 ...
- JPA字段映射(uuid,日期,枚举,@Lob)
转:http://www.cnblogs.com/tazi/archive/2012/01/04/2311588.html 主键: JPA主键的生成策略不像Hibernate那么丰富. @Id @Ge ...
- HTML之一天学会html(常用标签+网页架构)
1. 网页文件的创建 新建一个文本文件,将其命名为xxx.html或者xxx.htm(注意后缀名) 2. 简单的html页面的编写 在网页中都是通过标签来指定相应的显示内容,所有的页面内容都必须在 ...
- unity的坑
http://dearymz.blog.163.com/blog/static/20565742013341916919/ 编辑器: Hierarchy窗口中是场景中的Game Object列表 Pr ...
- [Redux] Generating Containers with connect() from React Redux (VisibleTodoList)
Learn how to use the that comes with React Redux instead of the hand-rolled implementation from the ...