Struts2的原理

Struts2是一个基于MVC设计的Java web应用框架

Struts2在以MVC中解决了三个问题:
1.控制器如何根据用户的请求决定调用哪个模型(具体是模型中的Action组件)进行处理
2.如何在业务逻辑处理器与servlet API 分离的情况下使处理器获得请求参数,并得以执行
3.如何将处理后返回的数据传给相应的视图生成动态网页响应给用户

工作流程:

1.浏览器发起一个Request请求,经过一系列过滤器到达FilterDispatcher

  • 2.FilterDispatcher调用ActionMapping查询是否需要处理这个请求
  • 3.将URL交给ActionProxy去处理

4.ActionProxy结合URL通过配置管理器读取XML文件生成一个Action Invocation对象

5.Action Invocation执行一系列拦截器到达Action,执行Action,根据XML文件判断是否返回视图给浏览器

 

Struts2的拦截器

拦截器在概念上与servlet过滤器或JDK代理类相同。拦截器允许横切功能,把action以及框架分开实现。你可以使用拦截器实现以下操作:

在调用action之前提供预处理逻辑。

在调用action后提供后处理逻辑。

捕获异常,以便可以执行备用处理。

Struts2框架中提供的许多功能都是使用拦截器实现的,包括异常处理,文件上传,生命周期回调和验证等。事实上,由于Struts2将其大部分功能基于拦截器,因此不太可能为每个action分配7个或8个拦截器。
 

Struts2拦截器原理
Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器。

PS:
1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.
2. 拦截器栈(Interceptor Stack)。Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值