`

SpringMVC和Struts2比较

 
阅读更多
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比较

    SpringMVC与struts2比较及技术特点

    springmvc、struts2区别、mybatis、hibernate区别

    struts2介绍、和springmvc对比,mybatis介绍和hibernate对比

    SSM-SpringMVC-Struts2基础框架

    SSM-SpringMVC-Struts2基础框架

    SpringMVC与struts的区别

    SpringMVC与Struts的区别 SpringMVC是一款优秀的MVC框架,由于其发布3.0版本后,现在有越来越多的团队选择了Spring3 MVC作为MVC的框架。SpringMVC结构简单,灵活性较高,性能也很优秀。下面我们将详细讲解SpringMVC...

    Java面试题51.SpringMVC和Struts2的不同.mp4

    Java面试题51.SpringMVC和Struts2的不同.mp4

    springMVC+struts+hibernate

    2. 集成Hibernate,配置SessionFactory和DataSource,建立对象与数据库的映射。 3. 配置Spring MVC,定义DispatcherServlet,设置视图解析器和处理器映射器。 4. 将Struts集成到Spring中,使用Spring管理Action和...

    springmvc-struts

    可以构建一个功能强大的Java Web应用,通过SpringMVC处理请求,Struts(尤其是Struts2)提供额外的MVC功能,MyBatis作为数据访问层处理数据库操作,而JUnit则帮助进行单元测试,确保整个系统的稳定性和正确性。...

    springmvc+struts+mybatis项目学习

    在实际项目中,这三者可能会有以下的协作流程:用户发送请求,DispatcherServlet接收到请求后,根据配置找到对应的Struts2 Action或者Spring MVC Controller来处理。Controller/Action处理业务逻辑,并通过MyBatis...

    简单了解SpringMVC与Struts2的区别

    SpringMVC和Struts2都是流行的Java Web框架,但它们之间存在着许多区别。下面我们将对比SpringMVC和Struts2的主要区别,帮助开发者更好地选择合适的框架。 首先,Struts2是类级别的拦截,而SpringMVC是方法级别的...

    51.SpringMVC和Struts2的不同(比较重要).avi

    java面试宝典

    Spring4,SpringMVC,Struts,Hibernate,Maven,Mybatis学习资料

    Struts2是其最新版本,采用Model-View-Controller设计模式,提供了一套完整的解决方案,包括Action、Interceptor、Result等概念,使得开发者可以更方便地处理请求和响应。 4. Hibernate:Hibernate是一个对象关系...

    maven+(springmvc,mybatis,struts2,hibernate)两两整合

    整合Struts2与MyBatis或Hibernate时,Struts2的动作类(Action)接收请求并调用Service层,Service层再通过MyBatis或Hibernate操作数据库。 整合步骤通常包括以下部分: - 配置POM.xml文件:添加所需框架的依赖。 -...

    Java Web框架例子合集(spring,springmvc,mybatis,struts2,hibernate)

    本合集包含了一些最流行的框架实例:Spring、SpringMVC、MyBatis、Struts2以及Hibernate。以下是对这些框架的详细介绍: 1. **Spring**: Spring 是一个全面的后端开发框架,它提供了依赖注入(DI)和面向切面编程...

    Hibernate.mybatis.springMVC.struts2.spring

    本资源包含五个主流的Java Web框架的最新版本:Hibernate 5.3.1、MyBatis 3.4.6、Spring Framework 5.0.7、Struts2 2.5.16。下面将分别介绍这些框架的核心功能和使用方法。 **1. Hibernate 5.3.1** Hibernate 是一...

    一头扎进SpringMVC MyBatis Struts Spring Hibernate全套教学视频【4.3G】

    SpringMVC MyBatis Struts Spring Hibernate全套教学视频【4.3G】 网盘下载地址 【付费下载之后的用户,可留言获取更多下载资源】

    Struts2和SpringMvc区别.md

    Struts2和SpringMvc区别.md

    springmvc基础.docx

    springmvc基础 包含代码+知识点+详细解释 1. 什么是springmvc? 2. springmvc框架原理 前端控制器、处理器映射器、处理器适配器、视图解析器 3. springmvc入门程序 目的:对前端控制器、...6. springmvc和struts2区别

    springmvc+mybatis面试题

    2. 开发效率:SpringMVC和Struts2相似,比Struts1更快。 【核心入口类】 SpringMVC的核心入口类是DispatchServlet;Struts1的入口是ActionServlet;Struts2的入口是StrutsPrepareAndExecuteFilter。 【SpringMVC...

    struts1原理,struts2原理,spring mvc原理,struts1和struts2,struts和spring mvc

    总结来说,Struts1、Struts2和Spring MVC各有优劣,选择哪个框架主要取决于项目需求、团队熟悉程度以及对框架特性的偏好。在现代Java Web开发中,Spring MVC因其灵活性和强大的功能,成为更受欢迎的选择。

    maven+struts2+spring+mybatis+springMVC

    本项目"maven+struts2+spring+mybatis+springMVC"就是一个典型的Java Web应用开发组合,利用了这些框架的优势进行集成,实现了数据持久化、业务逻辑处理、视图展示以及依赖管理等多个层面的功能。 首先,我们来详细...

Global site tag (gtag.js) - Google Analytics