java开发和structs的关系_java---springMVC与strutsMVC的区别
项目刚刚换了web层框架,放弃了struts2改用spring3mvc
当初还框架的时候目的比较单纯---springmvc支持rest,小生对restful url由衷的喜欢
不用不知道 一用就发现开发效率确实比struts2高
我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置
spring3 mvc可以认为已经100%零配置了(除了配置springmvc-servlet.xml外)
比较了一下strus2与spring3 mvc的差别
============================================
struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入
struts2实际上是通过setter getter方法与request打交道的
struts2中,一个Action对象对应一个request上下文
spring3 mvc不同,spring3mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去
在spring3mvc中,一个方法对应一个request上下文
好了 我们来整理一下
struts2是类级别的拦截, 一个类对应一个request上下文,
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应
所以说从架构本身上 spring3 mvc就容易实现restful url
而struts2的架构实现起来要费劲
因为struts2 action的一个方法可以对应一个url
而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了
===================================
spring3mvc的方法之间基本上独立的,独享request response数据
请求数据通过参数获取,处理结果通过ModelMap交回给框架
方法之间不共享变量
而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的
这不会影响程序运行,却给我们编码 读程序时带来麻烦
====================================
spring3 mvc的验证也是一个亮点,支持JSR303
处理ajax的请求更是方便 只需一个注解@ResponseBody ,然后直接返回响应文本即可
附上一段代码
Java代码
@RequestMapping(value="/whitelists")
public String index(ModelMap map){
Account account = accountManager.getByDigitId(SecurityContextHolder.get().getDigitId()) ;
List groupList = groupManager.findAllGroup(account.getId()) ;
map.put("account", account);
map.put("groupList", groupList);
return "/group/group-index" ;
}
//@ResponseBody ajax响应
@RequestMapping(value="/whitelist/{whiteListId}/del")
@ResponseBody
public String delete(@PathVariable Integer whiteListId){
whiteListManager.deleteWhiteList(whiteListId) ;
return "success" ;
}
评论截选:
注解和性能没有关系,Servlet的生命周期是这样的,在调用这个Servlet时候才创建这个Servlet的类并运行init()方法,然后另外有人运行这个Servlet的时候并没有重启创建Servlet和运行里边的init()方法,所以Servlet容器时单利的,spring就是Servlet的封装的框架,包括所有的依赖注入都是在tomcat启动的时候全部被初始化的,其他的注解也一样,也就是说注解也就是以前的xml的配置的替代,以前没个请求都要运行一次xml吗?并不是的,xml是在tomcat启动时就读一次而已并利用里边的配置初始化很多的东西,然后就不在使用了,因为都成了单利的,这样就保证了效率,不是每次都把我们要注入的全部new一次,而是tomcat启动的时候全部new一次以后就不new了,保证了效率问题。
所以我不明白那个 光看注解就知道性能不好?
注解就是替代了xml配置而已,而且也是初始化一次,也就是说和编写Servlet一样的在init()中做了很多的事而已,并且以后不会在运行init()了,除非你重启tomcat。
struts1也一样,运行一个action的方法的时候创建一个action类,以后再运行就不会创建了,其实也是Servlet的封装的框架。
struts2特殊一些,没个请求要new一个action来保证线程安全。所以效率会低一些,但是不会低的特别离谱。
这样也说明了spring3的mvc和struts1的mvc还有Servlet都是方法的线程安全,所以在类方法声明的私有或者公有变量不是线程安全的,struts2的确实是线程安全的。
所有各有各的好处,用什么当然是仁者见仁智者见智了。
不过我们确实在新项目中大量的使用了spring3,因为REST挺好的。
java开发和structs的关系_java---springMVC与strutsMVC的区别相关推荐
- java开发的框架有哪些_java开发中常用框架有哪些
1 java开发中常用框架有哪些 java从推出到现在技术不断发展,语言也优化的越来越好,对于java工程师来说技术的不断发展,他们需要不断学习java进阶,而对于新手来说就能从基础到核心.那么新手该 ...
- java开发环境的建立过程_Java开发环境的搭建及第一个Java程序的创建
Java的几个基本概念: JVM:Java Virtul Machine(Java虚拟机) JRE:Java Runtime Environment(Java运行时环境) JDK:Java Devel ...
- java开发需要掌握哪些东西_java开发需要掌握哪些技能
1 java开发需要掌握哪些技能 java,互联网发展出来的产物,如今变成了屈指可数的几大编程语言之一,他的未来是不可限量的.因此很多人都想要学会这门技术,希望在以后能有他的一席之地.那么下面小编给大 ...
- java中类与类的关系_Java中类与类的关系
在java中类和类的关系大致分三种:泛化.关联.依赖. 1. 泛化(Generalization) "XX是一个XX"关系(is a),通常使用的关键词为 extends.impl ...
- java开发中遇到的问题_java开发中遇到的问题及解决方法(持续更新)
摘自 http://blog.csdn.net/pony12/article/details/38456261 工作中,以C/C++开发为主,难免与其他服务和Web进行交换,Java开发必不可少,又不 ...
- java开发面试自我介绍模板_java求职自我介绍范文_java工程师面试个人介绍
Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言,应聘Java工作时,面试的自我介绍要与岗位接轨.本文是学习啦小编为大家整理的java求职自我介绍范文,仅供参考. java求职自我介绍范文 ...
- java开发工程师的晋升路径_Java开发工程师职业发展及晋升路线图
1.Java程序员 这是Java开发工程师的第一阶段了,一般是刚入门Java行业者.这一阶段主要是掌握了一定的Java编程技术,有一定的Java语言基础,能够了解.掌握和编写一定的代码.处在这一阶段的 ...
- java开发oa系统的目的_JAVA开发的OA系统价值体现
根据目前的OA市场,PHP和JAVA各自为政,PHP开发的OA产品主要是用于低价战,但JAVA开发的OA产品大部分集中在高价战.导致产品价格的关键因素:PHP门槛非常低,程序员数量也很多,再通过PHP ...
- 简述java开发环境的建立过程_java开发环境的完整搭建过程
卸载JDK 1.删除java的安装目录 2.删除JAVA_home 3.删除path下关于java的目录 4.java -version 安装JDK 1.百度搜索JDK8,找到下载地址 2.同意协议 ...
最新文章
- 吐血整理:24种可视化图表优缺点对比,一图看懂!
- linux内核grub的作用与用途,linux中grub是干嘛的
- freemarker和thymeleaf的使用样例
- python中getattr()的用法
- 积累的历年博客终于发完了
- 1.5 密码学应用PKI体系
- wps怎么图片透明_wpsword如何设置图片透明度
- Spring - 事件监听机制 源码解析
- 谷歌浏览器chrome扩展插件-农名的世界脚本
- 【面试题】京东大数据面试真题汇总,收藏必备
- CAcls命令在提权中的使用
- xpath解析最全攻略
- 苹果 iOS 15 正式发布
- Cordova开机画面
- 秒表工具类StopWatch
- PAT——1121 Damn Single 甲级
- JS数组中的剩余方法
- 女子怀孕怕与胎儿抢营养 剪掉一米三长发
- Docker使用中的一些错误总结
- 计算机应用技术故事会教案,信息技术教学故事