轻文章-使用URL Rewrite实现网站伪静态

案例来源:《轻量级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.

猜你喜欢

转载自blog.csdn.net/zsx0728/article/details/110110493