【Javaweb】利用urlRewrite插件实现网站的伪静态与aspx,jsp,php三版齐发的邪门歪道

所谓网站的伪静态其实也不是什么高深名词,就是将*.asp,*.aspx,*.jsp,*.php这种动态URL页面伪装成静态的HTML页面。因为网上大部分搜索引擎都会优先考虑收录静态的HTML页面,而不是这种动态的*.asp,*.aspx,*.jsp,*.php,但是我们不可能把动态的页面硬改成*.html,因为一些代码还是要在服务器上面跑,实际上,绝大部分网站都是动态的,互联网上的大部分网站都会考虑使用伪静态技术。在Javaee里面,可以利用urlRewrite这个小插件去实现。


一、基本目标

如下图,把网络工程中的所有jsp页面伪装成html页面,当然,原来的jsp页面还是存在的。就是你在地址栏输入1.html相当于访问1.jsp。

【Javaweb】利用urlRewrite插件实现网站的伪静态与aspx,jsp,php三版齐发的邪门歪道_第1张图片


二、制作过程

最终完成的网络工程目录结构图如下:

【Javaweb】利用urlRewrite插件实现网站的伪静态与aspx,jsp,php三版齐发的邪门歪道_第2张图片

1、新建一个网络工程,从网上搜索到urlrewritefilter-4.0.3.jar,在lib文件夹下面,这东西版本大于3.0即可,现在的最新版是urlrewritefilter-4.0.3.jar,以前的用得最多的版本是3.2.0但功能上没有任何区别。这东西的官网由于放在googlecode上面,所以无法访问,但没有关系,这东西一搜就一大把,肯定能够找到。

2、先在工程目录的根目录新建一个1.jsp。在上面乱写一些东西做伪装,挂羊头卖狗肉,说这是1.html,但实际是一个1.jsp。

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!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=utf-8">
<title>1.html</title>
</head>
<body>
1.html
</body>
</html>
3、之后新建web.xml,或者在web.xml里面加入如下的片段,如下的片段放在web.xml的任意一个位置都没有问题,但一定要放在所有的Servlet映射之前,否则可能会出现这样那样的问题,这里注意,我们现在是要把所有*.jsp的后缀映射成*.html,而不是在没有后缀Servlet后面加上一个.html,Servlet在网站中一般作为控制器,不允许别人随便访问,用户也基本看不到Servlet的处理过程。这段代码无须理解什么意思,复制粘贴就可以了。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<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>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
	</filter-mapping>
</web-app>
3、这样就配置好urlRewrite了,然后在于WEB-INF下面,也就是与web.xml同一个目录,新建一个映射urlrewrite.xml,这个文件是支持正则表达式的,对于正则表达式理解突破天际的天际可以自由发挥。不过一般记住如何把所有*.jsp的后缀映射成*.html的写法就可以了。代码如下所示:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
        "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
<urlrewrite decode-using="UTF-8">
	<rule>
	<!-- 用户在地址栏输入*.html全部通过forward指令跳转到*.jsp -->
		<from>/(\w*).html</from>
		<to type="forward">/$1.jsp</to>
	</rule>
</urlrewrite>
你也可以在下面多加几条规则,也就是多放几个rule节点<rule></rule>,把自己的网站伪装成*.aspx,*.jsp,*.php三版齐发,上面的$1表示替代本规则的第一个正则式(/w*),例如:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
        "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
<urlrewrite decode-using="UTF-8">
	<rule>
	<!-- 用户在地址栏输入*.html全部通过forward指令跳转到*.jsp -->
		<from>/(\w*).html</from>
		<to type="forward">/$1.jsp</to>
	</rule>
	<rule>
	<!-- 用户在地址栏输入*.aspx全部通过forward指令跳转到*.jsp -->
		<from>/(\w*).aspx</from>
		<to type="forward">/$1.jsp</to>
	</rule>
	<rule>
	<!-- 用户在地址栏输入*.php全部通过forward指令跳转到*.jsp -->
		<from>/(\w*).php</from>
		<to type="forward">/$1.jsp</to>
	</rule>
</urlrewrite>

运行效果如下:


然而,实际上整个工程目录就只有一个.jsp吐舌头,但是这样除了装逼之外没有任何用处,人家把1.jsp改成1.html好歹是为了搜索引擎更容易收录骂人。你学习怎么用asp.net,jsp,php写同一个网站,三修乃才是正途,这是邪门歪道!

你可能感兴趣的:(javaweb,插件,伪静态,urlrewrite,伪装后缀)