发表于: 2017-09-09 22:49:51
1 684
今天完成的事情:学习了一下springmvc返回json参数的几种方式。
1、第一种方式是spring2时代的产物,也就是每个json视图controller配置一个Jsoniew。
如:<bean id="defaultJsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
或者<bean id="defaultJsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
同样要用jackson的jar包。
2、第二种使用JSON工具将对象序列化成json,常用工具Jackson,fastjson,gson。
利用HttpServletResponse,然后获取response.getOutputStream()或response.getWriter()直接输出。
public class JsonUtil
{
private static Gson gson=new Gson();
/**
* @MethodName : toJson
* @Description : 将对象转为JSON串,此方法能够满足大部分需求
* @param src :将要被转化的对象
* @return :转化后的JSON串
*/
public static String toJson(Object src) {
if (src == null) {
return gson.toJson(JsonNull.INSTANCE);
}
return gson.toJson(src);
}
}
3、第三种利用spring mvc3的注解@ResponseBody
例如
@ResponseBody
@RequestMapping("/list")
public List<String> list(ModelMap modelMap) {
String hql = "select c from Clothing c ";
Page<Clothing> page = new Page<Clothing>();
page.setPageSize(6);
page = clothingServiceImpl.queryForPageByHql(page, hql);
return page.getResult();
}
如何实现数据转换
Spring3.0的重要接口:HttpMessageConveter为我们提供了强大的数据转换功能,将我们的请求数据转换为一个java对象,或将java对象转化为特定格式输出等。比如我们常见的从前端注册表单获取json数据并转化为User对象,或前端获取用户信息,后端输出User对象转换为json格式传输给前端等。
spring 为我们提供了众多的HttpMessageConveter实现类,其中我们可能用得最多的三个实现类是
转换器的装配方式有两种,一种是通过注册org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter来装配messageConverters,如下所示:
另一种是启用注解<mvc:annotation-driven />
该注解会会初始化7个转换器:
- ByteArrayHttpMessageConverter
- StringHttpMessageConverter
- ResourceHttpMessageConverter
- SourceHttpMessageConverter
- XmlAwareFormHttpMessageConverter
- Jaxb2RootElementHttpMessageConverter
- MappingJacksonHttpMessageConverter
通过以上两种方法,我们即可完成我们的转换器注册。
但我们想要在控制层完成数据的输入输出转换,需要通过下列途径:
1. 使用@RequestBody和@ResponseBody对处理方法进行标注。其中@RequestBody通过合适的HttpMessageConverter将HTTP请求正文转换为我们需要的对象内容。而@ResponseBody则将我们的对象内容通过合适的HttpMessageConverter转换后作为HTTP响应的正文输出。
2. 使用HttpEntity、ResponseEntity作为处理方法的入参或返回值
明天计划的事情:生成代码,搭环境看看bug。
遇到的问题:今天师姐突然拉了个外门的java进来,说是一起跟项目,但是没说怎么安排.....
收获:之前学习这块的时候用过注解还试过用工具类没整理,现在整理一下
评论