JAVA入门学习:网站的URL重写

  本文来源:http://www.zretc.com/technologyDetail/462.html

  Java UrlRewrite 的使用实例

  URL重写

  现在大部分的网站和商城都会使用到URL重写,接触到这个,也是因为正在做的电子商务商城。URL重写,是将原有的URL采用另一种规则来显示,使得用户方便访问同时也屏蔽一些信息。

  在此说下它的好处,在开发过程中,经常会遇到一些带了一大堆参数的URL,这样子,一方面显得烦乱,另一方面,一些信息直接显示在URL上,会有些安全性问题。使用URL重写,可以使带有参数的URL以一种较规则的方式体现,如:

  /demoAction?id=1 ==> /demo1.html

  它也将本该在URL上显示出来的传参给隐蔽起来,隐藏了技术实现和敏感信息。另外,URL重写,也有利于搜索引擎的访问。

  最近项目接触到的URL重写采用的是UrlRewrite,它主要是采用Filter技术在用户请求的时候对访问的URL进行处理,来实现重写的作用。

  以下是UrlRewrite的使用实例(个人认为,UrlRewrite的官方文档写的还是比较全面易懂的)

  UrlRewrite的导入:

  UrlRewrite的导入非常简单,首先需在项目的lib文件夹中加入urlrewrite-3.2.0.jar包,然后,在web.xml中声明Filter

  ?

  1 2UrlRewriteFilter3org.tuckey.web.filters.urlrewrite.UrlRewriteFilter456UrlRewriteFilter7/*8REQUEST9FORWARD10

  声明完filter后,需要在WEB-INF目录下新建一个urlrewrite.xml文件

  ?

  12345 1 2 56 7 8

  该文件是UrlRewrite的规则制定文件,后续主要通过配置它来进行URL的重写。

  至此,UrlRewrite的导入就完成了

  UrlRewrite 导入成功后,接下来主要通过在urlrewrite.xml添加规则,就能实现URL的重写了。在此列举一些常用的规则。

  ?

  1 12^/demo/(w+).html$3/Struts/$14

  rule 是urlrewrite下的子节点,是urlrewrite的主要规则节点,在它里面包含from 和to两个子节点,from表示请求的URL,to表示将转到的真实的URL。关于from,UrlRewrite有两种匹配的模式,一种是正则表达式匹配,一种的通配符匹配,如上就是正则表达式匹配。当进行匹配的时候,匹配部分的正则可以被提取为参数进行传递

  如上规则设置,当客户端访问的网址是http://127.0.0.1:8080/Struts/demo/hello.html 的时候,因为匹配部分是hello,所以它跳转到的是http://127.0.0.1:8080/Struts/hello 上。当网址规则中有多个正则的时候,匹配的参数也会随之增加。如:

  ?

  1 12^/demo1/(w+)/(w+).html$3/Struts/$1.action?age=$24

  rule 的默认匹配方式是正则表达式,但是,有时候也可以以通配符的形式进行匹配。在编写规则的时候,只需要在rule添加一个match-type="wildcard" 的属性即可。

  ?

  1 12/demo2/*/*3/Struts/$1.action?age=$24

  关于to节点,UrlRewrite提供了多种网址跳转方式,如forward和redirect,这两种方式,和大部分MVC框架提供的功能一样,在此不再赘述。

  除了支持指定规则的跳转外,UrlRewrite还支持当匹配规则的时候执行某个对象的某个函数

  ?

  1 12^/demo3/(w+)/(w+).html$34/Struts/$1.action?age=$25

  如上述设置,要实现匹配规则是执行某个函数,需要添加多一个run节点,在节点上面添加对应的类属性和方法属性。同时,对应的类必须继承RewriteRule类,执行的方法必须传入两个参数,分别是HttpServletRequest 和HttpServletResponse

  ?

  12345678910 1 public class Demo extends RewriteRule{ 2 3 public void log(HttpServletRequest request,HttpServletResponse response){ 4 System.out.println("haha1"); 5 } 6 7 public void log2(HttpServletRequest request,HttpServletResponse response){ 8 System.out.println("haha2"); 9 } 10 }

  这样,当客户端输入的网址第一次匹配到指定规则的时候,UrlRewrite就会执行对应的函数,该函数只在第一次匹配成功的时候执行。

  如果想要每次匹配规则都执行某函数,可以在urlrewrite添加class-rule子节点,该节点设置后,每次匹配规则后,指定的函数都会执行一次。

  ?

  1 1

  除了对请求的URL进行处理外,UrlRewrite还提供了对返回页面中的地址进行重写的功能。使用rule是对用户输入的url进行处理,但是开发过程中,经常需要在页面中也添加一些网址请求,UrlRewrite可以通过规则,对页面中的网址也进行重写。如:

  ?

  1 12/(w+).action?id=(w+)$3/$1.html4

  在UrlRewrite中添加该规则后,我们在页面中原本的地址是

  可是在页面中显示却成了如下:

  这样可以隐藏了许多开发中的技术,较为安全。

  以上,就是UrlRewrite的一些常见的用法。关于UrlRewrite,网上也有人说这个会影响性能,因为在每次请求的时候都需要经过换一次过滤,但是这个还是要见仁见智,毕竟,使用URL重写,对网址还是有好处的。

  了解更多JAVA入门学习、PHP入门学习等知识欢迎来中软国际教育集团技术知识库!

