博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springMVC与struts2的区别
阅读量:7101 次
发布时间:2019-06-28

本文共 1856 字,大约阅读时间需要 6 分钟。

现在javaWeb开发流行用的模式是 mvc , 关于controller层, 有两个主流: 一是springMVC ,一是 Struts2

springmvc:

  1.机制: springmvc 入口是servlet

    1. <!-- Processes application requests -->  
    2. <servlet>  
    3.     <servlet-name>dispatcher</servlet-name>  
    4.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    5.     <load-on-startup>1</load-on-startup>  
    6. </servlet>  
    7.           
    8. <servlet-mapping>  
    9.     <servlet-name>dispatcher</servlet-name>  
    10.     <url-pattern>/*</url-pattern>  
    11. </servlet-mapping>

  2.性能: springmvc是基于方法设计的,是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去;

             粒度更细,所以小心把握像在servlet控制数据一样;springmvc中一个方法就对应一个request上下文

  3.参数共享: 由于springmvc中一个方法对应一个request上下文, 所以参数不具有共享性

  4.设计思想: spring比较谨慎,在servlet上扩展

 

struts2:

 1.机制: struts2 入口是 filter

          <filter>

              <filter-name>action</filter-name>
              <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
          </filter

          <filter-mapping>

              <filter-name>action</filter-name>
              <url-pattern>/*</url-pattern>
          </filter-mapping>

 

 2.性能:  struts2 是基于的设计, 是类级别的拦截,每次请求就创建一个Action,然后调用setter getter方法把request中的数据注入;

            struts2实际上是通过setter getter方法与request打交道的;struts2中,一个Action对象对应一个request上下文。

 3.参数共享: 由于Struts中一个action对应一个request上下文, 所以参数在类中的各个方法中是可以共享的

 4.设计思想: struts基于oop的编程思想

ps:关于servlet与filter区别,请看下一章,关于这里的上下文request,这个如若不明白,那就要去了解http,oop编程思想

 

总结: springmvc 与 struts2 的区别

    主要体现在intercepter(拦截器)的实现机制:

    struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式。

    这样导致struts的配置文件量比spring mvc大,虽然struts的配置能继承,

    论使用上来讲,spring mvc使用更加简洁,开发效率Spring MVC确实比struts2高。

    spring mvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上spring3 mvc就容易实现restful url。

    struts2是类级别的拦截,一个类对应一个request上下文;实现restful url要费劲,因为struts2 action的一个方法可以对应一个url;而其类属性却被所有方法共享,

    这也就无法用注解或其他方式标识其所属方法了。

    spring3 mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量,

    而struts2搞的就比较乱,虽然方法之间 也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码,读程序时带来麻烦。

 

转载于:https://www.cnblogs.com/yiyongyao/p/4500704.html

你可能感兴趣的文章
Nancy之基于Nancy.Hosting.Self的小Demo
查看>>
KDD 18 论文解读 | GraphWave:一种全新的无监督网络嵌入方法
查看>>
shell 在手分析服务器日志不愁?
查看>>
jeesite配置指南(官方文档有坑,我把坑填了!)
查看>>
Nginx 服务器本地缓存配置(学习笔记十五)
查看>>
[WPF]自定义鼠标指针
查看>>
Linux下安装ActiveMQ-5.15.8
查看>>
Spring小知识2
查看>>
基于开源MQTT自主接入阿里云IoT平台(Java)
查看>>
java8中的时间类LocalDate、LocalTime、LocalDateTime使用总结
查看>>
杜跃进:数据安全治理的基本思路
查看>>
C#使用Xamarin开发可移植移动应用进阶篇(6.使用渲染器针对单个平台自定义控件..很很很很重要..),附源码...
查看>>
JavaWeb页面增加隐藏版权信息
查看>>
T-SQL学习中--取得部分检索数据记录
查看>>
# 小贼音乐--Swift开发笔记 Step 1
查看>>
【项目管理】低成本提高关键路径成功率
查看>>
使用LUMPY检测结构变异
查看>>
安装Coturn(TURN / STUN服务器)
查看>>
出差第三天
查看>>
度小满获南京银行三年100亿元授信额度,双方并合作共同发力消费金融
查看>>