转自:http://exceptioneye.iteye.com/blog/1300672
一、准备工作
1、 下载依赖库jar包
Jackson的jar all下载地址:http://wiki.fasterxml.com/JacksonDownload
jackson-core-asl.jar
jackson-mapper-as.jar
二、修改配置文件spmvc-servlet.xml
- <?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:mvc="http://www.springframework.org/schema/mvc"
- xmlns:context="http://www.springframework.org/schema/context"
- 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/mvc/spring-mvc
- http://www.springframework.org/schema/mvc/spring-mvc-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/util
- http://www.springframework.org/schema/util/spring-util-2.0.xsd">
- <!-- 自动扫描注解的Controller -->
- <context:component-scan base-package="com.wy.controller.annotation" />
- <!-- 处理在类级别上的@RequestMapping注解-->
- <bean
- class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
- <!-- 处理方法级别上的@RequestMapping注解-->
- <bean
- class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
- <property name="messageConverters">
- <util:list id="beanList">
- <ref bean="mappingJacksonHttpMessageConverter"/>
- </util:list>
- </property>
- </bean>
- <!-- 视图解析器策略 和 视图解析器 -->
- <!-- 对JSTL提供良好的支持 -->
- <bean
- class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <!-- 默认的viewClass,可以不用配置
- <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView" />
- -->
- <property name="prefix" value="/WEB-INF/page/" />
- <property name="suffix" value=".jsp" />
- </bean>
- <!-- 处理JSON数据转换的 -->
- <bean id="mappingJacksonHttpMessageConverter"
- class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
- <!-- 为了处理返回的JSON数据的编码,默认是ISO-88859-1的,这里把它设置为UTF-8,解决有乱码的情况 -->
- <property name="supportedMediaTypes">
- <list>
- <value>text/html;charset=UTF-8</value>
- </list>
- </property>
- </bean>
- <!--
- ResourceBundleViewResolver通过basename所指定的ResourceBundle解析视图名。
- 对每个待解析的视图,ResourceBundle里的[视图名].class所对应的值就是实现该视图的类。
- 同样,[视图名].url所对应的值是该视图所对应的URL。
- 可以指定一个parent view,其它的视图都可以从parent view扩展。
- 用这种方法,可以声明一个默认的视图。
- <bean id="messageSource"
- class="org.springframework.context.support.ResourceBundleMessageSource">
- <property name="basename" value="welcome" />
- </bean>
- -->
- </beans>
二、注解的Controller
- package com.wy.controller.annotation;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- import org.apache.log4j.Logger;
- import org.springframework.http.HttpEntity;
- import org.springframework.http.HttpHeaders;
- import org.springframework.http.HttpStatus;
- import org.springframework.http.ResponseEntity;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.ModelMap;
- import org.springframework.web.bind.ServletRequestBindingException;
- import org.springframework.web.bind.ServletRequestUtils;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.springframework.web.servlet.ModelAndView;
- import com.wy.pojo.User;
- /**
- * SpringMVC 注解 内置支持
- * @author Administrator
- *
- */
- @Controller
- @RequestMapping("/entryOrJsonController")
- public class EntryOrJsonController {
- private Logger log = Logger.getLogger(EntryOrJsonController.class);
- /**
- * 输入为JSON格式的数据的方式
- * 1、@RequestBody 将httpRequest的body绑定到方法参数上
- * @param param
- * @return
- */
- @RequestMapping(value = "/annotationParam", method = RequestMethod.POST)
- public ModelAndView annotationParam(@RequestBody User user){
- ModelAndView mav = new ModelAndView();
- log.info("============"+user);
- mav.setViewName("welcome");
- return mav;
- }
- /**
- * 输出为JSON格式的数据的方式
- * 1、@ResponseBody的作用是把返回值直接写到HTTP response body里
- * @param session
- * @return
- * @throws ServletRequestBindingException
- */
- @RequestMapping(value = "/commonReturnType" , method = RequestMethod.GET)
- @ResponseBody
- public ModelAndView commonReturnType(HttpSession session) throws ServletRequestBindingException{
- ModelAndView mav = new ModelAndView();
- session.setAttribute("userName", "使用ResponseBody输出!");
- log.info("=================使用ResponseBody输出====================");
- ModelMap modelMap = new ModelMap();
- modelMap.put("mapKey", "mapValue");
- modelMap.addAttribute("attributeKey", "attributeValue");
- mav.addObject("model", modelMap);
- mav.addObject("modelMap", modelMap);
- mav.setViewName("welcome");
- return mav;
- }
- /**
- * 输出为JSON格式的数据的方式
- * 2、ResponseEntity<?>
- * @return
- */
- @RequestMapping(value = "/annotationReturnType" , method = RequestMethod.GET)
- public ResponseEntity<String> annotationReturnType(){
- log.info("=================使用ResponseEntity<?>输出====================");
- HttpHeaders httpHeaders = new HttpHeaders();
- ResponseEntity<String> responseEntity = new ResponseEntity<String>("Hello WY!", httpHeaders, HttpStatus.CREATED);
- return responseEntity;
- }
- /**
- * 输入 和输出为JSON格式的数据的方式
- * 3、HttpEntity<?> ResponseEntity<?>
- * @param u
- * @return
- */
- @RequestMapping(value = "/annotationParamsReturn", method = RequestMethod.GET)
- @ResponseBody
- public ResponseEntity<String> annotationParamsReturn(HttpEntity<User> user){
- String temp = user.getBody().getUsername();
- ResponseEntity<String> responseResult = new ResponseEntity<String>(temp, HttpStatus.OK);
- return responseResult;
- }
- /**
- *
- * @param request
- * @param session
- * @return
- * @throws ServletRequestBindingException
- */
- @RequestMapping(value = "/login" , method = RequestMethod.GET)
- public ModelAndView login(HttpServletRequest request, HttpSession session) throws ServletRequestBindingException{
- ModelAndView mav = new ModelAndView();
- String userName = request.getParameter("userName");
- String password = ServletRequestUtils.getStringParameter(request, "password");
- log.info("============================\r\n接收到的参数: "+userName+" "+password);
- session.setAttribute("userName", userName);
- mav.setViewName("welcome");
- return mav;
- }
- }