SpringMVC控制器Controller的返回值类型,以及@ResponseBody注解的使⽤Spring MVC的控制器⽅法返回值可以⽀持多种写法,每种写法的场景和效果都不⼀样。
1. void 为空
2. ModelAndView 模型和试图
3. String 字符串
1、返回值为空,就是没有返回值
2、 当返回值为 ModelAndView
该对象既可以存储数据到request域,也可以设置视图。其实Spring MVC任何处理器适配器最终执⾏完控制器后,都会返回ModelAndView对象
@RequestMapping("demo4")
public ModelAndView demo4(){
ModelAndView mav =new ModelAndView("/index.jsp");
mav.addObject("mav","mav的值");
return mav;
}
3. 返回 String 字符串
但返回字符串时,springmvc 会把字符串当作⼀个资源路径进⾏跳转,默认是跳转
@RequestMapping("demo2")
public String demo2(){
..
// 没有配置试图解析器,资源路径需要写全
return"/index.jsp";
// 配置了试图解析器只需要写资源名称即可
return"index";
// 表⽰以转发的⽅式访问资源,默认就是转发⽅式,所以可以省略forword
// 但是如果写了forword,就必须写全资源路径,因为写了forword就意味着不使⽤视图解析器,重定向也是
return"forword:index.jsp";
springmvc的注解有哪些// 重定向
return"redirect:index.jsp";
}
@ResponseBody 注解
当控制器上只有注解@ResquestMapping时,返回值是什么都会有跳转效果,如果跳转的资源没有到就会报404。如果不想跳转,就需要在页⾯添加@ResponseBody注解,给注解表⽰恒不跳转,此时返回值有两种情况
1. 普通字符串
当返回值时普通字符串时,该注解会把响应头 ConteentType 设置为 text/html, 把⽅法返回值以流的形式直接输出,如果返回值包含中⽂,会出现中⽂乱码。需要在 @RequestMapping 设置 produces 参数,produces参数 表⽰响应头中 Content-Type 取值
@RequestMapping(value="demo12", produces="text/html;charset=utf-8")
@ResponseBody
public String demo12(){
return"中⽂";
}
2. 当返回值满⾜ key-value 形式时(返回值可以是 对象、list集合、map集合)
当返回值满⾜这种情况,该注解会把响应头设置为 application/json;charset=utf-8,不会乱码 ,此时会把数据转换为 json 格式后,以输出流的形式响应给客户端,底层使⽤ Jackson 进⾏ json 转换,在项⽬中⼀定要导⼊ jackson 的 jar
@RequestMapping(value="demo13")
@ResponseBody
public People demo13(){
People p =new People();
p.setName("张三");
p.setAge(23);
return p;
}
@RequestMapping(value="demo14")
@ResponseBody
public List<People>demo14(){
People p1 =new People("zhangsan",23);
People p2 =new People("lisi",23);
People p3 =new People("wangwu",23);
List<People> list =new ArrayList<>();
list.add(p1);
list.add(p2);
list.add(p3);
return list;
}
@RequestMapping(value="demo15")
@ResponseBody
public Map<String, Integer>demo15(){
Map<String, Integer> map =new HashMap<>(); map.put("one",1);
map.put("two",2);
map.put("three",3);
return map;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论