SpringMVC四种返回值类型总结

您所在的位置:网站首页 mv有几种类型 SpringMVC四种返回值类型总结

SpringMVC四种返回值类型总结

2024-03-31 18:48| 来源: 网络整理| 查看: 265

虽然现在SpringBoot框架很火,但是SpringBoot并不能处理以及响应客户端的请求,最终还是要依赖SpringMVC框架,所以接下来介绍SpringMVC Controller方法的返回值类型,涵盖所有返回值类型。这篇博客只是扫盲点,没具体深入。

1. ModelAndView 我们在使用SpringMVC的时候,经常返回ModelAndView类型,现在前后端分离后,后端都是返回JSON格式数据为主。返回 ModelAndView类型,我们可以在ModelAndView对象中指定视图名称,然后也可以绑定数据,如下面代码: @RequestMapping("/userList") public ModelAndView getAllUser(ModelAndView mv) { List users= userService.getAllUser(); //添加数据模型到request域中 mv.addObject("users", users); mv.setViewName("userList");//指定视图名 return mv; } 2.void

如果返回值为void的话,并不是真正没有返回值,而是会出现以下几种情况:

如果方法内真的没有返回值,那么SpringMVC默认把deleteUser(映射的URL)当成视图名称来解析,如果存在该视图,就返回给客户端;如果不存在该视图,就会报视图找不到异常。 @RequestMapping("/deleteUser") public void deleteUser() { //删除操作 }

通过加@ResponseBody来修改默认行为,加上该注解表示返回JSON数据,这里返回空JSON数据,而不是把URL当成视图名称来解析

@RequestMapping("/deleteUser") @ResponseBody public void deleteUser() { //删除操作 } 请求转发 @GetMapping("/") public void root(HttpServletRequest req,HttpServletResponse resp) { req.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(req,resp); } 重定向 @RequestMapping("/") @ResponseBody public void root(HttpServletResponse resp){ resp.setStatus(302); resp.addHeader("Location","/WEB-INF/jsp/index.jsp"); } @RequestMapping("/") @ResponseBody public void root(HttpServletResponse resp){ resp.sendRedirect("/WEB-INF/jsp/index.jsp"); } 3. String

当方法的返回值为String的时候,也会出现下面几种情况:

逻辑视图名 返回String最常见的是逻辑视图名,这种时候一般利用默认的参数Model来传递数据 @RequestMapping("/deleteUser") //方法返回JSON数据 @ResponseBody public String deleteUser(Model model) { model.addAttribute("msg","删除成功"); return "userList"; } 重定向 登录失败的时候重定向到登录页面。 @RequestParam("/login") public String redirect(User user){ if{ //登录成功... }else{ //登录失败,重定向到登录页面 return "redirect:tologin"; } } 请求转发 登录失败的时候请求转发到登录页面。 @RequestParam("/login") public String redirect(User user){ if{ //登录成功... }else{ //登录失败,转发到登录页面 return "forward:tologin"; } } 真的返回String,相当于JSON格式的数据 @RequestMapping("/deleteUser") @ResponseBody public String deleteUser() { try{ //删除成功 return "删除成功"; }catch(Exception e){ return "删除失败"; } } 4.JSON

现在前后端分离的情况下,大部分后端只需要返回JSON数据即可,List 集合、Map集合,实体类等都可以返回,这些数据由 HttpMessageConverter自动转为JSON ,如果使用了Jackson或者Gson,不需要额外配置就可以自动返回JSON了,因为框架帮我们提供了对应的HttpMessageConverter ,如果使用了Alibaba的Fastjson的话,则需要自己手动提供一个相应的 HttpMessageConverter的实例,方法的返回值如下面代码:

@GetMapping("/getUser") @ResponseBody public User getUser() { User user = userService.getUser(); return user; } @RequestMapping("/userList") @ResponseBody public List getAllUser() { List users = userService.getAllUser(); return users; }

好了,关于SpringMVC的返回值类型就总结完了,我们开发中也就是使用这几种返回值类型。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3