时间: 2024-11-16 20:19:05

JAVA入门学习:网站的URL重写的相关文章

java入门学习:Java中的main()方法详解

本文来源:http://www.zretc.com/technologyDetail/445.html 在Java入门学习中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这

推荐五个java基础学习网站,小白必备

不知道去哪找java基础资料?推荐几个学习网站,小白必备 Java经过20多年的发展,仍然是世界上最受欢迎的编程语言之一,有无限多种方法使用Java.拥有庞大的客户群.并且java应用范围很广,基本只要与互联网有关的东西都能与java扯上关系,java于我们的生活息息相关,就像空气一般,存在于身边但让人不易发现,但偏偏让人们的生活离不开它. 所以学习Java的人也是很多的,我接下来推荐几个好用的java学习网站: 1.菜鸟教程 菜鸟教程可以说是很多人的入门网站,我当初就是看这个入门开始了解jav

Java入门学习教程视频

对于Java入门基础学习是必要,特别面向对象的学习,是基础也是掌握Java及运用的核心部分! 以下提供两个学习Java入门材料, http://www.jikexueyuan.com/ 极客学院,基础入门的一些知识的实践操作视频教程,简洁易懂 http://www.runoob.com/java/java-tutorial.html Java菜鸟教程,对于java语法了解是很有帮助的 通过以上学习,对Java就也个比较基础认识,也可使用工具进行一些简单编程操作.

Java入门学习知识点汇总--第一部分

Java入门重要知识点在这里总结一下,以方便日后复习,这部分内容主要有:变量和常量,常用的运算符,流程控制语句,数组,方法这些内容 一.变量和常量 1.Java关键字 先贴张图: 所有关键字区分大小写. 2.标识符 标识符就是用于给 Java 程序中变量.类.方法等命名的符号. 注意几条规则: 标识符可以由字母.数字.下划线(_).美元符($)组成,但不能包含 @.%.空格等其它特殊字符,不能以数字开头. 标识符不能是 Java 关键字和保留字,但可以包含关键字和保留字. 标识符是严格区分大小写

java入门学习之路

java是面向对象的编程,个人觉得记忆比较重要. 第一阶段 java基础部分 unix开发环境 熟练掌握开发中常用的操作系统linux的安装及使用:掌握文件系统.网络.用户管理方法:能熟练使用vi和vim进行文件编辑:能在unix环境下进行文件查找.权限控制.能熟练配置用户使用环境及开发生产环境. (1)java基础编程 了解java的运行环境,java的加载机制及内存分配使用原理:掌握类和对象的关系.对象和引用的关系:理解数组的本质,掌握数组的使用. (2)java高级编程 深入了解java的

java入门学习(二)

一.类和对象 1.开篇瞎BB 物以类聚. 世间万物皆对象,对象是能接触到的实体.类是一组有相同属性和方法的对象的集合,或者说它们的特征提取,类是一种抽象的概念.类由属性和方法组成,属性是它的各种静态的特征,方法是它能干啥.<易>有云,“物以类聚,人以群分”. 打个比喻,有一群人都在追一个很可爱的姑娘.这群人可以抽象出一个类,他们有相同的属性,比如都喜欢这姑娘,都是男孩子.他们有一些相同的方法,什么送花儿呀,请吃饭呀,请看电影呀,陪姑娘聊天呀.所以呀,他们是一个类.而单独的一个人就是一个对象,这

Java入门学习周记week01

0.我为什么要写周记 作为一名Java初学者,我深知总结复习的重要性.我认为学习就是一个积累的过程. 所以我决定在这里记录下我每周学习的内容和一些总结,为以后的自己提供一些参考. 1.Java语言跨平台原理 平台:指的是操作系统(Windows,Linux,Mac) 跨平台:Java程序可以在任意操作系统上运行 一次编写到处运行即java的.class程序可以在不同操作系统上均可以运行. (java的.class文件相当于Windows中的.exe文件,是可执行的程序) 原理:实现跨平台需要依赖

Java入门学习笔记(0)——认识变量

HelloWorld 1 //HelloWorld.java 2 3 public class HelloWorld { 4 public static void main (String[] args) { 5 System.out.println("Hello,World!"); 6 } 7 } 基础不牢,地动山摇.学习还是从“HelloWorld”开始吧! 第一个程序:1.编写并保存源代码<HelloWorld.java> 2.编译<javac  HelloWo

java入门学习笔记之1(类的定义,代码的编译执行)

这篇文章讲解Java代码的基本执行过程 我们先抛开各种JAVA IDE,开发工具,只使用文本编辑器,以突出最本质的东西. 在Linux环境下,我们编辑一个文件: vim HelloWorld.java 编辑如下代码: 1 public class HelloWorld{ 2 String name; 3 public HelloWorld(String name){ 4 this.name = name; 5 } 6 public void pHelloWorld(){ 7 System.out