一、属性驱动
提交信息表单页面 login.jsp
<form action="login">
userName:<input type="text" name="userName">
userPsw:<input type="text" name="userPsw">
<input type="submit" value="login">
</form>
注意两个input的标签name为“userName”、“userPsw”,则其表单处理类,此处是LoginAction类应有对应名称的属性以及set方法
action处理类 LoginAction.java
package com.action;
import com.opensymphony.xwork2.Action;
/**
* @author WenSe
* @date 2018/10/25 13:40
*/
public class LoginAction {
private String userName;
private String userPsw;
public String login(){
System.out.println(userName + "/"+userPsw);
return Action.SUCCESS;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPsw() {
return userPsw;
}
public void setUserPsw(String userPsw) {
this.userPsw = userPsw;
}
}
action处理类提供get方法则页面可通过el表达式获取属性值
获取信息页面 success.jsp
<body>
欢迎${userName}
</body>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="login" namespace="/" extends="struts-default">
<action name="login" class="com.action.LoginAction" method="login">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
二、对象驱动
当把属性都包装为在一个类中时,就可以使用对象驱动模型,在上面的基础上,需做以下修改
- 新建user类,并提供无参构造方法
public class User {
private String name;
private String psw;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPsw() {
return psw;
}
public void setPsw(String psw) {
this.psw = psw;
}
}
2.action处理类声明user变量(不创建),并提供get、set方法
public class LoginAction {
private User user;
public String login(){
System.out.println(user.getName() + "/"+user.getPsw());
return Action.SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
3.jsp页面form表单中的相应input的name属性值改为 处理类中的对象.属性
<form action="login">
userName:<input type="text" name="user.name">
userPsw:<input type="text" name="user.psw">
<input type="submit" value="login">
</form>
jsp页面要获取对象属性值时,也要用 处理类中的对象.属性 格式
<body>
欢迎${user.name}
</body>
三、模型驱动
在jsp中的属性前要加对象限定,显得臃肿,此时,可用模型驱动,在上面的基础上,再做修改即可
1.处理类 实现 ModelDriven<T> 接口,实现getModel方法,并创建User对象
public class LoginAction implements ModelDriven<User> {
private User user;
@Override
public User getModel() {
return user = new User();
}
public String login(){
System.out.println(user.getName() + "/"+user.getPsw());
return Action.SUCCESS;
}
}
2.此时jsp页面中,就可以直接写属性名称,类似属性驱动时
<form action="login">
userName:<input type="text" name="name">
userPsw:<input type="text" name="psw">
<input type="submit" value="login">
</form>
<body>
欢迎${name}
</body>
本文详细介绍了Struts2框架中的三种数据驱动方式:属性驱动、对象驱动和模型驱动。通过实例展示了如何在表单中提交数据,以及在Action类中如何接收和处理这些数据。同时,解释了每种驱动方式的实现细节和适用场景。
1270

被折叠的 条评论
为什么被折叠?



