我是struts的新手并且正在学习它。我的问题是struts如何使用动作实例变量映射请求参数。例如,我有一个使用用户名和密码的登录表单。现在它向LoginAction发送请求。此操作类将如何在用户名实例中获取用户名实例,并在密码变量中获取密码。在servlet中,我们使用request.getParameter()
方法并将值赋给特定变量。
答案 0 :(得分:2)
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有两个名称为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
}
}