spring mvc /struts 2 比较

spring mvc 处理流程:

    1、用户发送请求至前端控制器DispatcherServlet;

    2、DispatcherServlet收到请求后调用处理器映射器HandlerMapping;

   3、HandlerMapping根据请求url找到具体的处理器,生产处理器对象和处理器拦截器(如果有则生成)一并返回给DispatcherServlet;

    4、DispatcherServlet通过处理器适配器HandlerAdapter调用处理器;

    5、执行处理器Controller;

    6、Controller执行完返回ModelAndView;

    7、HandlerAdapter将Contorller执行结果ModelAndView返回给DispatcherServlet;

    8、DispatcherServlet将ModelAndView传给视图解析器ViewResolver;

    9、ViewResolver解析后返回具体view;

    10、DispatcherServlet对view进行视图渲染,即将数据模型填充到视图;

    11、DispatcherServlet响应用户。


struts 2 处理流程:

    1、客户端向servlet容器发送一个请求;

    2、请求经过一系列过滤器(如ActionContextCleanUp、SiteMesh过滤器等);

    3、接着FilterDispatcher核心控制器被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;

    4、如果需要执行某个Action,FilterDispatcher将请求的处理委派给ActionProxy;

    5、ActionProxy通过Configuration Manager询问框架的配置文件struts.xml,找到需要调用Action;

    6、ActionProxy创建一个ActionInvocation实例;

    7、ActionInvocation负责调用Action,在此之前会依次调用所有配置的拦截器;

    8、一旦Action执行完毕,ActionInvocation负责根据结果码字符串在struts.xml的配置中找到对应的返回结果,并跳转相应页面;

    9、拦截器被再次执行;

    10、过滤器被再次执行。


spring mvc 与 struts2 的区别:

    1、核心控制器:spring mvc的核心控制器是servlet;struts2的核心控制器是filter;

    2、控制器实例:spring mvc理论上会比struts2快一些。spring mvc是基于方法进行开发的,而struts2 是基于对象,每次发送一个请求,都会实例化一个action,每个action都会注入属性;而spring更新servlet一样,只有一个实例,每次请求执行对应的方法即可;

   3、参数传递:spring mvc 请求参数传递到方法的形参;struts2 参数传递是通过类的属性,其实都是通过值站栈(ValueStack)进行传递和赋值;

    4、学习难度:Struts更加很多新的技术点,比如拦截器、值栈及OGNL表达式,学习成本较高,springmvc 比较简单,比较容易上手。

    5、Struts是通过值栈存储请求和响应数据,通过OGNL存取数据;spring mvc是通过参数解析器将request请求解析,并给方法形参赋值,将数据和视图封装成modelandview,最后又将modelandview中的模型数据传递到页面。




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值