1、声明性架构:struts2允许使用高级的声明性架构特性描述应用程序的架构组件,而将创建这些组件的任务交给框架;
2、工作流路径:当一个特定的URL被单击的时候会触发哪个动作,以及该动作会选择哪个结果来完成处理流程;
3、声明性架构的两种方式:基于XML的配置文件或者java注解方式;
4、标记哪些类是动作类:一种是让动作类实现Action接口,一种是使用命名约定,所有的动作类命名以Action结尾;
5、struts2是一个面向动作的框架,动作是这个框架的核心;
6、动作的作用:
封装工作单元;
为数据转移提供场所;
返回字符串,决定结果的去向;
7、在包上只能设置4个属性:
name(必须):包的名字;
nameSpace:包内所有动作的命名空间;
extends:被继承的父包;
abstract:如果为true,这个包只能用来定义可继承的组件,不能定义动作;
如果不设置命名空间,请求就会进入默认的命名空间,默认命名空间在所有其他命名空间之下,用来解决不能与任何显式声明的命名空间匹配的请求,默认命名空间实际上是空字符串;
8、默认的动作类、方法以及result元素的name属性值:
当我们在配置Action元素时,如果不指定一个类,那么继承struts-default包后,框架会默认为我们提供一个类,类中有一个默认的execute方法,并且会返回一个默认值success,当只是起到一个跳转作用,不做其他业务处理的时候可以使用;
9、继承ActionSupport:
这个类实现了Action接口和其他几个默认接口,提供了诸如数据验证、错误消息本地化等功能。
(1)基本验证:
ActionSupport类实现了一个validate方法,当我们写的类继承这个类之后要重写validate方法,主要是重写其验证逻辑,在请求到达业务处理层之前,默认的拦截器栈里面有两个拦截器起了作用,params拦截器和workflow拦截器,params拦截器主要是将页面的参数转移到Action对象里面,在这些数据被数据模型接受之前workflow对这些数据进行验证(调用validate方法),如果验证失败我们会添加一条错误信息,注意validate是没有返回值的,当validate方法执行完毕后,控制回到workflow拦截器,然后检查验证逻辑中是否产生了错误信息(ValidationAware接口定义了获取和存储错误信息的方法),如果找到错误信息workflow拦截器会改变请求的工作流,返回“input”,配置下相应的result即可。如果没有则执行业务逻辑。
(2)使用资源包处理文本消息:
TextProvider提供了对文件中消息访问的方法,LocalProvider获取用户所在地域;
首先要创建属性文件,并且对照动作类命名;
把文件放在包含java类的包中;
调用getText方法,传入关键字
10、向对象传递数据:
(1)域模型
(2)ModelDriven
11、struts2文件上传