Struts2的基本原理

Struts2 的基本工作流程

 

Struts2框架是由3个本分组成:

  1. 核心控制器FilterDispatcher

  2. 业务控制器

  3. 用户实现的业务逻辑组件

下面来分别介绍这3个部分:

  1. 核心控制器FilterDistpatcher,  负责拦截所有的用户请求,是作为一个Filter运行在Web应用中,在web.xml中配置。  当用户请求到达时,该Filter会过滤用户的请求,请求要是以action结尾,该请求就会被转到Struts2框架来处理。

  2. Struts2处理请求的action的时候,会到sturts.xml中去找相应的Action实例,其实并不是用户实现的Action实例,而是一个Action的代理——因为用户实现的业务控制器没有直接和Servlet API相关连,是无法处理用户请求的。所以在这里,Struts2使用了AOP技术,动态代理来定义一些拦截器,这些拦截器负责将HttpServletRequest请求中的参数解析出来,传到Action中,并回调Action实例中的execute方法来处理用户的请求。

  3. 用户自己实现的业务逻辑组件,只是一个代理目标,它包含了对用户请求的处理。用户请求的参数还是包含在HttpServletRequest对象里,而用户自己定义的Action类是不能直接反问HttpServletRequest对象的。拦截器会负责将HttpServletRequest里的请求的数据解析出来,交给用户实现的业务逻辑组件。

知道了上面的原理,接下来就好办了。例如 模型驱动的实现原理就清楚多了(这里只是我自己的理解)

  • 首先,要使用模型驱动,就要在Action的类中实现ModelDriven接口,实现ModelDriven接口就必须要实现getModel的方法

  • 接下来,就要看struts-default.xml的配置,里面有许多的拦截器,在驱动这一块有属性驱动的拦截器,还有模型 驱动的拦截器,属性拦截器为params,模型驱动的拦截器为modelDriven,而ModelDriven拦截器就负责将参数传刚模型的属性。其他的都和上面的一样,只不过多执行了个ModelDriven拦截器的处理而已而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值