返回类型是String
controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。
//指定逻辑视图名,经过视图解析器解析为 jsp 物理路径:/WEB-INF/pages/success.jsp
/** * 返回String * @param model * @return */ @RequestMapping("/testString") public String testString(Model model){ System.out.println("testString..."); //模拟从数据库中查询出User对象 User user = new User(); user.setUsername("美美"); user.setPassword("123"); user.setAge(30); //model对象 model.addAttribute("user",user); return "success"; }
2.返回类型是void
Servlet 原始 API 可以作为控制器中方法的参数:因此使用原式servlet的request和response作为参数
/** * 返回void:如果没有返回值,也没有跳转,默认的页面是 请求路径.jsp * * @param */ @RequestMapping("/testVoid") public void testVoid(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("testVoid..."); //请求转发 //request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response); //重定向:WEB-INF里的内容不能直接请求 //response.sendRedirect(request.getContextPath()+"/index.jsp"); //直接响应 response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); response.getWriter().print("你好"); return; }
3.返回类型是ModelAndView
ModelAndView 是 SpringMVC 为我们提供的一个对象,该对象也可以用作控制器方法的返回值。
@RequestMapping("/testModelAndView") public ModelAndView testModelAndView(){ //创建ModelAndView对象 ModelAndView modelAndView = new ModelAndView(); System.out.println("testString..."); //模拟从数据库中查询出User对象 User user = new User(); user.setUsername("美美"); user.setPassword("123"); user.setAge(30); //把user对象存储到mv对象中,也会把user对象存入到request域对象中 modelAndView.addObject("user",user); //跳转到哪个页面,用视图解析器进行解析 modelAndView.setViewName("success"); return modelAndView; }