剖析struts2.1.6与URLRewrite的结合

   最近小弟研究了一下struts2.1.6与URLrewrite的结合,纵观整个WEB项目而言,毫无疑问urlrewrite是对网址的重写,在SSH中也只有struts2.1.6与网址打交道了,struts2.1.6在MVC中主要作用还是承担的是Control的作用.当然还需要在WEB.xml里面配置一下映射路径.

urlrewrite最新的稳定是urlrewrite-2.6.0.jar,开源JAR包到http://tuckey.org/urlrewrite/#download下载.小弟提倡所有的JAR最好到官网去下,不要用IDE工具提供的(如Myeclipse,因为它提供的JAR有问题.struts1.2的JAR就有问题.一直到Myeclispe7也没有纠正这个问题,所以各个框架的官网上的才是最可信的.)

下面大致的说下它们是如何结合的.小弟的项目后台框架是struts2.1.6+Springs.5+Hibernate3.3,前台用到了Jquery,关于编码的问题,最好使用Spring2.5的过滤器,而且一定要放在最前面,这个在前面已经说过了,在这里不啰嗦.

1,基于urlrewrite和struts2.1.6它们截取网址的原理,在web.xml采用以下的配置:

 

  UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter logLevel debug UrlRewriteFilter *.html

下面是struts2.1.6的配置(重要)

 

Struts2CleanUp org.apache.struts2.dispatcher.ActionContextCleanUp Struts2CleanUp *.htm struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 *.htm REQUEST FORWARD

2,urlrewrite还需要一个XML文件,名字urlrewrite.xml,它用来告诉哪些文件需要转重写成什么网址,它是基于正则来实现的.

这个文件可以到开源里面拷贝,把原来的删掉,加上自己的代码,(把DTD给留下).这个文件放在WEIN-INF和web.xml同级目录.

^/list-([a-zA-Z0-9]*)-([0-9]*)-([0-9]*)-([0-9]*)-([0-9]*).html$ /list.htm?goodsurl=$1&fangshi=$2&order=$3&pageSize=$4¤tPage=$5   

如上例子,from中的正则以^开头和$结尾这个是显示在地址栏里面的,这样严格一点.to是真正要访问的网址,它们是一一对应的,$1,表示的是第一个正则.

注意:网址中的&要用&进行转义,(在XML文件中出现这个字符的时候都要进行转义).

以上就是小弟使用urlrewrite+SSH的心得和体会,如果有更好的方法,欢迎大家讨论和探究一下..

 

正品推荐,欢迎大家到我的博客里面看下我的心得,期待与同行好友的技术交流

你可能感兴趣的:(Struts2.1.6)