1

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

4

3 回答 3

2

在我们使用的 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将由拦截器自动设置。

于 2012-09-13T07:39:20.037 回答
1

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

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

另请参阅struts 教程

于 2012-09-13T07:36:39.110 回答
1

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

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

因此,如果您的 JSP 有两个名称为 say 的字段,userName那么password您需要在动作类中使用 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
 }


}
于 2012-09-13T07:36:59.067 回答