轻文章-使用URL Rewrite实现网站伪静态
文章目录
- 基础介绍
- 案例代码
- 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实现网站伪静态相关推荐
- 使用URL Rewrite实现网站伪静态
下载urlwrite包 将urlrewrite-***.jar复制到web应用lib文件夹下 web.xml中配置URL Rewrite: 例: <filter> <filter-n ...
- java web 伪静态_【Java Web】使用URLRewrite实现网站伪静态
大部分搜索引擎都会优先考虑收录静态的HTML页面,而不是动态的*.jsp.*.php页面.但实际上绝大部分网站都是动态的,不可能全部是静态的HTML页面,因此互联网上大部分网站都会考虑伪静态--就是将 ...
- java web 项目伪静态_【Java Web】使用URLRewrite实现网站伪静态
大部分搜索引擎都会优先考虑收录静态的HTML页面,而不是动态的*.jsp.*.php页面.但实际上绝大部分网站都是动态的,不可能全部是静态的HTML页面,因此互联网上大部分网站都会考虑伪静态--就是将 ...
- url rewrite 实现url地址的伪静态化
(1) 在Java web服务器内使用url rewrite(实现url地址的伪静态化) 每个网页或请求都是一个url地址,一般,这个地址可能是.do,.page,.action之类的并加上'?'号. ...
- IIS安装和使用URL重写工具-URL Rewrite
下载和安装URL Rewrite IIS8默认是没有安装URL重写工具的,必须要自己下载安装. 如果IIS上默认有安装Web平台安装程序,我们可以使用平台自动安装URL Rewrite重写工具,打开I ...
- 在ASP.NET MVC中使用IIS级别的URL Rewrite
在ASP.NET MVC中使用IIS级别的URL Rewrite 原文 在ASP.NET MVC中使用IIS级别的URL Rewrite 大约一年半前,我在博客上写过一系列关于URL Rewrite的 ...
- 艾伟:重提URL Rewrite(3):在URL Rewrite后保持PostBack地址
在进行了URL Rewrite之后,经常会遇到的问题就是页面中PostBack的目标地址并非客户端请求的地址,而是URL Rewrite之后的地址.以上一篇文章中的重写为例: <rewriter ...
- 重提URL Rewrite(3):在URL Rewrite后保持PostBack地址(转老赵blog)
在进行了URL Rewrite之后,经常会遇到的问题就是页面中PostBack的目标地址并非客户端请求的地址,而是URL Rewrite之后的地址.以上一篇文章中的重写为例: <rewriter ...
- 无法显示服务器级别,URL Rewrite会导致“无法显示此页面”
我已经在服务器级别实施了URL重写,因为我想将符合特定规则的所有HTTP和HTTPS请求重定向到我的实际站点,并且重定向只应发生如果用户正在击中我的实际站点.规则最初工作正常.但是,在我的实际站点上反 ...
- 网站制作---网站伪静态的介绍
1.网站制作学习笔记 网站伪静态的介绍 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com ---------------- ...
最新文章
- 自适应采样非局部神经网络的点云鲁棒操作
- linux nmcli源码,Linux上利用nmcli命令创建网络组(示例代码)
- 通过管道传输快速将MySQL的数据导入Redis(自己做过测试)
- android 图片变颜色代码,Android -对图片Drawable进行变色
- 计算机序号函数,EXCEL函数自动编号/编码单条件和多条件的几种方法
- 基于Matlab的三维胖射线追踪算法
- 1.10 长短期记忆(LSTM)
- PHP报错:Malformed UTF-8 characters, possibly incorrectly encoded
- 【vue技术】vue宠物领养管理系统
- 充电宝国产品牌推荐,国产充电宝排名
- Web安全——同源策略理解
- 异常处理(二)---------Field * in * required a bean of type '*' that could not be found.
- 高数 | chx和shx分别是什么
- appstore上架所需截屏的制作方法
- (SSM解析错误)$%7BpageContext.request.contextPath%7D/account/save
- linux添加防护墙规则rc.local,Linux环境下iptables防火墙基本用法演示
- Java 字节数组流(ByteArrayInputStream 和 ByteArrayOutputStream)
- “AI+”改变世界 不同领域的5大人工智能趋势
- [Intensive Reading]图像生成:GAN
- 一条坎坷的保研路:北理、天大、南开、厦大、川大、支保
热门文章
- dedecms采集经验
- SCSI 设备热插拔
- 国际信息安全管理标准体系--BS7799
- S40后台运行权限破解详尽图文
- Exception occurred. (Exception from HRESULT: 0x80020009 (DISP_E_EXCEPTION)) | nuget管理器所引发的的错误
- aspectjweaver:关于Spring注解AOP的注意点
- C#【多线程篇】BackgroundWorker类使用总结
- 鼠标单击变双击问题排查
- EditPlus4.0汉化+破解注册
- 《代码整洁之道》阅读分享