springMVC中ajax的使用

springMVC中使用ajax有两种方法,第一种是根据servletAPI来使用ajax,第二种是根据springMVC给我们提供的API来使用。

一.根据servletAPI:

springMVC配置文件如下:

<!-- 配置handerAdapter  适配器 -->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
    
    <!-- spring容器扫描指定包下的所有类,如果类上有注解  那么根据注解产生相应bean对象已经映射信息 -->
    <context:component-scan base-package="cn.sxt.controller"/>
View Code

具体controller如下:

@RequestMapping("/ajax.do")
    public void ajax(HttpServletRequest req,HttpServletResponse resp) throws IOException{
        resp.getWriter().print("ajax data");
    }
View Code

非常简单,这种使用ajax的方式只能携带比较简单的字符串,如果要携带复杂对象,就需要自己转换为json格式,比较麻烦。

二.根据springMVCAPI:

springMVC配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- json配置 -->
    <!-- 用于将对象转换为 JSON -->
    <bean id="stringConverter"
        class="org.springframework.http.converter.StringHttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/plain;charset=UTF-8</value>
            </list>
        </property>
    </bean>
    <bean id="jsonConverter"
        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="stringConverter" />
                <ref bean="jsonConverter" />
            </list>
        </property>
    </bean>
    <!-- spring容器扫描指定包下的所有类,如果类上有注解 那么根据注解产生相应bean对象已经映射信息 -->
    <context:component-scan base-package="com.mxf.controller" />
</beans>
View Code

配置文件中原来的注解适配器可以去掉,因为ajax的格式转换的配置是在注解适配器中,故不需要原来的单纯的注解适配器,如果再加上原来的适配器,会报错。

具体controller如下:

package com.mxf.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.mxf.domain.User;

@Controller
public class AjaxController {

    @RequestMapping("aj.do")
    @ResponseBody
    public List<User> list(){
        List<User> list = new ArrayList<User>();
        list.add(new User(1,"zhangsan",22));
        list.add(new User(2,"李四",24));
        list.add(new User(3,"王五",27));
        list.add(new User(4,"赵四",29));
        return list;
    }
}
View Code

在controller中需要注意的是:方法上必须加@ResponseBody,如果不加该注解标签,则springMVC会报404错误。

原文地址:https://www.cnblogs.com/blog411032/p/5590750.html