带有 .action 的 Struts2 URL
Posted
技术标签:
【中文标题】带有 .action 的 Struts2 URL【英文标题】:Struts2 URL with .action 【发布时间】:2010-12-24 08:41:55 【问题描述】:我想要以下格式的网址
http://localhost/users/abc
而不是
http://localhost/users?name=abc
如何在 Struts2 中实现这一点?
【问题讨论】:
【参考方案1】:您可以使用REST Plugin 或convention plugin(有关后续解决方案的更多详细信息,请参阅this blog post)。其他选项包括 servlet 过滤或 mod_rewrite。
【讨论】:
【参考方案2】:您可以使用http://tuckey.org/urlrewrite/。
【讨论】:
【参考方案3】:我们可以使用 struts2 来实现。您需要做的就是在操作名称中使用通配符。让我解释一下你的情况
http://localhost/users/Santhosh
这就是您想要的最终 URL。你会想要捕捉价值,即;行动支持中的“Santhosh”。
我假设您已准备好在末尾添加一个 struts2 后缀,即; “.action”或“.html”(我已将操作类扩展名自定义为 .html)。
只需在 struts.xml 文件中定义如下映射
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="false" />
<constant name="struts.action.extension" value="html" />
<constant name="struts.enable.SlashesInActionNames" value="true"/>
<action name="users/*" class="com.srm.action.UserAction" method="execute">
<param name="userName">1</param>
<result name="success" type="tiles">addEditCategory</result>
</action>
</struts>
如果您观察到上述映射,“struts.enable.SlashesInActionNames”应设置为“true”以实现此目的。
这里是动作支持类
public class UserAction extends ActionSupport
private static final long serialVersionUID = 1L;
private String userName = null;
public String execute() throws Exception
System.out.println("Username: "+userName);
return SUCCESS;
public void setUserName(String userName)
this.userName = userName;
public String getUserName()
return userName;
执行此程序后,您将在 userName 属性中填充“Santhosh”值。
【讨论】:
以上是关于带有 .action 的 Struts2 URL的主要内容,如果未能解决你的问题,请参考以下文章
Struts2 + Spring Security 2.06:尝试在 Action 方法上使用 @Secured 时,Valuestack 为空