Struts2 更好的带有点的 URL
Posted
技术标签:
【中文标题】Struts2 更好的带有点的 URL【英文标题】:Struts2 better URLs with dot inside 【发布时间】:2014-02-27 11:53:51 【问题描述】:假设我们需要一个带有预定义用户名的登录表单。
所以如果用户访问 url:
//somehost:8080/myapp/auth/myusername
该操作应将myusername
作为输入参数。
我以http://www.struts2.info/blog/better-urls-with-struts2 为例进行了尝试,效果很好。
但如果myusername
包含点,例如:
//somehost:8080/myapp/auth/firstname.lastname
,我收到 404 错误。
是否有任何简单的解决方案可以使用点作为 url 参数的一部分?
【问题讨论】:
你试过用引号括起来吗。 比如 //somehost:8080/myapp/auth/'firstname.lastname ' 不确定... 因为它认为您正在尝试获取扩展名为 .lastname 的操作,所以您需要为此编写规则 【参考方案1】:在 struts.xml 中:
<constant name="struts.action.extension" value="" />
在 web.xml 中:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
未经测试,但应该可以工作
【讨论】:
@never: @AndreaLigios:空值对于struts.action.extension
来说并不是最好的。见***.com/q/12607075/1700321。
一个空设置对他/她的用例不起作用。另一种选择是使用自定义ActionMapper
。
@AleksandrM 哇,2012 年 9 月...我错过了,+1。因此,如果我猜对了,""
表示一切(包括静态资源),而","
仅表示没有扩展的操作(和 没有扩展的静态资源,不是标准但可能发生);添加","
不适用于此用例,因为.lastname
将作为操作扩展受到威胁,并被过滤(正如@StevenBenitez 指出的那样)。然后,除非使用自定义的 ActionMapper,否则 OP 问题的唯一方法是使用 ""
并避免使用 struts2 来提供静态资源......这是对的吗?以上是关于Struts2 更好的带有点的 URL的主要内容,如果未能解决你的问题,请参考以下文章
struts2的拦截器和spring的AOP哪个实现权限管理更好