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非常容易使用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值