【发布时间】:2010-12-24 08:41:55
【问题描述】:
【问题讨论】:
标签: java url-rewriting struts2 friendly-url
【问题讨论】:
标签: java url-rewriting struts2 friendly-url
您可以使用REST Plugin 或convention plugin(有关后续解决方案的更多详细信息,请参阅this blog post)。其他选项包括 servlet 过滤或 mod_rewrite。
【讨论】:
【讨论】:
我们可以使用 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”值。
【讨论】: