Struts2的基本流程分析

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作为视图资源
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值