springmvc, 和 struct2 哪个好

谁是我的谁的谁 2015-10-10 10:18:56
我是初学者,学java web开发。
springmvc, 和 struct2 哪个好
...全文
543 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bartholomew4 2015-10-13
  • 打赏
  • 举报
回复
struts2适合学习,spring mvc适合实用

如果你要对MVC框架的原理熟悉没有比struts2更好的了,如果你要快速掌握spring mvc是首选。

至于性能和安全性spring mvc比struts2好纯属无稽之谈,struts2的确出过事也造成了sping mvc影响力超过struts2成为热门(谁家没出过事情,windows天天爆漏洞也不见大众换成linux),但不可否认的是struts2的标签性能渣到无力吐槽,至于整体性能可以去网上搜文章两者没多少区别。

spring mvc和spring是2个不同的概念,后者是一个很大的项目,前者只是这个项目中的其中一个小东西。

PS:spring越做越大,有谁为了某些东西必须引入好多其他无关的包,感觉已经有些重了,cglib做动态代理,引入struts2(可能还有其他框架可用,我没接触过除struts2和spring mvc外的view层)和hibernate,mybatis,其实更能轻一些
  • 打赏
  • 举报
回复
顶一下 顶一下 顶一下 顶一下
小小烨 2015-10-13
  • 打赏
  • 举报
回复
struts2:
面向切面编程的思想在Strut2中也有了很好的体现。最重要的体现就是拦截器的使用。拦截器就是一个一个的小功能单位,用户可以将这些拦截器合并成一个大的拦截器,也就是拦截器栈。只要配置为默认。所有action都可以使用
这些拦截器使用struts2相对servlet
1.参数封装更方便。可以使用属性驱动或者模型驱动实现。
2.文件上传只需要注意form表单的要求。提供对应的file属性和fileName即可完成文件上传
3.其拦截器封装了国际化和输入校验功能,实现更简洁。编写响应配置文件即可。但是使用较少。校验使用JS代码校验给用户体验更好。例如信息的效果展示。
4.获取servletAPI更加简便。可以直接使用ActionContext.getContext()/getSession()/getApplication().操作相应的域。也可以直接使用servletActionContext.getRequest()/getResponse()/getServletContext()来操作
5. 基于MVC架构,框架结构清晰,开发过程中只需要关注业务层的数据获取封装到对应的POJO中再根据对应的result返回到对应的view展示。
6.struts2拥有独自的一套taglib标签库。从struts2的值栈获取数据使用非常方便。但是该标签与struts2框架耦合紧密。如果需要项目改造页面改动将十分麻烦。工作量巨大。
7。struts2的action是多实例的,因此再与spring整合的时候需要配置为多例。否则值栈数据会混乱。action和页面取值将会错误


springMVC
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5、执行处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户

truts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入
struts2实际上是通过setter getter方法与request打交道的 
struts2中,一个Action对象对应一个request上下文 

spring3 mvc不同,spring3mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去
在spring3mvc中,一个方法对应一个request上下文 

spring3mvc的方法之间基本上独立的,方法之间不共享变量 ,

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

由于Struts2需要针对每个Request进行封装,把Request,Session等Servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全。所以在原则上,是比较耗费内存的
豫让_______ 2015-10-12
  • 打赏
  • 举报
回复
呵呵哒。可以这样说,现在struts2已经少有人用了,当然除了学校里的老师。
samp9402 2015-10-12
  • 打赏
  • 举报
回复
5 楼 胡 扯
facebook47 2015-10-11
  • 打赏
  • 举报
回复
都要理解,各有各的好
  • 打赏
  • 举报
回复
我有本 轻量级javaee企业应用实战 struct2+spring4+hibernate 书 。 上面讲spring4
还有一个问题 spring.40和springmvc是一回事吗
疯狂熊猫人 2015-10-11
  • 打赏
  • 举报
回复
纯粹接口的话,用spring mvc就可以了。struts主要是视图展示,但是性能和安全性都不如spring好
N_P_F 2015-10-11
  • 打赏
  • 举报
回复
springmvc把spring和struts2整合了,看个人习惯,现在开发都有用
凨行者 2015-10-11
  • 打赏
  • 举报
回复
个人更喜欢springmvc 轻巧简便 开发快 各种注解 用着很爽

但是实际工作中估计会碰到使用struts2的遗留代码 所以struts2最好也要了解下

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