【问题标题】:Struts2 URL with .action带有 .action 的 Struts2 URL
【发布时间】:2010-12-24 08:41:55
【问题描述】:

我想要以下格式的网址

http://localhost/users/abc

而不是

http://localhost/users?name=abc

如何在 Struts2 中实现这一点?

【问题讨论】:

    标签: java url-rewriting struts2 friendly-url


    【解决方案1】:

    您可以使用REST Pluginconvention 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”值。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-22
          • 2016-07-20
          相关资源
          最近更新 更多