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

Struts2接收请求参数1

2017-02-15 15:46 495 查看
Struts2 是MVC中的控制器(处理请求),所以在请求过程中,数据由Strutes解决;

接受请求参数的三种类型:属性驱动、模型驱动、域驱动。(常用的是后两种)

1)、属性驱动:

Html代码块:

<form action="loginAction" method="post">
用户名:<input type="text" name="username"><br>
密 码:<input type="password" name="password"><br>
<input type="submit" value="Submit">
</form>


Java代码块:

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(){
System.out.println(username+password);
return "success";
}
}

总结:直接在action的POJO类中声明与表元素一致的属性,并声称匹配的get/set方法,Strutes会自动提交到action中并直接给显影的属性赋值;

2)、模型驱动:

Html代码块:

<form action="loginAction" method="post">
用户名:<input type="text" name="username"><br>
密 码:<input type="password" name="password"><br>
<input type="submit" value="Submit">
</form>Action代码块:
public class LoginAction implements ModelDriven<User>{
private User user;
public String execute(){
System.out.println(this.user.getUsername()+this.user.getPassword());
return "success";
}

@Override
public User getModel() {
if(this.user == null){
user = new User();
}
return user;
}

总结:继承ModelDriven接口,实现对应的getModel()方法;

3)、域驱动:

Html代码块:

<form action="loginAction" method="post">
用户名:<input type="text" name="user.username"><br>
密 码:<input type="password" name="user.password"><br>
<input type="submit" value="Submit">
</form>
Java代码块:

public class LoginAction {
private User user;
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return user;
}

public String execute(){
System.out.println(user);
return "success";
}
}


public class User {	//一个JAVABEAN
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 User(String username, String password) {
super();
this.username = username;
this.password = password;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password
+ "]";
}

public User() {
super();
}
}


总结:通常情况下,表单元素往往对应一个实体,实体又往往单独放在实体层中,那么此时就需要在action中放入实体对象作为请求参数,域驱动的方式就是把实体中的对象作为action的属性;

public class User {	//一个JAVABEAN
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 User(String username, String password) {
super();
this.username = username;
this.password = password;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password
+ "]";
}

public User() {
super();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: