属性驱动模型的作用:

因为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

最新文章

  1. vs使用
  2. Linux 学习手记(6): 磁盘、分区、MBR与GPT
  3. (转)django上传文件
  4. php构造函数,引入数据库操作类函数
  5. Mongoose在向集合中插入文档时的集合命名问题
  6. 精华阅读第 9 期 |滴滴出行 iOS 客户端架构演进之路
  7. HDU 4405-Aeroplane chess(概率dp)
  8. 整理的Java资源
  9. Ubuntu 安装和配置minicom
  10. Mongodb操作之查询(循序渐进对比SQL语句)
  11. chrome开发工具指南(八)
  12. BZOJ:4333: JSOI2012 智者的考验
  13. 51nod1237 最大公约数之和
  14. 初级c++编码规范
  15. 从Oracle数据库中查询前几个月数据时需要注意的一些问题
  16. linux系统搜索文件中关键字的位置
  17. Android简易项目--傻瓜式阿拉伯语输入法(Dummy Arabic Input)
  18. 关于Unity中Time.deltaTime的使用
  19. vue.js组件(component)
  20. android--------根据文件路径加载指定文件

热门文章

  1. GitKraken使用教程-基础部分(5)
  2. POJ 3177——Redundant Paths——————【加边形成边双连通图】
  3. HDU 4336——Card Collector——————【概率dp】
  4. Xtrareport二之固定数据绑定
  5. Weblogic中配置Active Directory Authentication Provider
  6. hibernate课程 初探一对多映射2-1 一对多映射简介
  7. hibernate课程 初探单表映射4-1 课程总结
  8. 《Head First 设计模式》之代理模式
  9. Day1 了解web前端
  10. LOJ#137. 最小瓶颈路 加强版(Kruskal重构树 rmq求LCA)