标签:12 Spring 09 request ResponseBody 注解 返回值 2.1 response
Spring MVC 应用开发
1 基础概念介绍
2 返回值处理
返回值处理
一、不使用注解修饰
1.1 ModelAndView
Controller方法中定义ModelAndView对象并返回,对象中可添加model数据、指定view
1.2 void
在Controller方法形参上可以定义request和response,使用 request 或 response 指定响应结果:
void service(HttpServletRequest request,HttpServletResponse response){}
1、使用request转发向页面,如下:
request.getRequestDispatcher("页面路径").forward(request, response);
2、也可以通过response页面重定向:
response.sendRedirect("url")
3、也可以通过response指定响应结果,例如响应json数据如下:
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json串");
1.3 String(推荐)
-
逻辑视图名
return "item/item-list";
-
redirect重定向
return "redirect:testRedirect";
相当于“ response.sendRedirect() ”,浏览器URL发生改变,Request域不能共享。 -
forward转发
return “forward:testForward";
相当于“ request.getRequestDispatcher().forward(request,response) ”
浏览器URL不发送改变
Request 域可以共享
二、使用注解修饰
2.1 ResponseBody注解介绍
2.1.1 ResponseBody注解的作用:
- ResponseBody注解可以针对Controller返回值类型,使用内置的9种HttpMessageConverter进行
匹配,找到合适的HttpMessageConverter进行处理。 - HttpMessageConverter处理逻辑有(特有):
1、指定HttpServletResponse的ContentType值。
2、将转换之后的数据放到HttpServletResponse对象的响应体返回到页面
2.1.2 常用的转换器 HttpMessageConverter
-
MappingJacksonHttpMessageConverter
作用:处理POJO类型返回值
1、默认使用MappingJackson的JSON处理能力,将后台返回的Java对象(POJO类型),转为JSON格式输出到页面
2、将响应体的Content-Type设置为application/json;charset=utf-8
3、调用response.getWriter()方法将json格式的字符串写回给调用者 -
StringHttpMessageConverter
作用:处理String类型返回值
将响应体的Content-Type设置为text/plain;charset=utf-8
调用response.getWriter()方法将String类型的字符串写回给调用者。
2.1.3 其他内容
1、@RestController 相当于Controller注解和ResponseBody注解的组合
2、@RequestMapping(value=“returnString”,produces=“text/plain;charset=UTF-8”)
//@RequestMapping注解中的consumes和produces分别是为请求头和响应头设置contentType,
如果在使用@ResponseBody注解的前提下,如果返回值是String类型,则返回值会由
StringHttpMessageConverter进行处理,可用于解决响应的乱码。
总结
返回数据用 ResponseBody
返回页面用 String
标签:12,Spring,09,request,ResponseBody,注解,返回值,2.1,response 来源: https://blog.csdn.net/qq_21438267/article/details/120257347
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。