文章目录

  • 基础介绍
  • 案例代码
    • urlrewrite.xml
    • userinf.jsp
    • 验证结果
  • 注意事项
  • 参考文档

案例来源:《轻量级Java EE企业应用实战(第4版)-Struts2+Spring4+Hibernate整合开发》,李刚编著

基础介绍

    伪静态的作用:将*.jsp、*.php这种动态URL伪装成静态的HTML页面,便于搜索引擎收录。
    实现思路:对于Java Web应用,可以通过Filter拦截所有发向*.html的请求,然后按某种规则将请求转发到实际的.jsp页面。本文使用UrlRewriteFilter模块实现伪静态功能,它是一个非常强大的工具,类似于Apache的mod_rewrite模块。
    简单的说,整个过程分为3步:
    1.将urlrewritefilter-4.0.3.jar放到WEB-INF/lib下,附jar包下载地址;
    2.WEB-INF/web.xml添加如下配置,启用URL Rewrite模块:

<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>

    3.在WEB-INF目录下添加urlrewrite.xml文件,该文件用于自定义伪静态映射规则。

案例代码

环境:

  • 操作系统centos 8
  • openjdk version “1.8.0_272”
  • apache-tomcat-8.5.59

    在本例中,.html的请求会被URL Rewrite过滤,如果命中urlrewrite.xml设定的规则,会跳转到userinf.jsp页面,同时向该页面传递相关参数。userinf.jsp模拟了一个显示用户信息的页面。

urlrewrite.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN""http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite><rule><!-- 所有配置如下正则表达式的请求 --><from>^/userinf-(\w*).html$</from><!-- 将被forward到如下jsp页面,其中$1代表上面第一个正则表达式所匹配的字符串 --><to type="forward">/userinf.jsp?username=$1</to></rule><rule><from>/1.html</from><to type="forward">/userinf.jsp?username=zsx0728</to></rule>
</urlrewrite>
userinf.jsp
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage="" %>
<%
//获取请求参数
String user = request.getParameter("username");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><%=user%>的个人信息</title>
</head>
<body>
<%
//此处应该通过数据库读取该用户对应的信息
//此处只是模拟,因此简单输出:
out.println("现在时间是:" + new java.util.Date() + "<br/>");
out.println("用户名:" + user);
%>
</body>
</html>
验证结果

    访问userinf-*.html,命中规则0,跳转到JSP页面,并将参数hehe传递至JSP页面。

    访问1.html,命中规则1,跳转到JSP页面,并将参数zsx0728传递至JSP页面。

注意事项

    1.注意各个文件和jar包的位置

    2.启动tomcat之后可以在本地浏览器输入http://localhost:8080/urlwrite/rewrite-status 查询转发状态。

参考文档

[1]李刚.轻量级Java EE企业应用实战(第4版)-Struts2+Spring4+Hibernate整合开发[M].电子工业出版社:北京,2014:136.
[2]Paul Tuckey.UrlRewriteFilter[EB/OL].http://www.tuckey.org/urlrewrite/,2020-01-01.

