开发时,选择Spring mvc ,还是选择Struts2

spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同。
spring mvc是基于方法的设计,sturts2是基于类设计的。

操作方法

  • 01

    spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同。 spring mvc是基于方法的设计,sturts2是基于类设计的。 springmvc将url和controller方法映射。映射成功后springmvc生成一个Handler对象,对象中只包括了一个method。方法执行结束,形参数据销毁。springmvc的controller开发类似service开发。strts2每次请求都会实例一个action,每个action都会被注入属性。spring mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring mvc中,一个方法对应一个request上下文。而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入;struts2实际上是通过setter getter方法与request打交道的;struts2中,一个Action对象对应一个request上下文。

  • 02

    struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的。 由上边原因,SpringMVC的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量,而Struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码 读程序时带来麻烦,每次来了请求就创建一个Action,一个Action对象对应一个request上下文。

  • 03

    由于以上原因,springmvc可以进行单例开发,并且建议使用单例开发,struts2通过类的成员变量接收参数,无法使用单例,只能使用多例。 struts更加符合oop的编程思想, spring就比较谨慎,在servlet上扩展。 Spring MVC和Spring是无缝的。 从这个项目的管理和安全上也比Struts2高(当然Struts2也可以通过不同的目录结构和相关配置做到SpringMVC一样的效果,但是需要xml配置的地方不少)。SpringMVC可以认为已经100%零配置。如果是用Spring作为全局控制的话,建议使用它自己的spring mvc吧,无缝整合。

  • 04

    struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式。 这样导致struts的配置文件量还是比spring mvc大,虽然struts的配置能继承,所以我觉得论使用上来讲,spring mvc使用更加简洁,开发效率Spring MVC确实比struts2高。spring mvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上spring mvc就容易实现restful url。struts2是类级别的拦截,一个类对应一个request上下文;实现restful url要费劲,因为struts2 action的一个方法可以对应一个url;而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。spring mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量,而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码,读程序时带来麻烦。 另外,spring3 mvc的验证也是一个亮点,支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可。

  • 05

    spring会稍微比struts快。经过实际测试,struts2速度慢,在于使用struts标签,如果使用struts建议使用jstl。 struts2由于使用时间长,早期版本中的漏洞较多,使用的话建议下载最新版的jar包。而springmvc很少有漏洞,这也是springmvc现在比较流行的一个原因吧。 最后需要说明的是,springmvc和struts2都是很好的java框架,没有谁好谁坏。你可以根据项目需求具体选择。

(0)

相关推荐

  • 用idea搭建spring mvc环境

    网上有很多教程,但是普遍都不是很详细,容易有遗漏.也没有太多解释原因.我自己总结了一个.并会附上一定的解释. 操作方法 01 我使用的版本是IntelliJ 15.0.3 02 打开IntelliJ, ...

  • Spring + Spring MVC + Mybatis 高性能web构建实例教程详解

    用最合适的技术去实现,并不断追求最佳实践.这就是架构之道. 希望这篇文章能给你们带来一些帮助,同时希望你们可以为这个项目贡献你的想法. 源码地址:https://github.com/Eliteams ...

  • dnf90版本剑魂pk装备选择?白手pk装备选择2017?

    dnf90版本剑魂pk装备选择?白手pk装备选择2017?dnf游戏中除了刷图以外,玩家最喜欢的就是pk了,但是竞技场现在改版了很多,甚至是装备都不知道怎么搭配选择,那么dnf剑魂pk装备怎么选择呢? ...

  • DNF90版本狂战红眼装备选择?最强史诗装备选择?

    DNF90版本狂战红眼装备选择?最强史诗装备选择?dnf90级版本开启之后,有了一大堆新的史诗装备选择,那么dnf90级狂战最合适的史诗套怎么选择呢?dnf90级版本狂战装备怎么选择最好? DNF90 ...

  • 开发时,apk文件应用程序未安装错误

    操作方法 01 用eclispe导出apk文件,拷贝到手机里安装时出现这个错误. 搜索了半天,都是普通用户出现这样问题的解决方案.对于开发时的很少. 解决方案:不要导出的那个文件,用工程文件目录下的b ...

  • 如何设置双系统启动时NT5NT6引导菜单默认选择项

    每次启动电脑时都要等着开机进入系统引导菜单,选择系统,安装的Win7和Win8双系统,电脑启动的时候有个NT6的启动引导菜单,虽然有上下顺序但是默认选择的是下面的,那么如何设置Win7和Win8双系统 ...

  • 诛仙手游灵契阵灵如何选择灵契阵灵选择攻略

    本次教大家诛仙手游灵契阵灵如何选择灵契阵灵,快来学习操作,希望可以帮助大家. 操作方法 01 基础界面显示的有灵契位.法身境界.法身等级.法身属性,属性总览.灵契位:灵契位有风.水.火.雷.山.林六种 ...

  • 怎样选择平板电脑怎么样选择一款好的平板电脑?

    2011年是平板电脑飞速发展的时代,现在商店上已有卖很多款平板电脑, 国内有非常多的平板电脑性能强大,携带方便,娱乐游戏更是一流,这些突出点也是我们最最看重的. 如果你已经寻觅了好久,那"怎 ...

  • linux软件开发时给gcc指定头文件和库文件路径的方法

    在Linux 下开发软件时,完全不使用第三方函数库的情况是比较少见的,通常来讲都需要借助一个或多个函数库的支持才能够完成相应的功能。从程序员的角度看,函数库实 际上就是一些头文件(.h)和库文件(.s ...