使用SpringMVC(spring3.0)自带的json
1.下载spring相关jar
去哪里下载就不说了
要想支持json,需要下载?jackson-all-1.9.5.jar(版本看情况,下载合适的)
?
2.配置web.xml
?
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><filter><filter-name>sitemesh</filter-name><filter-class>org.sitemesh.config.ConfigurableSiteMeshFilter</filter-class></filter><filter-mapping><filter-name>sitemesh</filter-name><url-pattern>/*</url-pattern></filter-mapping><servlet><servlet-name>Spring3</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/spring/*.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>Spring3</servlet-name><url-pattern>*.html</url-pattern></servlet-mapping><servlet-mapping><servlet-name>Spring3</servlet-name><url-pattern>*.action</url-pattern></servlet-mapping><!--编码过滤器--><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>false</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>
?应该都能看懂
?
3.配置spring的配置文件
?
?
<?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:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd "><!-- Spring要扫描的包 --><context:component-scan base-package="com.mm" /><!-- 支持JSON 需要加入 jackson-all-1.9.5.jar --><bean /><bean ><property name="messageConverters"><util:list id="beanList"><ref bean="mappingJacksonHttpMessageConverter"/></util:list></property></bean><bean id="mappingJacksonHttpMessageConverter" /><!-- SpringMVC过滤 --><bean value="/WEB-INF/pages/"></property><property name="suffix" value=".jsp"></property></bean></beans>?
这里面尤其 注意要加上 util 的命名空间
?
?
注意:org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter的Bean配置中,我们加入了messageConverters属性,在该属性中我们有配置mappingJacksonHttpMessageConverter这个Bean,它就是用来处理json数据转换的。
在mappingJacksonHttpMessageConverter的Bean配置中,我们有一个supportedMediaTypes属性,在这个属性
中我们添加了text/html;charset=UTF-8这个值,它是为了处理返回的json数据的编码,默认是ISO-88859-1的,这里我们把它设置为UTF-8,如果有乱码的情况,我们只需要修改这里就可以了。
?
?
?
4.写个测试方法
?
@Controller@RequestMapping("/test")public class TestAction extends BaseAction {@RequestMapping(value = "/test9", method = RequestMethod.GET)@ResponseBodypublic User test9(HttpServletRequest req) {User u = new User();u.setName("张三");u.setPassword("123");return u;}}?
注意:方法上,我们使用了一个@ResponseBody的注解,Spring3.0 MVC @ResponseBody的作用是把返回值直接写到HTTP response body里。 这个方法就是我们这里关注的地方,它就是返回json数据到客户端去的。还要注意,这个方法返回的可以是任意类型,而不ModelAndView。
?
5.运行效果
?

?
?
=====================================================
?
题外话,怎么使用SpringMVC的模型驱动接收Form参数?
?
1.Form这么写
<form action="test8.html" method="post"> <table width="600px"> <tr> <td>用户名:</td> <td><input type="text" name="name"> </td> </tr> <tr> <td>密码:</td> <td><input type="text" name="password"> </td> </tr> <tr> <td></td> <td><input type="submit" value="提交"> </td> </tr> </table> </form>?
2.Action这么写
?
/** * 测试使用 模型驱动 接收Form表单的参数 * <br>页面只能直接写模型中的字段名称 * * @param user * @param name * @param req * @return */@RequestMapping(value = "/test8", method = RequestMethod.POST)public String test81(@ModelAttribute("user")User user,@RequestParam("name")String name,HttpServletRequest req) {//System.out.println(name);System.out.println(user);return "test/test8";}??
?
?
?
?
?
?
?
?
?
?
?
?
?