一、Action生命周期
  每次请求到来时,都会创建一个新的Action实例
  Action是线程安全的,可以使用成员变量接收参数

二、获取参数的方式(3种)

  1.属性驱动获得参数

    每次请求Action时都会创建新的Action实例对象

  1. public class Demo8Action extends ActionSupport{
  2. //准备与参数键
  3. private String name;
  4. //自动类型转换 只能转换8大基本数据类型以及对应包装类
  5. private Integer age;
  6. //支持特定类型字符串转换为Date,例如yyyy-mm-dd
  7. private Date birthday;
  8.  
  9. public String getName() {
  10. return name;
  11. }
  12.  
  13. public Integer getAge() {
  14. return age;
  15. }
  16.  
  17. public void setAge(Integer age) {
  18. this.age = age;
  19. }
  20.  
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24.  
  25. @Override
  26. public String execute() throws Exception {
  27. System.out.println("name参数值:"+name+",age参数值:"+age+"生日:"+birthday);
  28. return SUCCESS;
  29. }
  30.  
  31. public Date getBirthday() {
  32. return birthday;
  33. }
  34.  
  35. public void setBirthday(Date birthday) {
  36. this.birthday = birthday;
  37. }
  38.  
  39. }

 jsp页面

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <form action="${pageContext.request.contextPath}/Demo8Action">
  11. 用户名:<input type="text" name="name" /><br>
  12. 年龄:<input type="text" name="age" /><br>
  13. 生日:<input type="text" name="birthday" /><br>
  14. <input type="submit" value="提交">
  15. </form>
  16. </body>
  17. </html>

  2.对象驱动获得参数

  1. public class Demo9Action extends ActionSupport {
  2. private User user;
  3. public User getUser() {
  4. return user;
  5. }
  6. public void setUser(User user) {
  7. this.user = user;
  8. }
  9. @Override
  10. public String execute() throws Exception {
  11. System.out.println(user);
  12. return super.execute();
  13. }
  14. }

jsp页面

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <form action="${pageContext.request.contextPath}/Demo9Action">
  11. 用户名:<input type="text" name="user.name" /><br>
  12. 年龄:<input type="text" name="user.age" /><br>
  13. 生日:<input type="text" name="user.birthday" /><br>
  14. <input type="submit" value="提交">
  15. </form>
  16. </body>
  17. </html>

  3.模型驱动获得参数

  第一步实现ModelDriven并规定泛型 重写方法 返回 泛型内容
  第二步准备user 成员变量
  有一个缺点 只能返回一个对象

  1. public class Demo10Action extends ActionSupport implements ModelDriven<User>{
  2.  
  3. private User user = new User();
  4.  
  5. @Override
  6. public String execute() throws Exception {
  7. System.out.println(user);
  8. return super.execute();
  9. }
  10.  
  11. @Override
  12. public User getModel() {
  13. return user;
  14. }
  15. }

jsp页面

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <form action="${pageContext.request.contextPath}/Demo10Action">
  11. 用户名:<input type="text" name="name" /><br>
  12. 年龄:<input type="text" name="age" /><br>
  13. 生日:<input type="text" name="birthday" /><br>
  14. <input type="submit" value="提交">
  15. </form>
  16. </body>
  17. </html>

三、集合类型参数封装

  1. public class Demo11Action extends ActionSupport {
  2. //list
  3. private List<String> list;
  4. //Map
  5. private Map<String,String> map;
  6. public Map<String, String> getMap() {
  7. return map;
  8. }
  9. public void setMap(Map<String, String> map) {
  10. this.map = map;
  11. }
  12. public List<String> getList() {
  13. return list;
  14. }
  15. public void setList(List<String> list) {
  16. this.list = list;
  17. }
  18.  
  19. @Override
  20. public String execute() throws Exception {
  21. System.out.println("map:"+map);
  22. System.out.println("list:"+list);
  23. return super.execute();
  24. }
  25. }

jsp页面

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <form action="${pageContext.request.contextPath}/Demo11Action" method="post">
  11. list:<input type="text" name="list" /><br>
  12. list:<input type="text" name="list[3]" /><br>
  13. map:<input type="text" name="map['haha']" /><br>
  14. map:<input type="text" name="map['lala']" /><br>
  15. <input type="submit" value="提交">
  16. </form>
  17. </body>
  18. </html>

