SpringMVC和Struts2比较

来源:互联网 发布:淘宝开店类目 知乎 编辑:程序博客网 时间:2024/05/16 09:48

1. 入口

spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的),这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。

 

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> 

0 0
原创粉丝点击