UrlRewrite:

UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址,类似于Apache的mod_rewrite。将我们的动态网页地址转化为静态的地址,如html、shtml,还可以隐藏网页的真正路径,

比如:有时候需要将xxx.com/news/ type1/001.jsp 转化成显示路径为xxx.com/news_type1_001.html

有点如下:

一:提高安全性,屏蔽内部的url结构.

二:美化URL

三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息.


下载地址:

官网下载: http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/4.0/index.html#filterparams


实例展示

实例应用版本urlrewritefilter-4.0.3. Tomcat服务器端口定制为80

1. 创建web项目,增加 urlrewritefilter-4.0.3.jar 到 WEB-INF/lib

2. 在WEB-INF/web.xml 增加urlrewritefilter过滤器 (near the top above any servlet mappings)

<?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"><!-- 加到任何servlet映射的顶部,不然可能有些路径不能被过滤到http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html--><filter><filter-name>UrlRewriteFilter</filter-name><filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class><!-- 设备文件重加载间隔 (0默示随时加载, -1默示不重加载, 默认-1) --><init-param><param-name>confReloadCheckInterval</param-name><param-value>60</param-value></init-param><!-- 自定义配置文件的路径,是相对context的路径,(默认位置 /WEB-INF/urlrewrite.xml) --><init-param><param-name>confPath</param-name><param-value>/WEB-INF/urlrewrite.xml</param-value></init-param><!-- 设置日志级别(将被记录到日志中)可以为: TRACE, DEBUG, INFO (default), WARN, ERROR, FATAL, log4j, commons, slf4j,比如 sysout:DEBUG(设置到控制台调试输出级别) (默认级别 WARN) --><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><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher></filter-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

