spring3---json
在applicationContext.xml中加入
 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">   
 <property name="messageConverters">
        <property name="messageConverters">   
 <util:list id="beanList">
            <util:list id="beanList">   
 <ref bean="mappingJacksonHttpMessageConverter" />
                <ref bean="mappingJacksonHttpMessageConverter" />   
 </util:list>
            </util:list>   
 </property>
        </property>   
 </bean>
    </bean>   

 <bean id="mappingJacksonHttpMessageConverter"
<bean id="mappingJacksonHttpMessageConverter"   
 class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />

这样在action方法加返回bean或map,spring3会把它处理成json格式。如:


 @Controller
@Controller 

 public class JsonTestController
public class JsonTestController  {
{ 
 @RequestMapping("/getJsonList")
    @RequestMapping("/getJsonList") 
 @ResponseBody
    @ResponseBody 
 public List<ItemTest> searchItemsList()
    public List<ItemTest> searchItemsList() 

 
     {
{ 
 ItemTest item = new ItemTest();
        ItemTest item = new ItemTest(); 
 item.setItemnum("123");
        item.setItemnum("123"); 
 item.setItemDesc("123desc");
        item.setItemDesc("123desc"); 

 ItemTest item1 = new ItemTest();
        ItemTest item1 = new ItemTest(); 
 item1.setItemnum("456");
        item1.setItemnum("456"); 
 item1.setItemDesc("456desc");
        item1.setItemDesc("456desc"); 
 List<ItemTest> list = new ArrayList<ItemTest>();
        List<ItemTest> list = new ArrayList<ItemTest>(); 
 list.add(item);
        list.add(item); 
 list.add(item1);
        list.add(item1); 
 return list;
        return list; 
 }
    }

 }
}


访问getJsonList.do返回的就是json形式的数据,注意要加上 @ResponseBody 
================================================
spring3---ajax---json
网上搜索到一般都是这样:
 

 $(function()
$(function() {
{
 $("#doImport").click(
    $("#doImport").click(

 function()
       function() {
{
 var importInfo = $("#importInfo").serializeObject();
          var importInfo = $("#importInfo").serializeObject();

 $.ajax(
          $.ajax( {
{
 url:"${base}cmb/doImport.do",
              url:"${base}cmb/doImport.do",
 contentType :"application/json",
              contentType :"application/json",
 cache:false,
              cache:false,
 type:"POST",
              type:"POST",
 data:JSON.stringify(importInfo),
              data:JSON.stringify(importInfo),
 dataType:"json",
              dataType:"json",

 success: function(data)
              success: function(data) {
{
 $('#result').val(data.message)
               $('#result').val(data.message)
 alert(data.message);
               alert(data.message);       
 },
              },

 error:function()
              error:function() {
{
 alert("失败");
                  alert("失败");
 }
              }
 });
         });
 });
    }); 
 });
});

我觉得这个方法写得太复杂了,于是改了它:

 function doImport()
function doImport() {
{    

 $.ajaxSetup(
    $.ajaxSetup( { cache:false });
{ cache:false });


 var data =
    var data =  {excelFileName:$("#excelFileName").val(),
{excelFileName:$("#excelFileName").val(),
 sheetName:$("#sheetName").val(),
                sheetName:$("#sheetName").val(),
 tableName:$("#tableName").val(),
                tableName:$("#tableName").val(),
 startRow:$("#startRow").val(),
                startRow:$("#startRow").val(),
 startCol:$("#startCol").val()};
                startCol:$("#startCol").val()}; 
 
    

 $.getJSON("${base}cmb/doImport.do",data,function(form)
    $.getJSON("${base}cmb/doImport.do",data,function(form) {
{
 $("#result").val(form.message);
               $("#result").val(form.message);
 alert(form.message); });
               alert(form.message); });
 }
}action:
 @RequestMapping("/cmb/doImport.do")
@RequestMapping("/cmb/doImport.do")

 public @ResponseBody Map<String,String> doImport(HttpServletRequest request, ModelMap model)
    public @ResponseBody Map<String,String> doImport(HttpServletRequest request, ModelMap model) {
{
 System.out.println("===doImport===>>" + DateUtil.getCurrentDateTime());
        System.out.println("===doImport===>>" + DateUtil.getCurrentDateTime());
 String excelFileName = request.getParameter("excelFileName");
        String excelFileName = request.getParameter("excelFileName");
 String sheetName = request.getParameter("sheetName");
        String sheetName = request.getParameter("sheetName");        
 String tableName = request.getParameter("tableName");
        String tableName = request.getParameter("tableName");
 int startRow = Integer.parseInt(request.getParameter("startRow"));
        int startRow = Integer.parseInt(request.getParameter("startRow"));        
 int startCol = Integer.parseInt(request.getParameter("startCol"));
        int startCol = Integer.parseInt(request.getParameter("startCol"));    
 
 
 System.out.println("excelFileName=" + excelFileName);
        System.out.println("excelFileName=" + excelFileName);
 System.out.println("sheetName=" + sheetName);
        System.out.println("sheetName=" + sheetName);
 System.out.println("tableName="+tableName);
        System.out.println("tableName="+tableName);
 System.out.println("startRow="+startRow);
        System.out.println("startRow="+startRow);
 System.out.println("startCol="+startCol);
        System.out.println("startCol="+startCol);
 
        
 Map<String,String> result = new HashMap<String,String>();
        Map<String,String> result = new HashMap<String,String>(); 
 result.put("message", "导入成功!");
        result.put("message", "导入成功!");

 return result;
        return result;
 }
    }    注意以下几点:
1. ajax必须清缓存:$.ajaxSetup({ cache:false });
2. 将表单的数据组成json格式:
var data = {excelFileName:$("#excelFileName").val(),
       sheetName:$("#sheetName").val(),
       tableName:$("#tableName").val(),
       startRow:$("#startRow").val(),
       startCol:$("#startCol").val()}; 
# XX与表单组件中的ID对应,如
<input type="hidden" id="excelFileName" value="${excelFileName}" />
3.表单上必须有一个地方能存放返回值:
<input type="hidden" id="message" />
action中的返回值为json格式, 
$("#result").val(form.message) 这句话将返回值中的result属性取出赋给表单中的message