struts2.2的路径匹配(struts2与servlet的耦合)

项目用了struts2.2,它的拦截器默认会拦截项目所有的请求,无论是.jsp 还是没有后缀的。这是因为它是这样配置的:

 

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 

 

但是呢,你的action不能随便加后缀,例如,有一个login的action,你不能写成   login.ac,  虽然会拦截下来,但是并不会认识这个action,这是因为struts2默认只能认识(这里的认识并不是拦截器是否认识,任何请求拦截器都会拦截下来的,管你是.ac还是.bc的后缀).action 和不加后缀的action,它的默认定义在struts2 核心包中default.properties文件的

 

” struts.action.extension=action,,   “

 

   中,对,你没看错,是2个逗号,表示空嘛。所以呢,如果你想实现让拦截器认识其他后缀的action ,你必须在struts.xml中配置这个常量,具体如下:

 

 

<constant name="struts.action.extension" value="ac" />   

 

 

OK啦,拦截器认识.ac的action啦。

 

 

--------------------------------------------------

 

struts2和fckeditor的整合,出问题啦,这是因为fckedit里面有servlet,而servlet的访问路径是 /login  不加后缀的,所以每次有访问servlet的时候,struts2的拦截器就出来捣烂啊,他首先拦截下来,可是它拦截下来它又不能出来这个servlet,那就出错啦,真是郁闷,怎么才能让struts不拦截这个servlet呢?  

 

 

 

 

 

方法1: 改

 

<filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>  // 《发表下个人意见,最好还是别这样写  /*, 它啥都拦截,必然导致效率没那么高啦》
    </filter-mapping>

 

(servlet是项目完成很多后要加上去的,所以,如果我改成下面这种写法后,那些action都要添个后缀,真是很麻烦)

,上面的意思不是说我啥都给你拦截下来吗?那好 ,我就规定下你,你不能所以的都拦截下来,你只能拦截.action后缀结尾的action,那些空的你就别去管它了,那好说做就做,改成如下:

 

<filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>

 

好啦,问题解决啦,以后你写action的时候别忘记要加后缀.action哈,例如   :    login.action   呵呵 ,还有,login!list.action 是这样写,我开始写成了 :  login.action!list  一直报错,真TM郁闷。

 

 

 

 

 

方法二:

还是有的 ,但是由于项目紧,我没时间去实验了,大家可以去找找  struts2和servlet的兼容 。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值