第一种方法
在Action类中定义两个成员变量,注意两个成员变量的属性名必须与前端表单name的属性名一致。提供setter方法
index.jsp前端表单:
<form action="user_login" method="post">
<table>
<tr>
<td>用户名:<input type="text" name="username"></td>
<td>密码:<input type="password" name="password"></td>
<td><input type="submit" value="登录"></td>
</tr>
</table>
</form>
public class LoginAction extends ActionSupport {
private String username;
private String password;
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public String login(){
if("admin".equals(username)&&"pass".equals(password)){
return "success";
}
return "error";
}
}
以下是struts.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="user_login" class="com.jiuyue.controller.LoginAction" method="login">
<result name="success">sayHello.jsp</result>
<result name="error">error.jsp</result>
</action>
</package>
</struts>```
登录界面
验证成功跳转到sayHello.jsp
第二种方法
使用Struts2中的ModelDriven模型驱动方法。首先Action类必须实现ModelDriven接口,同样把表单传来的数据封装起来,Action类中必须实例化该对象,并且要重写getModel()方法。表单传来的参数封装在user对象中
表单属性名不需要加上引用user对象,直接传参数名就可以。
import pojo.User;
public class LoginAction extends ActionSupport implements ModelDriven<User>{
private User user;
@Override
public User getModel() {
if (user==null){
user = new User();
}
return user;
}
public String login(){
System.out.println("username="+user.getUsername());
if ("admin".equals(user.getUsername())&&"pass".equals(user.getPassword())){
return "success";
}
else
return "error";
}
效果跟上面一样可以接收参数进行登陆验证
登录界面
验证成功跳转到sayHello.jsp