【问题标题】:Struts 2 request mappingStruts 2 请求映射
【发布时间】:2012-09-13 07:22:46
【问题描述】:

我是 struts 和学习它的新手。我的问题是 struts 如何将请求参数与动作实例变量映射。例如,我有一个使用用户名和密码的登录表单。现在它向 LoginAction 发送请求。此操作类如何在用户名实例变量中获取用户名,在密码变量中获取密码。在 servlet 中我们使用request.getParameter() 方法并将值分配给特定的变量。

【问题讨论】:

    标签: jakarta-ee struts2


    【解决方案1】:

    在struts2中我们使用Interceptor,在这种情况下struts2会为你设置param拦截器的参数,你只需要配置你的拦截器堆栈(或者你只使用默认堆栈)。这里是Interceptor的链接,如果你对struts2很新鲜,就用默认配置感受一下吧。

    示例:

    <s:form action="my-action">
      <s:textfield name="myField"/>
      <s:submit/>
    </s:form>
    

    动作类:

    public class MyActionClass extends ActionSupport{
      private String myField; // getter and setter
      public String execute() throws Exception{
        return "success";
      }
    }
    

    配置:

    <package name="default" extends="struts-default">
      <action name="my-action" class="MyActionClass">
        <result>success.jsp</result>
      </action>
    </package>
    

    在这种情况下,myField 将由拦截器自动设置。

    【讨论】:

      【解决方案2】:

      Struts 会为您映射参数。这就是为什么使用框架可以节省您的时间和精力的部分原因,因为您不必手动从request 中提取参数。

      Struts 通过调用setUsername 自动将请求参数username 映射到您的操作类的username 成员。

      另请参阅struts tutorial

      【讨论】:

        【解决方案3】:

        Struts2 使用一组 Interceptors 为您完成繁重的工作,这意味着在您的 Action 方法执行时,您将获得所有需要的数据。

        为了将数据从 JSP 传输到动作类 Struts2 使用拦截器名称parameters-interceptor,您只需在动作类中创建与 JSP 字段名称相同的属性,S2 将转换数据并填充适合您的字段。

        因此,如果您的 JSP 有两个名称为 userNamepassword 的字段,那么您需要在动作类中使用 getter 和 setter 来定义这些字段

        public class MyAction extends ActionSupport{
          private String userName;
          private String password
          //getter ans setter
        
         public String execute() throws Exception{
          // do what yoou want
         }
        
        
        }
        

        【讨论】:

          猜你喜欢
          • 2014-11-09
          • 1970-01-01
          • 1970-01-01
          • 2012-07-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多