详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt236

 

Struts2

Springmvc

     

机制

基于filter机制

基于servlet机制

处理方式

Struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入

Struts2实际上是通过setter getter方法与request打交道的。

Struts2中,一个Action对象对应一个request上下文。

Springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应。

所以说从架构本身上 Springmvc就容易实现restful url。

性能

Sturts2是基于类,每次发一次请求都会实例一個 action ,每个action都会被注入属性。

Springmvc会稍微比Struts2快,Springmvc 是基于方法的设计。

参数传递

Struts2是在接受参数的时候,可以用属性来接受参数,   这就说明参数是让多个方法共享的。

Springmvc在接受参数的时候是基于方法的,每个方法都可设置自己的参数。

设计思想

Struts2更符合oop的编程思想。struts2脱离了servlet ,Struts2的action可以是一个普通的java类。

Springmvc在servlet上做扩展

     

Interceptor的实现机制

Struts2有以自己的interceptor机制。

spring mvc 用的是独立的AOP方式。

     

优点

Struts2的   多层拦截器、多实例action性能都很好,并不是导致性能问题的原因。

除了spring-mvc.xml,基本上可以做到零配置。方法的访问支持resutful风格,参数的传递和配置都很灵活,Spring3 mvc的验证也是一个亮点,支

支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可

缺点

Struts2由于采用了值栈,OGNL表达式等,会导致性能下降,很严重的下降。如果避免或减少使用这些,性能还是很好的。

基于springmvc的注解非常灵活方便,但是不利于维护,
  配置文件可以看清所有的mvc架构,易于维护,可读性强。

看Servelt规范:

引用

A filter is a reusable piece of code that can transform the content of HTTP requests, responses, and header information. Filters do not generally create a response or respond to a request as servlets do, rather they modify or adapt the requests for a resource, and modify or adapt responses from a resource.
简要翻译下:
 filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。

JSR303是javaEE6中的一项子规范,叫做 Bean Validation,用于对Java Bean中的字段值进行验证。

struts2和spring mvc的比较的更多相关文章

  1. [Java语言] 《struts2和spring MVC》的区别_动力节点

    1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...

  2. struts2和spring mvc的区别

    在项目中使用struts2和spring mvc为了实现后台的业务代码和前台数据之间的传递,现在基本上不会有用struts2的了,几次面试问的最多的关于struts2的问题就是struts2和spri ...

  3. cpj-swagger分别整合struts2、spring mvc、servlet

    cpj-swagger 原文地址:https://github.com/3cpj/swagger 1. Swagger是什么? 官方说法:Swagger是一个规范和完整的框架,用于生成.描述.调用和可 ...

  4. struts2与spring mvc 的比较

    1.传值: struts2通过set get来传值,而spring mvc 可以直接在方法里传值(String username,Model model)model也可以换成map来传值但不建义 mo ...

  5. 【转】Struts2 和 Spring MVC对比

    1. 实现机制 struts2框架是类级别的拦截,每次来了请求就创建一个controller中对应的Action,然后调用setter getter方法把request中的数据注入 .struts2实 ...

  6. Struts2和Spring MVC 区别 今天面试被问到了

    虽然说没有系统的学习过Spring MVC框架, 但是工作这么长时间, 基本上在WEB层使用的都是Spring MVC, 自己觉得Struts2也是一个不错的WEB层框架, 这两种框架至今自己还未有比 ...

  7. 控制层技术:Servlet+reflection、Struts2、Spring MVC三者之间的比较学习

    Servlet Struts2 Spring MVC 处理用户提交的数据 基于MVC设计模式的Web应用程序 是一个框架 是MVC框架 导入servlet包,配置web.xml文件 web.xml & ...

  8. Struts2 和 spring mvc的 迭代标签常用属性对比

    <s:iterator value="#users" var="u" status="st"> <c:forEach  i ...

  9. Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(二)

    在上一篇文章中我详细的介绍了如何搭建maven环境以及生成一个maven骨架的web项目,那么这章中我将讲述Spring MVC的流程结构,Spring MVC与Struts2的区别,以及例子中的一些 ...

随机推荐

  1. hdu 6047 Maximum Sequence(贪心)

    Description Steph is extremely obsessed with "sequence problems" that are usually seen on ...

  2. HDOJ 6069 素数筛法(数学)

    Counting Divisors Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Oth ...

  3. 读取txt文件加DevExpress之进度条progressBarControl

    进度条使用 主要掌握下边几个命令, //水平进度条 progressBarControlH.Properties.Minimum = 0;//1:设置最大数量,比如读取txt文件内容,先要查出行数,然 ...

  4. wpf mvvm datagrid DataGridTemplateColumn的绑定无效的可能原因之一!

    昨天在mvvm wpf的开发中遇到一个问题,绑定不起作用,编辑阶段没问题也没有提示找不到对应的绑定,但是在运行之后却不起作用,查了很多资料,说法不一,有些是要删除datagrid的一行,直接绑定del ...

  5. init.ora, pfile, spfile

    实例启动时,查找初始化参数文件的顺序为: spfile<sid>.oraspfile.orainit<sid>.ora 如果以上3个文件都不存在,则实例无法启动. init.o ...

  6. 理解javascript中的回调函数(callback)

    以下内容来源于:http://www.jb51.net/article/54641.htm 最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs ...

  7. servlet以及HTML中路径问题

    路径问题: ①相对路径和绝对路径: 绝对路径:绝对路径是以/开头的路径! 相对于当前服务器的绝对路径:如果是服务器解析,那么/就代表当前服务器的绝对路径:http://localhost:8080 相 ...

  8. SpringMVC中文件的上传(上传到服务器)和下载问题(二)--------下载

    一.建立一个简单的jsp页面. 我们在建好的jsp的页面中加入一个超链接:<a href="${pageContext.request.contextPath}/download&qu ...

  9. github+hexo搭建自己的博客网站(一)基础入门

    github提供的page,hexo提供的静态博客文档,这样可以搭建一个自己的一个博客网站. 使用github pages服务搭建博客的好处有: 全是静态文件,访问速度快: 免费方便,不用花一分钱就可 ...

  10. 【Ubuntu 16】DEB软件包管理

    一.背景介绍 开源软件最早的时候没有软件包和软件包管理器,用户只能下载源码包自行配置 编译 安装. 后来linux各发行版本推出了软件包格式和软件包管理程序 Red Hat.Centos使用RPM格式 ...