轻文章-使用URL Rewrite实现网站伪静态相关推荐

  1. 使用URL Rewrite实现网站伪静态

    下载urlwrite包 将urlrewrite-***.jar复制到web应用lib文件夹下 web.xml中配置URL Rewrite: 例: <filter> <filter-n ...

  2. java web 伪静态_【Java Web】使用URLRewrite实现网站伪静态

    大部分搜索引擎都会优先考虑收录静态的HTML页面,而不是动态的*.jsp.*.php页面.但实际上绝大部分网站都是动态的,不可能全部是静态的HTML页面,因此互联网上大部分网站都会考虑伪静态--就是将 ...

  3. java web 项目伪静态_【Java Web】使用URLRewrite实现网站伪静态

    大部分搜索引擎都会优先考虑收录静态的HTML页面,而不是动态的*.jsp.*.php页面.但实际上绝大部分网站都是动态的,不可能全部是静态的HTML页面,因此互联网上大部分网站都会考虑伪静态--就是将 ...

  4. url rewrite 实现url地址的伪静态化

    (1) 在Java web服务器内使用url rewrite(实现url地址的伪静态化) 每个网页或请求都是一个url地址,一般,这个地址可能是.do,.page,.action之类的并加上'?'号. ...

  5. IIS安装和使用URL重写工具-URL Rewrite

    下载和安装URL Rewrite IIS8默认是没有安装URL重写工具的,必须要自己下载安装. 如果IIS上默认有安装Web平台安装程序,我们可以使用平台自动安装URL Rewrite重写工具,打开I ...

  6. 在ASP.NET MVC中使用IIS级别的URL Rewrite

    在ASP.NET MVC中使用IIS级别的URL Rewrite 原文 在ASP.NET MVC中使用IIS级别的URL Rewrite 大约一年半前,我在博客上写过一系列关于URL Rewrite的 ...

  7. 艾伟:重提URL Rewrite(3):在URL Rewrite后保持PostBack地址

    在进行了URL Rewrite之后,经常会遇到的问题就是页面中PostBack的目标地址并非客户端请求的地址,而是URL Rewrite之后的地址.以上一篇文章中的重写为例: <rewriter ...

  8. 重提URL Rewrite(3):在URL Rewrite后保持PostBack地址(转老赵blog)

    在进行了URL Rewrite之后,经常会遇到的问题就是页面中PostBack的目标地址并非客户端请求的地址,而是URL Rewrite之后的地址.以上一篇文章中的重写为例: <rewriter ...

  9. 无法显示服务器级别,URL Rewrite会导致“无法显示此页面”

    我已经在服务器级别实施了URL重写,因为我想将符合特定规则的所有HTTP和HTTPS请求重定向到我的实际站点,并且重定向只应发生如果用户正在击中我的实际站点.规则最初工作正常.但是,在我的实际站点上反 ...

  10. 网站制作---网站伪静态的介绍

    1.网站制作学习笔记 网站伪静态的介绍 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com  ---------------- ...

最新文章

  1. 自适应采样非局部神经网络的点云鲁棒操作
  2. linux nmcli源码,Linux上利用nmcli命令创建网络组(示例代码)
  3. 通过管道传输快速将MySQL的数据导入Redis(自己做过测试)
  4. android 图片变颜色代码,Android -对图片Drawable进行变色
  5. 计算机序号函数,EXCEL函数自动编号/编码单条件和多条件的几种方法
  6. 基于Matlab的三维胖射线追踪算法
  7. 1.10 长短期记忆(LSTM)
  8. PHP报错:Malformed UTF-8 characters, possibly incorrectly encoded
  9. 【vue技术】vue宠物领养管理系统
  10. 充电宝国产品牌推荐,国产充电宝排名
  11. Web安全——同源策略理解
  12. 异常处理(二)---------Field * in * required a bean of type '*' that could not be found.
  13. 高数 | chx和shx分别是什么
  14. appstore上架所需截屏的制作方法
  15. (SSM解析错误)$%7BpageContext.request.contextPath%7D/account/save
  16. linux添加防护墙规则rc.local,Linux环境下iptables防火墙基本用法演示
  17. Java 字节数组流(ByteArrayInputStream 和 ByteArrayOutputStream)
  18. “AI+”改变世界 不同领域的5大人工智能趋势
  19. [Intensive Reading]图像生成:GAN
  20. 一条坎坷的保研路:北理、天大、南开、厦大、川大、支保

热门文章

  1. dedecms采集经验
  2. SCSI 设备热插拔
  3. 国际信息安全管理标准体系--BS7799
  4. S40后台运行权限破解详尽图文
  5. Exception occurred. (Exception from HRESULT: 0x80020009 (DISP_E_EXCEPTION)) | nuget管理器所引发的的错误
  6. aspectjweaver:关于Spring注解AOP的注意点
  7. C#【多线程篇】BackgroundWorker类使用总结
  8. 鼠标单击变双击问题排查
  9. EditPlus4.0汉化+破解注册
  10. 《代码整洁之道》阅读分享