使用URL Rewrite实现网站伪静态(java web)
今天上这学期第一节java web课程时,老师说,“像以.html为后缀的网页都是静态网页。”仔细思考之下,个人认为稍微欠妥。其实也是有可能是一个伪静态网页的。
在这里,得先说明白的是:我们为什么需要实现网站的伪静态呢?
我们做动态网页一般不是.jsp,就是.php。但是对于大部分的搜索引擎来说,它们会首先收录静态的HTML页面,其次才是动态的页面,所以我们需要将这些动态的页面伪装成静态的HTML页面。
实现步骤如下:
1、登录http://www.tuckey.org/urlrewrite/站点下载URL Rewrite的最新版本;
2、将urlrewritefilter-N.N.N.jar放到WEB-INF目录下的lib文件夹中;
3、在web.xml文件中增加如下配置片段:
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<!--配置Url Rewrite的Filter拦截所有请求-->
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
上面的配置片段指定使用URL Rewrite Fliter拦截所有的用户请求。
4、在应用的WEB-INF路径下增加urlrewrite.xml文件,该文件定义了伪静态映射规则,这份伪静态规则
是基于正则表达式的。(注意:千万别把“urlrewrite”写成“urlwrite”,本人就是因为如此,调试了一晚上,才找出原因。)
urlwrite.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
"http://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>
</urlrewrite>
上面的规则文件中只定义了一个简单的规则:所有发向/userinf-(\w*).html的请求都将被forward
到user.jsp页面,并将(*w)正则表达式所匹配的内容作为username参数值。根据这个伪静态规则,
我们应该为该应用提供一个userinf.jsp页面,该页面只是一个模拟了一个显示用户信息的页面,
该页面代码如下。
userinf.jsp:
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="utf-8"%>
<%
//获取请求参数
String user=request.getParameter("username");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title><%=user%>的个人信息</title>
</head>
<body>
<%
//此处应该通过通过数据库读取该用户对应的信息
//此处只是模拟,因此简单输出
out.println("大家好,我是:"+user+"<br/>");
out.println("此刻时间是:"+new java.util.Date());
%>
</body>
</html>
经过上面的配置后,在地址栏输入:userinf.jsp后,得到如下的结果是:
而输入:userinf-bobby.html后,得到的结果却是:
说明:这篇文章参考于李刚老师编著的《轻量级Java EE企业应用实战》(第三版)