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"/>
具体controller如下:
@RequestMapping("/ajax.do") public void ajax(HttpServletRequest req,HttpServletResponse resp) throws IOException{ resp.getWriter().print("ajax data"); }
非常简单,这种使用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>
配置文件中原来的注解适配器可以去掉,因为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; } }
在controller中需要注意的是:方法上必须加@ResponseBody,如果不加该注解标签,则springMVC会报404错误。