之前一直對forward和redirect有點疑問,現在練習一下加深點記憶,理解理解,forward是一次請求,在一個request范圍內,而redirect是二次請求
實例:
@Controller public class ForwardController { @RequestMapping("/makeDataForward2.html") public String makeDataResponse(Model model,HttpServletRequest request) { //在model和request中保存屬性 model.addAttribute("modelData", "model data"); //得到完整路徑 System.out.println("request.getRequestURL()"+request.getRequestURL()); //得到除去ip地址的路徑 System.out.println("request.getRequestURI()"+request.getRequestURI()); request.setAttribute("requestData", "reuqest data"); //正常響應 return "success"; } //請求轉發 @RequestMapping("/makeDataForward.html") public String makeDateForward(Model model,HttpServletRequest request) { //在model和request中保存屬性 model.addAttribute("modelData", "model data"); request.setAttribute("requestData", "reuqest data"); //請求轉發過去后值也傳遞過去了 return "forward:toSuccessPage.html"; } @RequestMapping("/makeDataRedirect.html") public String makeDataRedirect(Model model, HttpServletRequest request) { //在model和request中保存屬性 model.addAttribute("modelData", "model data"); request.setAttribute("requestData", "reuqest data"); //重定向 return "redirect:toSuccessPage2.html"; } @RequestMapping("/toSuccessPage.html") public String toSuccessPage() { return "success"; } @RequestMapping("/toSuccessPage2.html") public String toSuccessPage2(@ModelAttribute("modelData") String modelData) { //@ModelAttribute("modelData") //可以獲取重定向傳遞過來的頁面的model值,這樣在前端就可以獲取了 //如果沒有這個參數,頁面就獲取不到值 return "success"; } @RequestMapping("/toSuccessPage3.html") //RedirectAttributes可以向url傳遞參數,包括中文 public String toSuccessPage3(RedirectAttributes redirectAttributes) { redirectAttributes.addAttribute("param", "王"); return "redirect:/WEB-INF/jsp/success.jsp?method=號"; } }
success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> model中數據:${modelData} <br/> <br/> request中數據:${requestData } <br/> </body> </html>