首先写好User和UserService类,作为公用的类
User
package com.java1234.model;
public class User {
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;
}
}
UserService类,用于判断用户名和密码
package com.java1234.service;
import com.java1234.model.User;
public class UserService {
public boolean login(User user){
if("java1234".equals(user.getUserName())&&"123456".equals(user.getPassword())){
return true;
}else{
return false;
}
}
}
属性驱动
属性驱动就是在action中所有基本属性或Javabean属性XX,是通过SetXX(),GetXX()方法来设值或获取值的,实例如下
1、基本数据类型属性
Action
package com.java1234.action;
import com.java1234.model.User;
import com.java1234.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private UserService userService=new UserService();
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;
}
@Override
public String execute() throws Exception {
System.out.println("执行了UserAction的默认方法");
User user=new User();
user.setUserName(userName);
user.setPassword(password);
if(userService.login(user)){
return SUCCESS;
}else{
return ERROR;
}
}
}
jsp--login.jsp
<body>
<form action="user" method="post">
用户名:<input type="text" name="userName"/><!--name属性是userName,与action里的属性相同 -->
密码:<input type="text" name="password"/><!--name属性是password,与action里的属性相同 -->
<input type="submit" value="登录"/>
</form></body>在运行并登录后,action里的userName和password属性被赋予了值
2、JavaBean类型属性
action
package com.java1234.action;
import com.java1234.model.User;
import com.java1234.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction2 extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private UserService userService=new UserService();
private User user;//属性是一个User对象
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
System.out.println("执行了UserAction的默认方法");
if(userService.login(user)){
return SUCCESS;
}else{
return ERROR;
}
}
}
jsp --login2.jsp
<body>
<form action="user2" method="post">
用户名:<input type="text" name="user.userName"/><!--name属性是user.userName-->
密码:<input type="text" name="user.password"/><!--name属性是user.password-->
<input type="submit" value="登录"/>
</form>
</body>
在运行并登录后,action里的user对象的userName和password属性被赋予了值
模型驱动
模型驱动是不需要getter和setter的,他把用户请求参数封装到一个javabean中,Action中使用一个独立的modle实例来封装用户的请求参数和处理结果,action完成业务逻辑调度,使用2个类来分解action任务,这就是模型驱动。
action
package com.java1234.action;
import com.java1234.model.User;
import com.java1234.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class UserAction3 extends ActionSupport implements ModelDriven<User>{//需要实现ModelDriven接口
/**
*
*/
private static final long serialVersionUID = 1L;
private UserService userService=new UserService();
private User user=new User();//需要自己new一个实例
@Override
public String execute() throws Exception {
System.out.println("执行了UserAction3的默认方法");
if(userService.login(user)){
return SUCCESS;
}else{
return ERROR;
}
}
@Override
public User getModel() {// 模型驱动必须实现的方法,也是ModelDriven接口中唯一的方法
// TODO Auto-generated method stub
return user;
}
}
jsp--login3.jsp
<body>
<form action="user3" method="post">
用户名:<input type="text" name="userName"/><!--name属性是userName,与action里user对象的属性相同 -->
密码:<input type="text" name="password"/><!--name属性是password,与action里user对象的属性相同 -->
<input type="submit" value="登录"/>
</form>
</body>
运行并登录后,action里的user对象的属性就有值了