从controller页面跳转到jsp页面有多种方式。下面就进行一下分类
一、通过返回值来进行响应
1. String类型 字符串 springmvc会根据视图解析器自动分配地址来进行跳转
@RequestMapping("/testString")
public String testString(Model model){
User user = new User();
user.setUsername("张三");
user.setPassword("123");
user.setAge(19);
model.addAttribute("user",user);
System.out.println("String.....\"");
return "success";
}
2. void类型 这个类似于javaweb 的跳转方式了
@RequestMapping("/testReturnVoid")
public void testReturnVoid(HttpServletRequest request,HttpServletResponse response)
throws Exception {
1.通过request请求转发
request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,
response);
2、也可以通过 response 页面重定向:
response.sendRedirect("testRetrunString")
3、也可以通过 response 指定响应结果,直接在页面显示
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json 串");
}
3 ModelAndView
@RequestMapping("/testReturnModelAndView")
public ModelAndView testReturnModelAndView() {
ModelAndView mv = new ModelAndView();
mv.addObject("username", "张三");
mv.setViewName("success");
return mv;
}
二、通过转发和重定向
1.forward 转发
注意如果用了 formward:则路径必须写成实际视图 url,不能写逻辑视图。
它相当于“request.getRequestDispatcher("url").forward(request,response)”。使用请求
转发,既可以转发到 jsp,也可以转发到其他的控制器方法。
@RequestMapping("/testForward")
public String testForward() {
System.out.println("AccountController 的 testForward 方法执行了。。。。");
return "forward:/WEB-INF/pages/success.jsp";
}
2.redirect转发
它相当于“response.sendRedirect(url)”。需要注意的是,如果是重定向到 jsp 页面,则 jsp 页面不
能写在 WEB-INF 目录中,否则无法找到。
@RequestMapping("/testRedirect")
public String testRedirect() {
System.out.println("AccountController 的 testRedirect 方法执行了。。。。");
return "redirect:testReturnModelAndView";
}