Struts2-整理笔记(四)Action生命周期、如何获取参数(3种)、集合类型参数封装的更多相关文章

  1. Servlet生命周期以及获取参数

    1. 创建Servlet几种方式  1) 实现Servlet接口     控制Servlet的生命周期       构造器       init()       service()       des ...

  2. MAVEN学习笔记之Maven生命周期和插件简介(3)

    MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ...

  3. struts2 Action生命周期

    Struts2.0中的对象既然都是线程安全的,都不是单例模式,那么它究竟何时创建,何时销毁呢? 这个和struts2.0中的配置有关,我们来看struts.properties ### if spec ...

  4. 前端笔记之React(四)生命周期&Virtual DOM和Diff算法&日历组件开发

    一.React生命周期 一个组件从出生到消亡,在各个阶段React提供给我们调用的接口,就是生命周期. 生命周期这个东西,必须有项目,才知道他们干嘛的. 1.1 Mouting阶段[装载过程] 这个阶 ...

  5. React 入门学习笔记整理(七)—— 生命周期

    (1)react 生命周期 只有类组件有生命周期,函数组件没有生命周期 1.挂载阶段:这些方法会在组件实例被创建和插入DOM中时被调用: 1)constructor(props) 初始化组件的状态.绑 ...

  6. Struts2学习笔记四 OGNL

    OGNL,全称为Object-Graph Navigation Language(对象图表达语言),它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,调用java对象的方法,同时能够自动 ...

  7. Android笔记——活动的生命周期

    一.活动的重要性 掌握活动的生命周期对任何 Android 开发者来说都非常重要,当你深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序,并在如何合理管理应用资源方面,你会发挥的游刃有余.你的应 ...

  8. Maven学习(四)-- 生命周期和插件

    标签(空格分隔): 学习笔记 Maven生命周期是抽象的,不做任何实际的工作,在Maven的设计中,实际的任务都交由插件来完成. 每个构件步骤都可以绑定一个或者多个插件行为,而且Maven为大多数构建 ...

  9. Android学习笔记:Activity生命周期详解

    进行android的开发,必须深入了解Activity的生命周期.而对这个讲述最权威.最好的莫过于google的开发文档了. 本文的讲述主要是对 http://developer.android.co ...

随机推荐

  1. DIV居中的经典方法

    1. 实现DIV水平居中 设置DIV的宽高,使用margin设置边距0 auto,CSS自动算出左右边距,使得DIV居中. 1 div{ 2 width: 100px; 3 height: 100px ...

  2. 【微服务】之三:从零开始,轻松搞定SpringCloud微服务-配置中心

    在整个微服务体系中,除了注册中心具有非常重要的意义之外,还有一个注册中心.注册中心作为管理在整个项目群的配置文件及动态参数的重要载体服务.Spring Cloud体系的子项目中,Spring Clou ...

  3. 老男孩Python视频教程:第一周

    认识和尝试Python 备注:老男孩Python视频教程,视频来自网络,在此分享,侵删 对我来说,第一周视频主要解答了以下疑问: 1. Python的三大特点是什么? 答:解释型.动态类型(运行期间才 ...

  4. Chrome浏览器读写系统剪切板

    IE浏览器支持直接读写剪切板内容: window.clipboardData.clearData(); window.clipboardData.setData('Text', 'abcd'); 但是 ...

  5. PHP获取一周的日期

    /** * 获取一周日期 * @param $time 时间戳 * @param $format 转换格式 */ function get_week($time, $format = "Y- ...

  6. 【tyvj P4879】骰子游戏

    http://www.tyvj.cn/p/4879 首先,投一个骰子,每个数字出现的概率都是一样的.也就是不算小A的话,n个人投出x个骰子需要的次数和点数无关. 计数问题考虑dp,令f(i,j)为前i ...

  7. 非常棒的教程记录(JVM)

    这里暂且记录下看过的非常棒的博客吧! JVM 指令集简单解释,来自一个不认识的网友的个人博客:http://www.iloveandroid.net/2015/12/06/jvm%E6%8C%87%E ...

  8. 单点登录(SSO)的设计

    一.前言 什么是SSO? SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.https://baike.baidu.c ...

  9. weex加入iconfont

    weex加入图标可能是项目开发中最头疼的事情了,还好有 阿里巴巴矢量图标库解决了开发时的图标问题,下面我们一起来踩坑吧<text class="left"></ ...

  10. Android学习笔记(10).布局管理器

    布局管理器的几个类都是ViewGroup派生的,用于管理组件的分布和大小,使用布局管理器能够非常好地解决屏幕适配问题. 布局管理器本身也是一个UI组件,布局管理器能够相互嵌套使用,以下是布局管理器的类 ...