Struts 2请求映射

时间:2012-09-13 07:22:47

标签: java-ee struts2

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

3 个答案:

答案 0 :(得分: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将由拦截器自动设置。

答案 1 :(得分:1)

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

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

另请参阅struts tutorial

答案 2 :(得分:1)

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
 }


}