`
mamacmm
  • 浏览: 197345 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

使用SpringMVC(spring3.0)自带的json

    博客分类:
  • J2EE
阅读更多

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.xsd
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
			http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
			http://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 class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
		<property name="messageConverters">
			<util:list id="beanList">
				<ref bean="mappingJacksonHttpMessageConverter"/>
			</util:list>
		</property>
	</bean>
	<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<value>text/html;charset=UTF-8</value>
			</list>
		</property>
	</bean>
	
	<!-- 配置注解 -->
	<context:annotation-config />
	
	<mvc:annotation-driven/>
	
	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />
	
	<!-- SpringMVC过滤 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" 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)
	@ResponseBody
	public 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";
	}
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 8.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics