轉發、重定向到其它業務方法 @org.springframework.stereotype.Controller @RequestMapping("/userController") public class UserController{ @RequestMapping("/handler1") ...
轉發、重定向到其它業務方法
@org.springframework.stereotype.Controller @RequestMapping("/userController") public class UserController{ @RequestMapping("/handler1") public String handler1() throws IOException { //轉發給handler2處理 return "forward:handler2"; } @RequestMapping("/handler2") public void handler2(HttpServletResponse response) throws IOException { //...... } }
返回String,在裡面加上關鍵字:forward(轉發),redirect(重定向)。
(1)如果是轉發、重定向到本controller的其它業務方法:
- 可以寫全路徑
return "forward:/userController/handler2";
- 也可以只寫子路徑,但不要子路徑開頭的斜杠
不管handler2()是標註為@RequestMapping("/handler2"),還是標註為@RequestMapping("handler2"),都只能這樣:
return "forward:handler2";
(2)如果是轉發、重定向到其它controller的業務方法,只能寫全路徑。
轉發、重定向到視圖
springmvc本來就會把返回的字元串作為視圖名解析,然後轉發到對應的視圖。
轉發有2種方式:
- 不使用關鍵字forward,可以使用視圖解析器
- 使用關鍵字forward,但只能寫全路徑
重定向:
- 使用關鍵字redirect,只能寫全路徑
因為使用關鍵字forward、redirect時,SpringMVC不會使用視圖解析器來解析視圖名,也就不能使用視圖名拼接,只能寫全路徑。
示例
在web文件夾下新建1.jsp
return "redirect:/1.jsp";
/表示web文件夾根目錄。
可以轉發、重定向到html這種靜態頁面,也可以轉發、重定向到WEB-INF下的頁面,但需要配置資源,
參考:https://www.cnblogs.com/chy18883701161/p/12249175.html
當然,也可以使用servlet的方式來實現:
- 傳入HttpServletRequest | HttpServletResponse類型的參數。