1-1、导包
导包的时候不能把下载的struts2源码中的所以jar都导入,会出问题。源码中有案例,可以使用案例中的jar包
a)struts-2.3.24-all\struts-2.3.24\apps\WEB-INF\lib
1-2、struts.xml的配置
a)添加约束
b)配置struts.xml 没有提示 添加 dtd
1-3、标签与属性
struts
constant定义常量name="struts.i18n.encoding"value="UTF-8"
package 属性 name :随便取(当模块配置继承这个配置的时候使用)extends:struts-default namespace:/
action name:在jsp中访问的时候使用, method:调用action中的哪个方法 class:对应的action 全路径
result name:action 方法中的返回值 type : 转发/重定向 以及对象的jsp 或 action
Include分模块 file="/com/heima/web/action/User.xml">
1-4、action编写方式(三种)
a)第一种 创建普通类,不继承任何类,不实现任何接口
b)创建类,实现接口 Action
在Action接口里面有常量
(1)在action的方法里面,如果返回值,必须在action标签写result标签进行配置
如果没有配置返回404页面
(2)action的方法不进行返回,不需要进行配置
c)创建类,继承 ActionSupport类(常用)
1-5、在action标签中配置 访问action类中的方法(三种)
默认是访问excute方法
第一种:
在action标签,有属性 method,使用method属性进行配置,在method属性值写action里面要执行的方法名称
缺点:
每个方法都需要配置action,如果action里面的方法过多,造成大量配置
第二种:
使用通配符方式进行配置(重点)
(1)在action标签name属性,name属性值写 符号 * 星号
(2)* 星号匹配任意内容
- 比如add使用星号可以匹配到,访问update使用星号也可以匹配到
第三种 :
使用动态访问(了解)
(1)开启常量
(2)创建action,创建多个方法
(3)配置action,在action标签里面只有name属性和class属性
(4)最终访问时候
1-6、Struts2框架执行流程
2-1、在action获取表单提交数据
使用ActionContext类获取
,使用静态方法得到ActionContext对象
,调用里面的getParameters得到表单数据
使用ServletActionContext类获取
1 直接调用ServletActionContext类里面的静态方法实现操作
2 使用表单post提交中,在struts2的action获取数据不会有乱码问题
(1)struts2有常量设置
3 在action操作域对象
使用实现接口方式获取(了解)
1 在action类实现不同的接口
2-2、Struts2封装数据操作
使用传统方式封装数据到对象
属性封装
1 把表单提交数据,封装到action里面的属性中
2 具体实现
(1)在action里面定义成员变量
- 成员变量名称和表单输入项的name属性值一样
(2)生成定义的变量set和get方法
模型驱动封装(重点)
1 使用属性封装,把数据封装到action里面的属性中,不能直接把数据封装到对象里面
2 使用模型驱动封装:把直接把表单提交数据封装到实体类对象里面
3 具体实现
第一步 让action类实现接口 ModelDriven
(1)ModelDriven<封装实体类名称>
- dbutils: new BeanHandler(User.class)
第二步 实现接口里面的方法
(1)getModel方法
第三步 在action类的成员变量位置,手动创建实体类对象
注意问题
1 在一个action中获取同一个表单提交数据,
(1)可以使用属性封装,也可以使用模型驱动,但是这两种方式不能同时使用,
(2)如果同时使用,只会使用到其中的一种,使用模型驱动。
2-3、Struts2封装复杂数据(会用)
封装数据到List集合
1 写表单,提交表单之后,把数据封装到action里面list集合中
2 具体实现
第一步 在action里面声明list集合变量,生成get和set方法
第二步 生成list变量的set和get方法
第三步 在页面的表单里面写法
封装数据到Map集合
1 map集合结构 key-value结构
2 实现步骤
第一步 声明map集合变量
第二步 生成map集合变量的set和get方法
第三步 在表单输入项的name属性值写操作
使用属性封装数据到对象(会用)
第一步 在action声明变量,这个变量是实体类变量
(1)private User user;
第二步 生成变量的set和get方法
第三步 在表单输入项里面写表达式