使用URL Rewrite实现网站伪静态(java web)

使用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企业应用实战》(第三版)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值