开发者学堂课程【Java Web开发系列课程 - Struts2框架入门:Struts2流程一】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/537/detail/7289
Struts2流程一
内容介绍:
一、 简单执行流程
二、 struts2工作的基本原理
三、 详细流程
一、简单执行流程
(1)使用 StarUML 软件进行分析
(2)执行过程:
通过浏览器发送一个请求,请求到达哪个地方,取决于过滤器的配置:
Browser(浏览器)发送请求 request,tomcat(服务器)进行接收,而后被匹配到的过滤器接收,进而 struts2开始工作,解析用户的请求,解析用户的录入数据,可以接受 request,而后进行相应的解析工作。
由 class 生成对应的 action,创建对应的对象,进行对应的类型转换,参数的赋值,方法的调用,结果的验算等。
当然,这些工作 struts2是通过拦截器的帮助来完成的。(默认有18个拦截器)
(3)流程是解决错误的最根本办法,根据流程可以找到错误。
二、struts2工作的基本原理
方法执行要有对应的创建对象,创建对象由 struts2创建,根据此种方法,struts2可以创造对象,我们可以调用此种方法,可以对此对象的属性赋值,这个方法的访问结果可以根据匹配进行转发到同向的另一个执行页面中去。
mapping 映射,struts.xml.配置文件解析,生成对应的 action,通过一系列拦截器处理,调用 action 的 execute 方法,返回成功会到达成功,进而返回引擎给过滤器,给 tomcat,服务器传送给 Browser,
通过一系列拦截器处理,处理结束之后,调用 action 的 execute 方法,返回成功,返回引擎,返回给过滤器,
当用户提交一个请求,服务器接收,并且交给 struts2的核心过滤器来进行处理,struts2的过滤器调用 struts2的一系列处理器来进行处理(如:解析 struts.xml.配置文件,和用户提交的请求对比,如果找不到返回404,如果找到进行下一步处理。)
直到调用对应的 Action 类中的 execute 方法执行,执行完后再进行一系列处理到核心过滤器。
由核心过滤器返回给服务器,服务器对浏览器进行相应的响应。
三、 详细流程
详细流程图如上所示(百度上搜索 struts2执行流程,即可得到上图)
(1)发送的请求通过 ActionContextCleanUp 的清理工作后,多个过滤器执行工作后到达 FilterDispatcher。
(2)FilterDispatcher 实际上是核心的过滤器
(3)由上图可知,其他过滤器(处理权限的过滤器、处理乱码的过滤器等)配置在struts2过滤器之前。
(4)产生 ActionProxy,Configuration 读取 struts.xml.配置文件,读取完成之后,根据配置,会产生 Action Invocation 的对象,在对象里面会有许多拦截器和配置文件(Interceptor 就是其中一个拦截器),拦截器就是 struts2的完成功能。