1.动作的作用:
(1)封装一系列响应某个请求的具体工作。
动作使用execute()方法来处理的一些列业务逻辑,如果业务逻辑复杂,我们可以将这些业务逻辑构成一个业务组件,再将这个组件注入到动作中。Struts2框架支持依赖注入(dependency injection),后续学习关于spring的整合。 这样做可以使代码更加整洁、耦合度更低。
(2)从请求到视图的框架自动数据传输中作为数据的携带者。
可以将期望承载的数据实现为javaBean属性,之后配置对应数据名称的动作属性,框架将完成中间的传递工作。
(3)帮助框架决定哪个结果是应该对应响应而给出的视图。
一般execute()方法最终返回一个String值,帮助框架决定给出哪一个响应页面。常见的就是SUCCESS、ERROR等。
2.打包
Name: (必须有)包的名字
namespcae:包内所有动作的命名空间
extends: 被继承的父包 一般都是继承struts-default包(这是一个功能强大的包)
abstract: 默认为false,如为true,则此包只能用于定义可继承的组件,不能定义动作
如果不设置命名空间,即namespace属性,则动作会进入默认命名空间。所以在知名的命名空间下找不到的动作,最后都会进入默认命名空间查找一边。
3.关于拦截器
拦截器的声明升序很重要,例如一般params拦截器就生命在workflow拦截器之前,需要先接受到数据,将这些请求数据转义到动作对象上,之后在用workflow拦截器在数据被模型接受之前进行验证工作。
(1)封装一系列响应某个请求的具体工作。
动作使用execute()方法来处理的一些列业务逻辑,如果业务逻辑复杂,我们可以将这些业务逻辑构成一个业务组件,再将这个组件注入到动作中。Struts2框架支持依赖注入(dependency injection),后续学习关于spring的整合。 这样做可以使代码更加整洁、耦合度更低。
(2)从请求到视图的框架自动数据传输中作为数据的携带者。
可以将期望承载的数据实现为javaBean属性,之后配置对应数据名称的动作属性,框架将完成中间的传递工作。
(3)帮助框架决定哪个结果是应该对应响应而给出的视图。
一般execute()方法最终返回一个String值,帮助框架决定给出哪一个响应页面。常见的就是SUCCESS、ERROR等。
2.打包
Name: (必须有)包的名字
namespcae:包内所有动作的命名空间
extends: 被继承的父包 一般都是继承struts-default包(这是一个功能强大的包)
abstract: 默认为false,如为true,则此包只能用于定义可继承的组件,不能定义动作
如果不设置命名空间,即namespace属性,则动作会进入默认命名空间。所以在知名的命名空间下找不到的动作,最后都会进入默认命名空间查找一边。
3.关于拦截器
拦截器的声明升序很重要,例如一般params拦截器就生命在workflow拦截器之前,需要先接受到数据,将这些请求数据转义到动作对象上,之后在用workflow拦截器在数据被模型接受之前进行验证工作。