您的位置:首页 > 编程语言 > Java开发

struts2从表单取值的三种方式

2011-01-26 09:59 190 查看
1. 使用默认的action的传递方式。
代码如下:

public class LoginAction {

private String username;
private String 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() {
//处理逻辑
}

}

登陆成功文件如下:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<meta http-equiv="content-type" content="text/html;charset=gb2312">

欢迎您,<s:property value="username" />登录成功。

登陆文件内容如下:
<form action="login.action" method="post">
username:<input type="input" name="username"><br>
password:<input type="input" name="password"><br>
<input type="submit" value="登录">
</form>
这种方式当表单提交的属性很多的时候,action的内容将变得很多,很臃肿。

2. 自定义一个vo,在action中使用这个vo

VO代码如下:

public class LoginVO {
private String username;
private String 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;
}

}

在Action文件中,使用这个vo,代码如下

public class LoginAction {
private LoginVO user = null;

public String execute() {
//处理逻辑
}

public LoginVO getUser() {
return user;
}

public void setUser(LoginVO user) {
this.user = user;
}

}

登陆成功的文件如下:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<meta http-equiv="content-type" content="text/html;charset=gb2312">

欢迎您,<s:property name="user.username">登录成功。

登陆页面需要进行如下修改:

<form action="login.action" method="post">
username:<input type="input" name="user.username"><br>
password:<input type="input" name="user.password"><br>
<input type="submit" value="登录">
</form>

这种方式解决了action文件臃肿的问题,同时使form和action分开,较好,但是需要在设置和获取的jsp页面上进行标识

3. 使用ModelDriven的方式。
同样也需要一个vo,这个vo和方法2中的一致,但是action中的写法就不一样了。
action内容如下:

import com.opensymphony.xwork2.ModelDriven;

public class LoginAction implements ModelDriven<LoginVO>{
@Override
public LoginVO getModel() {
// TODO Auto-generated method stub
return user;
}

private LoginVO user = new LoginVO();
public String execute() {
//处理逻辑
}
}
这种方式的登陆页面文件则不需要追加user的前缀,即和方法1的文件内容一样。
通过实现特定的接口,去掉了action中的set和get方法,同时去掉了jsp页面上的标识。使后台程序的处理逻辑更加清晰。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: