Struts2的工作流程和容易忽略的问题

     工作流程:

1,客户端提交一个HttpServletRequest请求

2,请求经过一系列的Filter的处理(ActionCleapUp,FilterDispatcher);

3, FilterDispatcher是Struts2的核心控制器,通常这是最后一个过滤器;

4, 请求到FilterDispatcher后,将询问ActionMapper是否调用一个Action来处理这个Request

5, 如果ActionMapper决定调用一个Action,FilterDispatcher把请求交给ActionProxy,进行处理;

6 ActionProxy通过Configuration Manager访问struts.xml;

7 ActionProxy 创建一个ActionInvocation实例,而ActionInvocation通过代理模式调用Action,(注意调用前会加载相关的所有Interceptor)

8,Action执行完毕,返回给result字符串,此时再按相反的方向通过Interceptor拦截器

9,最后ActionInvacation负责根据struts.xml配置的result元素,找到返回值相应的result,决定返回的视图;

 


   设计模式的角度:MVC的思想相似与观察者模式;在观察模式中,观察者和被观察者是两个对等的对象;在MVC思想中,被观察者往往只是数据体,而观察者是视图;

注意;经典的MVC与Web应用中的MVC也有差别,主要原因是web应用时一种基于HTPP请求/响应模式的,对于http的请求响应,如果用户不对应用发出请求,视图无法自动更新。

  MVC架构的底层机制是:核心Servlet或Filter接受到用户请求后,通常会对用户进行简单的预处理(解析,封装参数)然后通过反射创建Action实例,并调用Action指定的方法来处理用户的请求,但是如果Servlet或者Filter拦截了用户的请求,就会通过下面的两种方式创建Action实例;

a: 通过配置文件,可以配置login.action对应使用LoginAction类《这样MVC架构就能创建对象;

b:利用约定:例如:核心控制器收到regist.action请求后,将调用Action类来处理请求。


  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值