Struts2中去除*.action后缀,且维持原有的*.action后缀
- ZHUWEI
- 2019-08-01 10:04:05
- 223 赞(1) 踩(0)
Struts2中去除*.action后缀,且维持原有的*.action后缀 近日项目上遇到的情况是: 新增几个http接口实现,类似调用的URLPATH:/queryInfo这个PATH不包含后缀的
近日项目上遇到的情况是:
新增几个http接口实现,类似调用的URL PATH: /queryInfo 这个PATH 不包含后缀的
那么问题来了,原来项目中全部用的是 /queryInfo.action 这种类型的后缀
现在要保持原来还可以用,且增加新的接口,解决方式如下:
1,在struts.xml中增加这句: <constant name="struts.action.extension" value=",action"></constant>
2,在web.xml中增加
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/queryInfo</url-pattern>
</filter-mapping>
那么这里会有问题,若是像 /queryInfo 这种接口有几十个,那么 岂不是要在web.xml中增加几十个filter-mapping ?
解决方法最好 /queryInfo 不要是直接根目录,最好有个层级目录譬如 /test/queryInfo
那么只需要对层级目录增加filter-mapping 即可:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/test/*</url-pattern>
</filter-mapping>
这样问题就解决了,既去除了新增接口PATH的 .action后缀 又 保留既有在用的.action后缀可用
--题外---------------------------------
若是要去除全部的.action后缀,按照如下两步操作即可:
1,在struts.xml中增加这句: <constant name="struts.action.extension" value=","></constant>
2,在web.xml中
将
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
修改成
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
即可