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>

即可

↑TOP