当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

SpringMVC和Struts2比较

发表于: 2014-05-08   作者:杨白白   来源:转载   浏览:
摘要: 1. 入口 spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。 参见:http://blog.csdn.net/zs15932616453/article/details/8832343 2
1. 入口
spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。
参见:http://blog.csdn.net/zs15932616453/article/details/8832343
2、主要机制
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,参数的传递是直接注入到方法中的,是该方法独有的。
struts2是类级别的拦截, 一个类对应一个request上下文, struts是在接受参数的时候,可以用属性来接受参数, 这就说明参数是让多个方法共享的,这也就无法用注解或其他方式标识其所属方法了
intercepter的实现机制。struts有以自己的interceptor机制,spring mvc 用的是独立的AOP方式。这样导致struts的配置文件量还是比spring mvc大,虽然struts的配置能继承,spring mvc使用更加简洁。
3、SpringMVC对ajax的支持上要优于struts2。
下面介绍SpringMVC对ajax的支持:
引入下面两个jar包,我用的是1.8.7,好像1.4.2版本以上都可以,其余版本未测试
jackson-core-asl-1.8.7.jar  
jackson-mapper-asl-1.8.7.jar
spring的配置文件中要有这一行,才能使用到spring内置支持的json转换。如果你手工把POJO转成json就可以不须要使用spring内置支持的json转换。
<mvc:annotation-driven /> 

使用@ResponseBody注解 

@Controller
public class ajaxController extends MultiActionController {

@RequestMapping("/ajax")
@ResponseBody
public Object queryData(User user,HttpServletRequest arg0) {
System.out.println("———-ajaxController.queryData()—————");
User result=new User();
result.setUserName(user.getUserName());
result.setAge(user.getAge());
return result;
}
}
Jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<!–  <script type="text/javascript" src="/SpringMVC7/js/jquery-1.7.1.min.js"></script>–>
<script type="text/javascript" src="/SpringMVC7/js/jquery.json-2.4.min.js"></script>

<script type="text/javascript">
$(document).ready(function() {
$("#btnAjax").click(function() {
//系列化表单元素为Json对象
            //var Jsonfields = decodeURIComponent($("form").serialize(),true);
//alert($.toJSON(Jsonfields));
            //var jsonuserinfo=$.toJSON(Jsonfields);

var userName=$("#userName").attr("value");
var userAge=$("#age").attr("value");
var user={userName:userName,age:userAge};
         
$.ajax({
url : "/SpringMVC7/ajax",
type : "post",
data:user,
success : function(data) {
alert(data.userName+","+data.age);
}
});
});
});
</script>

</head>
<body>
<form action="" method="post" name="form">
<h3>传递数据</h3>
<input type="text" name="userName" id="userName" />
<input type="text" name="age" id="age" />
<input type="button" value="ajax请求" id="btnAjax" />
</form>
</body>
</html>


4、性能方面
武断的说,一般环境下,Spring MVC要优于Struts2
测试见
http://elf8848.iteye.com/blog/698217
http://developer.51cto.com/art/201104/255410.htm
http://www.iteye.com/topic/1072765

在开发中,我更倾向使用Spring MVC,理由如下:
1、基于上述对比结果
2、spring生态环境的欣欣向荣,从安全到各种服务集成具有天生的优势
3、Spring对REST的支持
4、有Spring的基础,spring mvc非常容易使用


原文链接:http://www.jialinblog.com/?p=136

SpringMVC和Struts2比较

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Struts2 上图来源于Struts2官方站点,是Struts 2 的整体结构。 一个请求在Struts2框架中的处理大概
下面这些东西基本都是我从网上粘贴过来的,没有那么多耐心和时间一个字一个字的敲了,但是基本能表
[转:http://blog.csdn.net/gstormspire/article/details/8239182] 下面这些东西基本都是我从网上粘
前段框架用了不少,今天就来做个总结。网上关于Struts1、Struts2、SpringMVC的文章有很多,这里的内
下面这些东西基本都是我从网上粘贴过来的,没有那么多耐心和时间一个字一个字的敲了。 把这张图放在
前段框架用了不少,今天就来做个总结。网上关于Struts1、Struts2、SpringMVC的文章有很多,这里的内
最近在做项目的过程中使用到了SpringMVC,感觉与之前学的structs2有点像,可是不知道它们有什么区别
1. 关于选择 现在的Web MVC框架太多了,研发、设计人员的选择也太多了。Struts、基于JSF规范的实现
1. 关于选择 现在的Web MVC框架太多了,研发、设计人员的选择也太多了。Struts、基于JSF规范的实现
Servelt规范: filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像S
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号