您的位置:首页 > 编程语言 > Java开发

关于strut拦截action的路径和package的namespase的问题

2012-02-29 11:46 232 查看
触发action时在web.xml中配置的如下:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/marsor/*</url-pattern>
</filter-mapping>

那么触发action时的完整路径是:
http://address:port/programname/marsor/haha.action
但是一般在登录这个网址的时候会写入全路径:
http://address:port/programname/marsor/index.jsp   此处

的/marsor是jsp所在的真实目录,

这里就涉及一个技巧:当你输入全地址时
http://address:port/programname/marsor/index.jsp,在该jsp下面触
发action时直接写上action的名字就可以了,

因为服务器会记录http://address:port/programname/marsor/这段地址

,然后把触发的action直接加到后面,这就是目录名marsor和

<url-pattern>/marsor/*</url-pattern>这里配置的一样的技巧了

其实只要地址栏里面有http://address:port/programname/marsor/  那

么服务器就会拦截检测到/marsor的存在,那么就会直接定位到/marsor

后面的action。

所以当你触发:
http://address:port/programname/marsor/fadadfa/davadv/login.act
ion时 也可以触发成功,服务器会自动把/marsor后面的地址去掉而直接

定位到action

这就出问题了,如果要是在struts里面配置

<package name="userArticle" namespace="/user" extends="global">

那么触发时就要在action前面加上/user  全路径是:
http://address:port/programname/marsor/user/login.action
这就产生问题了,/marsor会自动过滤掉/user而直接定位到

login.action  但是struts又检测不到/user  所以触发总是失败的!

建议不要在package里面设置namaspace
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  action struts 服务器 jsp