2012-09-13 48 views
0

我是struts中的新成员并学习它。我的问题是struts如何将请求参数映射到动作实例变量。例如,我有一个登录表单需要用户名和密码。现在它向LoginAction发送请求。这个动作类将如何获得用户名实例变量中的用户名和密码变量中的密码。在servlet中,我们使用request.getParameter()方法并为特定变量赋值。Struts 2请求映射

回答

1

在我们使用Interceptor Struts2的,在这种情况下的struts2会使用param拦截器为你设置params,你只需要配置你的拦截器堆栈(或者你只是使用默认堆栈)。这里是链接到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将被自动设置通过拦截器。

0

Struts为您绘制参数。这就是为什么使用框架为您节省时间和精力的原因之一,因为您无需从request中手动提取参数。

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

又见struts tutorial

1

那么Struts2的使用一组Interceptors它为你做繁重,这意味着在你的行动的方法执行的时间,你会得到所有需要的数据进行工作。

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

所以如果你JSP有拖场与名说userNamepassword所有你需要定义thse与getter和setter Action类像

public class MyAction extends ActionSupport{ 
    private String userName; 
    private String password 
    //getter ans setter 

public String execute() throws Exception{ 
    // do what yoou want 
} 


}