在struts2中实现去掉后缀及url重写
来源:百度文库 编辑:神马文学网 时间:2024/04/28 06:04:26
首先,这要用到两个软件包,一个是SmartUrls(Struts2的插件,下载地址:http://code.google.com/p/smarturls-s2/downloads/list),还有就是urlrewritefilter(下载地址:http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip).
要想去掉struts2的后缀,就要这样配置filter:
struts2 org.texturemedia.smarturls.SmartURLsFilter
用这个代替struts2的核心过滤器,FilterDispatcher。不必担心struts2不起作用了,因为这个过滤器是继承自FilterDispatcher的。同时在struts.properties中加入struts.action.extension= ,不设任何值。
然后就是配置UrlRewriteFilter,如下
UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
在配置filter-mapping的时候,注意urlrewritefilter的应该在前面。然后urlrewritefilter的重写该怎么用大家可以参看文档,这里就不再赘述。
当使用时发现重写后,filterChain上只有一个urlrewritefilter,而没有经过smartUrls就发到了请求的资源,得到的自然是一个404错误。于是我参看urlrewritefilter的源代码发现,如果重写url成功的话,将会调用RequestDispatcher的forward方法转发到资源,而重写不成功或者是没有重写才会调用filterChain.dofilter。所以struts2的filter-mapping应该这样配置
struts2 /* FORWARD
然后就 OK 了
最后说明一点,这要在支持servlet2.4以上规范的容器中才气作用,因为servlet2.3规范里面,过滤器只支持request过滤,不支持转发之类的过滤
要想去掉struts2的后缀,就要这样配置filter:
用这个代替struts2的核心过滤器,FilterDispatcher。不必担心struts2不起作用了,因为这个过滤器是继承自FilterDispatcher的。同时在struts.properties中加入struts.action.extension= ,不设任何值。
然后就是配置UrlRewriteFilter,如下
在配置filter-mapping的时候,注意urlrewritefilter的应该在前面。然后urlrewritefilter的重写该怎么用大家可以参看文档,这里就不再赘述。
当使用时发现重写后,filterChain上只有一个urlrewritefilter,而没有经过smartUrls就发到了请求的资源,得到的自然是一个404错误。于是我参看urlrewritefilter的源代码发现,如果重写url成功的话,将会调用RequestDispatcher的forward方法转发到资源,而重写不成功或者是没有重写才会调用filterChain.dofilter。所以struts2的filter-mapping应该这样配置
然后就 OK 了
最后说明一点,这要在支持servlet2.4以上规范的容器中才气作用,因为servlet2.3规范里面,过滤器只支持request过滤,不支持转发之类的过滤
在struts2中实现去掉后缀及url重写
在JAVA WEB中使用URL重写
技巧/诀窍:在ASP.NET中重写URL
UrlRewritingNet 完美实现.NET URL重写
.net 2.0的URL重写导致的Bug及...
在ASP.Net2.0中使用UrlRewritingNet实现链接重写 - Web.网际浪...
在ASP.Net2.0中使用UrlRewritingNet实现链接重写 - Web.网际浪...yyyyy
在struts2中使用JFreeChartdasdasd
FreeMarker在struts2.0,JAVA,web中
URL重写指南 - Apache HTTP服务器
在real内嵌播放器中防止弹出url
在asp.net中自动给url地址加上超链接
在HTML中获取正确的URL属性值
Struts2.0+ibatis2.3整合实例实现服务层及Struts - 51CTO.C...
在oracle中实现分页
在JSF中实现分页
struts2中struts.properties
在Word 2003中高速去掉页眉横线
如何在 JavaScript 中实现拖放(中)
我如何从剪贴板中抓取一个 URL 然后在浏览器中打开该 Web 站点?
去掉功利性,回归公益性,让社会公平正义率先在教育领域实现!
Struts2中 s:iterator 标签的使用详解及OGNL用法
urlRewriteFilter来实现url的美化
struts2整合tiles及配置