1. ModelAndView
- 设置ModelAndView对象,根据view的名称,和视图解析器跳到指定的页面.
- 页面:{视图解析器前缀}+viewName+{视图解析器后缀}
- 视图解析器不止一个还有很多种类型
<!--视图解析器:DispatcherServlet给他的ModeLAndView-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
Controller类
@Controller
@RequestMapping("/c1")
public class HelloController2 {
@RequestMapping("/t2")
public String hello(Model model) {
model.addAttribute("msg","HelloController2");
return "hello";
}
}
2. ServletAPI
通过设置ServletAPI ,不需要视图解析器.
- 通过HttpServletResponse进行输出
- 通过HttpServletResponse实现重定向
- 通过HttpServletResponse实现转发
@Controller
@RequestMapping("/m1")
public class ModelController {
@RequestMapping("/t1")
public String t1(Model model) {
model.addAttribute("msg","t1");
return "/WEB-INF/jsp/hello.jsp";
}
@RequestMapping("/t2")
public String t2(Model model) {
model.addAttribute("msg","t2");
return "forward:/WEB-INF/jsp/hello.jsp";
}
@RequestMapping("/t3")
public String t3() {
return "redirect:/index.jsp";
}
}
3. SpringMVC
通过SpringMVC来实现转发和重定向-有视图解析器;
- 重定向,不需要视图解析器,本质就是重新请求一个新地方嘛,所以注意路径问题,可以重定向到另外一个请求实现;
- 转发,直接写就可以了。
@Controller
@RequestMapping("/m2")
public class ModelController2 {
@RequestMapping("/t1")
public String t1(Model model) {
model.addAttribute("msg","t2");
//转发
return "hello.jsp";
}
@RequestMapping("/t3")
public String t3() {
//重定向
return "redirect:/index.jsp";
}
}
内容参考:https://www.bilibili.com/video/BV1aE41167Tu
仅用于学习!