如果觉得/*这样的通配,并不符合我的预期,我只想对部分路径进行URL的重写,/*可能会造成我想象不到的或者是许微不足道的性能浪费.我把它改成了我需要的:

    <filter-mapping><filter-name>UrlRewriteFilter</filter-name><url-pattern>/member/*</url-pattern></filter-mapping><filter-mapping><filter-name>UrlRewriteFilter</filter-name><url-pattern>/article/*</url-pattern></filter-mapping>

更多请参考: http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html

3. 因为上面我们通过confPath定义了配置文件的路径,其实该默认位置就是在/WEB-INF/urlrewrite.xml,为了更能说明问题,所以显示指定下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewritePUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN""http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd"><urlrewrite><rule><from>/page/(.*).html</from>  <to>/index.jsp?page=$1</to> </rule><rule><from>^/user/([a-z]+)/([0-9]+)$</from><to>/index.jsp?nickname=$1&amp;age=$2</to></rule>
</urlrewrite>

此时我们就可以通过url进行模拟了.

注意:

1.urlrewrite.xml是utf-8.所以如果你要在rule上加note标签为中文的话,也一定是要utf-8.

2.UrlRewriteFilter 最好是配置在web.xml的前面filter上,不然有可能对有些url转变失去作用.

3.urlrewrite属性:有仅只有一个,rule属性::至少一个.

4.在写rule的时,如果有多个参数时,中间的连接符号&应该是&

5.rule是url重写规则,from是显示出来的地址,to是映射的实际地址,$1是重写参数,它的值与from中的正则表达式是一一对应,可以为多个,()里是匹配的正则表达式, 在正则表达式^指定字符的串开始,$为指定结束

6.对于中文参数要使用(.*)作为参数转义.

4.重写url演示

实例1

<rule><from>/page/(.*).html</from>  <to>/index.jsp?currentPage=$1</to>
</rule>

index.jsp中的内容

  <body><%String current = request.getParameter("currentPage");%>           当前页码<%=current %></body>

执行效果如下:

实例2

Rule规则

<rule><name>World Rule</name><from>^/user/([a-z]+)/([0-9]+)$</from><to>/index.jsp?nickname=$1&amp;age=$2</to>
</rule>

index.jsp中的内容

<body><%String username = request.getParameter("nickname");int age = Integer.parseInt(request.getParameter("age"));%>           用户名: <%=username %> 年龄: <%=age %> <br>
</body>

执行效果如下:

所以,当我们在url中输入”http://localhost/urlrewrite/user/dennisit/23”时,实际执行的就是”http://localhost/urlrewrite/index.jsp?nickname=dennisit&age=23”

实例3

同理rule规则如下时

<rule><from>^/page/(.*)$</from><to type="redirect">/page/$1.action</to>
</rule>

这样我访问的:http://localhost/urlrewrite/page/test

则跳转到:    http://localhost/urlrewrite/page/test.action

实例4
Rule规则

    <rule><from>^/([a-z]+)/([a-z]+)/([a-z]+)$</from><to>/$1.do?method=$2&amp;uuid=$3</to></rule>

在index.jsp中添加如下链接:

    <a href="process/show/index">跳转</a>

当点击该链接,

地址栏中显示url是:http://localhost/urlrewrite/process/show/index,

其实际执行路径是:http://localhost/urlrewrite/process.do?method=show&uuid=index

转载请注明出处:[http://www.cnblogs.com/dennisit/p/3177108.html]

转载于:https://www.cnblogs.com/lanshangyi/p/6251248.html

【转】伪静态URLRewrite学习笔记相关推荐

  1. 伪静态URLRewrite学习笔记

    UrlRewrite: UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址,类似于Apache的mod_rewrite.将我们的动态网页地址转化为静态的地址,如ht ...

  2. Nginx学习笔记09——URLRewrite伪静态

    URLRewrite 伪静态配置 因为jsp获取url参数很方便,所以需要将tomcat服务器上的index.html转为jsp格式的,方式是在html文件开头加上<%@ page conten ...

  3. php框架费尔康,GitHub - majixian/study-phalcon: phalcon(费尔康)框架学习笔记

    phalcon(费尔康)框架学习笔记 以实例程序invo为例(invo程序放在网站根目录下的invo文件夹里,推荐php版本>=5.4) 环境不支持伪静态网址时的配置 第一步: 在app\con ...

  4. php怎么自己写框架,PHP学习笔记,自己动手写个MVC的框架

    最新在大家自己的博客的过程中,发现各种开源的博客系统都或多或少的用起来别扭.于是想动手自己写个博客系统.既然写,就想好好写.那就先写个MVC框架.一点一点来.写的过程中有很多想法.还希望大家能够多多指 ...

  5. SQLmap学习笔记

    SQLmap参数学习笔记 文章目录 SQLmap参数学习笔记 简介 Options - 设置 显示等级 Target - 目标 对POST请求进行注入 HTTPS检测 Request - 请求 HTT ...

  6. anaconda中安装xgboost_ML学习笔记之Anaconda中命令形式安装XGBoost(pip install)

    0x00 概述 在没有安装XGBoost之前,import xgboot会出错,如下: # ModuleNotFoundError: No module named 'xgboost' 0x01 安装 ...

  7. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  8. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  9. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

最新文章

  1. python中文编辑器推荐-八款Python编辑器对比介绍推荐
  2. JAVA字符串前补零和后补零的快速方法
  3. mysql ppl_浅析pplx库的设计与实现。
  4. WinCE5.0如何安装.NET3.5
  5. spy导入数据到oracle,运用SchemaSpy逆向工程制作数据库文档
  6. InfoQ中文站2015年度优秀社区编辑评选揭晓
  7. 【elasticsearch】 es 路由错误 不到 也可能 查询到的分析
  8. 禁用计算机管理器,任务管理器被禁用怎么关闭adobe
  9. 敏捷开发一千零一问系列之十一:需求谁做主?
  10. java环境变量完美配置教程
  11. xml转PDF(xmlxslt-」fo-」pdf)_完整项目_CodingPark编程公园
  12. Backtrader量化平台教程(一):backtrader的整体框架
  13. Java 并发编程艺术 读书笔记
  14. 【css】巧用border制作三角形
  15. 成功解决:fatal: detected dubious ownership in repository at ‘E:/workspace/CSMarket‘。如何使用git工具通过命令行的形式
  16. 数千个数据库、遍布全国的物理机,京东物流全量上云实录 | 卓越技术团队访谈录...
  17. https证书不安全是什么原因?
  18. 时间复杂度的计算详解
  19. Unity错误解决GetType().Name+“OnInspectorGUI must call ApplyRevertGUI to avoid unexpected behaviour.“
  20. Ubuntu系统下C语言编译以及Makefile编译C语言程序

热门文章

  1. linux100day(day6)--shell脚本简单逻辑
  2. Ubuntu系统---以virtualenv方式安装Tensorflow-CPU
  3. VS2017中的附加到进程
  4. require(),include(),require_once()和include_once()区别
  5. c#中将WM_CLOSE消息发送到没有窗口的进程的方法
  6. DC保存至BMP图像
  7. JSON解析的几种方式
  8. 事件委托 EventHandler 。
  9. 多线程—生产者消费者模式、银行家算法
  10. IOS仿微信朋友圈的日期处理