Struts2的基本流程分析
2014-12-04 21:26
141 查看
Struts2的基本流程分析
大致上,Struts2框架由3个部分组成,核心控制器StrutsPrepareAndExecuteFilter,业务控制器和用户实现的业务逻辑
逻辑组件,而在这三个部分里,Struts2框架提供了核心控制器StrutsPrepareExecuteFilter,而用户需要实现业务控制器和业务逻辑组件
核心控制器StrutsPrepareAndExecuteFilter
StrutsPrepareAndExecuteFilter控制器作为一个Filter运行在Web应用中,它负责
拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求,所有请求都会交给Struts框架处理
Struts2框架获得了用户请求后,将根据请求的名字决定调用那个业务逻辑组件,例如:
对应Login请求,Struts2调用调用名为Login的Action来处理该请求
Struts2应用中Action都被定义在struts.xml文件中,在该文件中定义Action时,定义该Action的name属性和class属性
其中name属性决定该Action处理哪个用户请求,而class数据决定该Action的实现类
Struts2用于处理用户的请求的Action实例,并不是用户实现的业务控制器,而Action代理
-因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求
而Struts2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequestIQ请求中的参数解析出来,传入到Action中
并回调Action的execute方法来处理用户请求
显然,这是典型的AOP(面向切面编程)处理方式
用户实现的Action类仅仅是Struts2的Action代理的代理目标,用户实现的业务控制器(Action)则包含了对用户请求的
处理,用户的请求数据包含在HttpServletRequest对象,而用户的Action类无须访问HttpServletRequest对象,拦截器负责将HttpServletRequest
里的请求数据解析出来,并传给业务逻辑组件Action实例
业务控制器组件就是用户实现Action类的实例,Action类里通常包含一个execute方法,该方法返回一个字符串
-该字符串就是一个逻辑视图名,当业务控制器处理用户请求后,根据处理结果不同,execute()方法返回不同的字符串-每个字符串对应一个视图名
开发出系统所需要的业务控制器后,还需要配置Struts2的Action,即需要配置Action的如下3个部分的定义:
(1)Action所处理的URL
(2)Action组件所对应的实现类
(3)Action返回的逻辑视图和物理视图资源之间的对应关系
每个Action都要处理一个用户请求,而用户请求总是包含指定的URL,当StrutsPrepareAndExecutorFilter拦截到
用户请求后,根据请求的URL和Action处理URL之间对应关系来处理转发
Struts2的模型组件
通常,MVC框架里的业务控制器会调用模型组件的方法来处理用户请求,也就是说,业务逻辑控制器不会对用户请求
进行任何实际处理,用户请求最终由模型组件负责处理,业务控制器只是中间负责调度的调度器,这也是称Action为控制器的原因
当控制器需要获取业务逻辑组件实例是,通常并不会直接获取业务逻辑组件实例,而是通过工厂模式来获取逻辑组件实例,或者利用其它IOC容器
(如Spring容器)来管理业务逻辑组件实例
Struts2的视图组件(FreeMaker,Velocity和XSTL等)当Struts2的控制器返回逻辑视图名时,逻辑视图并未与任何的视图
技术管理,仅仅是返回返回一个字符串,该字符串作为逻辑视图名
在Struts.xml文件中配置Action时,不仅需要指定Action的name属性和class属性,还有为Action元素指定系列<result.../>子元素。每个<result.../>子元素定义一个逻辑
视图和物理视图之间的映射,Struts2默认使用jsp作为视图资源
大致上,Struts2框架由3个部分组成,核心控制器StrutsPrepareAndExecuteFilter,业务控制器和用户实现的业务逻辑
逻辑组件,而在这三个部分里,Struts2框架提供了核心控制器StrutsPrepareExecuteFilter,而用户需要实现业务控制器和业务逻辑组件
核心控制器StrutsPrepareAndExecuteFilter
StrutsPrepareAndExecuteFilter控制器作为一个Filter运行在Web应用中,它负责
拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求,所有请求都会交给Struts框架处理
Struts2框架获得了用户请求后,将根据请求的名字决定调用那个业务逻辑组件,例如:
对应Login请求,Struts2调用调用名为Login的Action来处理该请求
Struts2应用中Action都被定义在struts.xml文件中,在该文件中定义Action时,定义该Action的name属性和class属性
其中name属性决定该Action处理哪个用户请求,而class数据决定该Action的实现类
Struts2用于处理用户的请求的Action实例,并不是用户实现的业务控制器,而Action代理
-因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求
而Struts2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequestIQ请求中的参数解析出来,传入到Action中
并回调Action的execute方法来处理用户请求
显然,这是典型的AOP(面向切面编程)处理方式
用户实现的Action类仅仅是Struts2的Action代理的代理目标,用户实现的业务控制器(Action)则包含了对用户请求的
处理,用户的请求数据包含在HttpServletRequest对象,而用户的Action类无须访问HttpServletRequest对象,拦截器负责将HttpServletRequest
里的请求数据解析出来,并传给业务逻辑组件Action实例
业务控制器组件就是用户实现Action类的实例,Action类里通常包含一个execute方法,该方法返回一个字符串
-该字符串就是一个逻辑视图名,当业务控制器处理用户请求后,根据处理结果不同,execute()方法返回不同的字符串-每个字符串对应一个视图名
开发出系统所需要的业务控制器后,还需要配置Struts2的Action,即需要配置Action的如下3个部分的定义:
(1)Action所处理的URL
(2)Action组件所对应的实现类
(3)Action返回的逻辑视图和物理视图资源之间的对应关系
每个Action都要处理一个用户请求,而用户请求总是包含指定的URL,当StrutsPrepareAndExecutorFilter拦截到
用户请求后,根据请求的URL和Action处理URL之间对应关系来处理转发
Struts2的模型组件
通常,MVC框架里的业务控制器会调用模型组件的方法来处理用户请求,也就是说,业务逻辑控制器不会对用户请求
进行任何实际处理,用户请求最终由模型组件负责处理,业务控制器只是中间负责调度的调度器,这也是称Action为控制器的原因
当控制器需要获取业务逻辑组件实例是,通常并不会直接获取业务逻辑组件实例,而是通过工厂模式来获取逻辑组件实例,或者利用其它IOC容器
(如Spring容器)来管理业务逻辑组件实例
Struts2的视图组件(FreeMaker,Velocity和XSTL等)当Struts2的控制器返回逻辑视图名时,逻辑视图并未与任何的视图
技术管理,仅仅是返回返回一个字符串,该字符串作为逻辑视图名
在Struts.xml文件中配置Action时,不仅需要指定Action的name属性和class属性,还有为Action元素指定系列<result.../>子元素。每个<result.../>子元素定义一个逻辑
视图和物理视图之间的映射,Struts2默认使用jsp作为视图资源
相关文章推荐
- struts2配置文件加载流程分析
- MonoRail学习笔记四:MonoRail基本流程分析
- Java程序员从笨鸟到菜鸟之(四十)细谈struts2(四)struts2中action执行流程和源码分析
- Struts2初始化流程及源码分析
- struts2工作流程(从九个步骤来分析)
- MonoRail学习笔记四:MonoRail基本流程分析
- Struts2请求处理流程及源码分析
- IMSDroid Http Stack分析 -- 基本流程
- OT源代码的分析,OrtHello 迟早攻破你 (二)OT的基本属性和基本流程
- Struts2请求处理流程及源码分析
- Struts2的基本流程
- Loadrunner的Tuxedo脚本分析,基本流程和基本函数介绍
- 第一章 架站所需的技能分析与基本的流程
- Struts2的基本流程的详细介绍
- struts2执行流程分析
- MonoRail学习笔记四:MonoRail基本流程分析
- Struts2源码粗略分析三:请求处理流程分析
- zeromq源代码分析1------基本工作流程分析
- 数据分析基本流程
- Struts2请求处理流程及源码分析