(1)在方法上只有@RequesstMapping时,无论方法返回值是什么,都认为需要跳转。
(2)如果不希望跳转,可以把控制器的返回值设置为void ,或者加上注解@ResponseBody
2.1 如果返回值满足 key-value 形式(对象或 map),
- 把响应头的Content-Type属性设置 application/json;charset=utf-8
- 并把返回的内容转换成json字符串格式,把转换后的内容输出流的形式响应给客户端.
底层使用Jackson进行json转换,需要导入jackson的jar
Controller层代码:
@RequestMapping(value="demo11",produces="application/json;charset=utf-8")
@ResponseBody
public People demo11() {
People p=new People();
p.setName("张三");
p.setPassword("12");
return p;
}
浏览器页面的显示:
2.2 如果返回值不满足 key-value,例如返回值为 String。
- 把相应头的Content-Type设置为 text/html
- 把返回值的内容以流的形式直接输出
- 但是如果返回内容中有中文,会出现中文乱码问题
解决办法:在@RequestMapping注解中加入produces="text/html;charset=utf-8"
produces属性就是表示响应头中 Content-Type 取值.
Controller层代码:
@RequestMapping(value="demo12",produces="text/html;charset=utf-8")
@ResponseBody
public String demo12() {
return "中文";
}
浏览器页面的显示: