一、strust2概述
1、MVCII模式的实现框架
2、简化开发的难度和配置的细节
3、提升开发进度和隐藏数据的传输过程。
二、struts2的构成
1、控制器 由过滤器和拦截器共同组成,拦截器负责完成属性参数的设置。能够对用户传递的数据进行验证!
2、值栈–设置动作模型属性的作用域(request)
3、视图–jsp以及struts2的标签
4、结果类型–在配置文件中指定转向的方式(redirect或者dispatcher)
5、拦截器
(1)设置参数给Action的属性
(2)验证数据的正确性和业务是否符合逻辑规则
(3)控制动作模型的执行结果和响应的视图。
6、动作模型Action
用于接受用户的请求并处理请求响应用户。
动作模型的命名规范: 实体类+Action,例如:UsersAction
7、配置文件struts.xml(继承strust-default.xml) 用于配置动作模型。和结果的转型方式(转发和重定向)
三、struts2的开发步骤
1、在MyEclipse中导入strust2组件包,自动在web.xml文件中配置struts2的过滤器
2、编写实体类和业务类
3、编写动作类
4、修改struts.xml文件,配置动作类
5、编写jsp测试
四、工作原理
在Struts2框架中的处理大概分为以下几个步骤
1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求
2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类
6 ActionProxy创建一个ActionInvocation的实例。
7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper
五、工作流程
1、客户端浏览器发出HTTP请求.
2、根据web.xml配置,该请求被FilterDispatcher接收
3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton
4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面
6、返回HTTP响应到客户端浏览器
六、思考
因为对框架的不熟悉,总是在根据模板模仿着写代码,当我今天总结的时候发现,有很多地方不是很懂,然后在网上看到了很多人的解释都偏官方一点的解释,最后看了很多书籍自己做了一下总结。
- 为什么action类的执行方法没有接受任何浏览器传递的参数,例如登录界面的账号和密码。但是却可以在后台拿到user的属性,并做以判断。
我的理解是: 我们在写jsp界面的时候,账号的name=“us.usname” 表示为动作模型的us属性的子属性uname赋值
所以其实我们的账号和密码已经封装在了user的实体对象中 ,这其实就是框架的好处------提升开发进度和隐藏数据的传输过程。
然后在.xml文件中进行配置,当执行方法返回一个String的result时候,判断,并进行跳转在返回HTTP响应到客户端浏览器