公司有时候要写一些小的项目,而用java搭建web的一个缺(特)陷(征)就是动态网页的后缀名.jsp。没办法啊,就是不能以.jsp结尾,原因有几个:隐藏服务端技术;吸引爬虫;对用户更友好;等等。如果全都用Servlet,那我选择狗带。
实际上,Spring MVC已经很好地解决了这个问题(不要问我怎么解决,RequestMapping注解),但由于项目很小,使用Spring简直就是为了Spring而Spring,所以还是传统的jsp+Servlet开发模式。那么,怎么解决我们的问题呢?答案很简单,重写Url。怎么重写?用Url Rewrite Filter!
官网:http://www.tuckey.org/urlrewrite/
还有一篇文章写得不错:http://blog.csdn.net/kimsoft/article/details/4194853
-
使用方法
导入jar包,在web.xml里配置一个filter,在完善配置文件urlrewrite.xml。
官方压缩包里面有下面几个文件,全部放在WEB-INF文件夹下
-
配置文件
官方配置里说明的很详细,这里我分享一下我的配置。
-
web.xml
<welcome-file-list>
<welcome-file>/jsp/index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/jsp/error.jsp</location>
</error-page>
<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>*.html</url-pattern>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
-
urlrewrite.xml
<rule>
<from>/(.*).html</from>
<to>/jsp/$1.jsp</to>
</rule>
<rule>
<from>.jsp</from>
<to>/jsp/error.jsp</to>
</rule>
-
- 我将index.jsp和error.jsp放入/WebRoot/jsp文件夹中,上述配置实现了访问.jsp结尾的网页资源时都报404,而访问.html的网页资源时,都去访问jsp文件夹下的同名jsp文件。