利用Filter实现java web 伪静态

可以利用Filter过滤器进行拦截请求,处理url后,然后转发(forward)到实际的地址。利用开源项目 urlrewrite 可以很方便的实现伪静态。

下载:urlrewritefilter-4.0.3.jar放到WEB-INF\lib目录中,然后在web.xml添加过滤配置

<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-INF下放入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>
        <note>
            The rule means that requests to /test/status/ will be redirected to /rewrite-status
            the url will be rewritten.
        </note>
        <from>/index([0-9]+).html</from>
        <to type="forward">/index.jsp?id=$1</to>
    </rule>


    <outbound-rule>
        <note>
            The outbound-rule specifies that when response.encodeURL is called (if you are using JSTL c:url)
            the url /rewrite-status will be rewritten to /test/status/.

            The above rule and this outbound-rule means that end users should never see the
            url /rewrite-status only /test/status/ both in thier location bar and in hyperlinks
            in your pages.
        </note>
        <from>/rewrite-status</from>
        <to>/test/status/</to>
    </outbound-rule>

</urlrewrite>

重启tomcat后访问index1.html其实就是访问的index.jsp,规则用正则随便定义规则即可。

index.jsp

<%@ page contentType="text/html;charset=GBK" language="java" %>

<html>
	<head>
		<title>动态属性标签的练习</title>
	</head>
	<body>
		sadas <%=request.getParameter("id")  %>
	</body>
</html>


你可能感兴趣的:(利用Filter实现java web 伪静态)