SpringBoot的請求轉發和重定向的使用方法以及自動判斷的原理
使用方法
@PostMapping("/emp")
public String addEmp(Employee employee){
System.out.println("保存的員工信息"+employee.toString());
//redirect:表示重定向到一個地址(提交表單最好用重定向免得表單重複提交)
//forward:表示轉發到一個地址
// "/" 代表當前項目路徑
return "redirect:/emps";
}
forward:請求轉發
redirect:重定向
原理
Ctrl+Shift+T查找到ThymeleafAutoConfiguration這個自動配置類,然後找到thymeleafViewResolver這個方法。
這個方法向容器返回一個thymeleaf的視圖解析器,這個視圖解析器會替換掉SpringMVC默認的視圖解析器。
打開ThymeleafViewResolver這個類,找到createView這個方法,裏面的RedirectView這個重定向類,裏面的渲染方法
renderMergedOutputModel調用了sendRedirect這個方法,找到這個方法可以看到response.sendRedirect(encodedURL);
總結:thymeleaf把springmvc的視圖解析器組件給換了,然後這個組件會根據你填寫的返回值來判斷是重定向還是請求轉發,然後調用的是原生的Servlet的重定向方法。