属性驱动模型的作用:
因为struts2与servlet API 实现了解耦,无法直接使用HttpServlet Request对象获取表单提交的参数,但Struts2提供了属性驱动模型机制来解决这个问题。
struts2的属性驱动模型指的是在JSP页面的每一个form中的name都在action中有一个属性与之对应。
常用的属性驱动模型有:
form表单封装在javabean对象中
form表单封装在list集合中
页面用 username<input type="text" name="list[0].username"> <!-- 表单输入的值就是list中第0个对象的username值 -->
form表单封装在map集合中
页面用 username<input type="text" name="map['one'].username"> <!-- 表单输入的值就是map中key为one对象的username值 -->
1、创建login.jsp页面
<form action="userManagerAction.action" method="post"> <p>用户名:<input type="text" name="user.username"></p> <p>密码:<input type="password" name="user.password"></p> <p style="color: red">${message}</p> <p><input type="submit"></p> </form>
2、定义属性实体类User
package com.struts2.entity; 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; } }
3、编写action类
package com.struts2.action; import com.struts2.entity.User; public class UserManagerAction { private User user; //属性封装 private String message; public String execute(){ System.out.println("用户名:"+user.getUsername()+"--密码:"+user.getPassword()); if("admin".equals(user.getUsername()) && "123456".equals(user.getPassword())){ message = "账号密码正确"; return "success"; }else{ message = "对不起,账号密码有误"; return "error"; } } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
5、action配置
<action name="userManagerAction" class="com.struts2.action.UserManagerAction"> <result name="success">/login.jsp</result> <result name="error">/login.jsp</result> </action>
6、启动服务,访问:http://localhost:8080/struts2/login.jsp