提交表单 struts2 不再像struts1 那样需要一个form bean ,当然也不需要在struts.xml中绑定form
bean。直接在action中就可以获得各个表单域的值。
以登录表单和登录action举例说明:
一、页面中表单loginForm 包含两个域 姓名域:userName 和密码域:password 。
<form name="loginForm" action="login.do" method="POST">
name:<input type="text" name="userName" id="userName" value="" />
password:<input type="password" name="password" id="password" />
<input type="submit" name="loginBt" id="loginBt" value="login"/>
</form>
二、登录的action :
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
Logger logger = Logger.getLogger(ActionSupport.class);
private String userName =""; //定义userName 属性
private String password =""; //定义password属性
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
HttpSession session = request.getSession();
//如果输入的用户名为 yangzi 则返回到成功页面,否则返回失败页面。
if(userName!=null && userName.equals("yangzi")){
return SUCCESS;
}else{
return ERROR;
}
}
}
三、说明
action中要有和表单域对应的属性名,并且要有相应的符合javabean规范的set和get方法。
个人认为:其实struts2的action可以是一个“可包含业务逻辑的javabean”。
可以看到struts2 在使用表单方面比struts1节约了一个formbean,或者说用一个javabean集成了action
功能。
如果考虑其他的,struts2甚至可以省去业务逻辑层,直接用实体层的 javabean+业务逻辑就可以实现所
有功能,从而做大程度上做到了代码重用。