處理器的傳回值介紹
-
(1)Servlet将結果傳回浏覽器
轉發:帶資料
重定向:不帶資料
異步:json資料發給頁面的js,js組織标簽顯示
Servlet裡面編寫響應浏覽器的代碼都要調用response
-
(2)springmvc的方法設計了多種傳回值類型
》ModelAndView
》void
》String :請求轉發,重定向,json資料
處理器的傳回值-ModelAndView
- (1)ModelAndView 是SPringMVC提供模型視圖
-
(2)作用
設定資料 addObject(key,value)
設定頁面setViewName(邏輯視圖) 就是檔案的名稱
@Controller
public class Demo02ReturnController {
//public 傳回值類型 方法名(參數類型 參數名){}
@RequestMapping(path = "demo01.action",method = {RequestMethod.POST,RequestMethod.GET})//回顯頁面
public ModelAndView test01(){//
Person p1 = new Person(1,"jack","1234");
Person p2 = new Person(2,"rose","1234");
List<Person> list = new ArrayList<Person>();
list.add(p1);
list.add(p2);
//使用ModelAndView實作請求轉發
ModelAndView mv = new ModelAndView();
mv.addObject("list",list);
mv.setViewName("demo04_update_persons");//字首+邏輯視圖+字尾
//實體視圖 真正的檔案位址 /WEB-INF/jsp/demo04_update_persons.jsp
//實體視圖 = 字首+邏輯視圖+字尾
return mv;
}
}
處理器的傳回值-void
-
(1)方法傳回值類型寫上void
此時,參數寫上request,調用request帶設定參數與請求轉發或者重定向
- (2)背景代碼
- (3)沒有展現springmvc的優勢
Demo02ReturnController
@RequestMapping(path="demo02.action",method = {RequestMethod.GET,RequestMethod.POST})
public void test02(HttpServletRequest req, HttpServletResponse resp)throws Exception{
//請求轉發
req.setAttribute("name","請求轉發");
req.getRequestDispatcher("demo05.jsp").forward(req,resp);
}
處理器的傳回值-String
-
(1)方法傳回值類型寫上String
方法内傳回 頁面名稱
-
(2)如果攜帶資料呢?
方法參數寫上Model,比ModelAndView 少了View
req.setAttriibute(key,val)
req....forward(req,resp)
-
(3)Model作用
Model可以用來向頁面傳遞參數
-
(4)背景代碼
model.addAttribute(“item”, item);
@RequestMapping(path="demo03.action",method = {RequestMethod.GET,RequestMethod.POST})
public String test03(Model model){
//Model 可以設定資料,自動由視圖解析器帶到頁面
model.addAttribute("data","wHelloWord");
return "success"; //邏輯視圖 檔案名
}
處理器的傳回值-String-轉發和重定向
-
(1)什麼是邏輯視圖與實體視圖
頁面名稱叫邏輯視圖,不是真正的頁面位址
但是可以由視圖解析器進行拼接,得到真正的頁面位址,即實體視圖
-
(2)傳回值可以添加指令
》1:forward 請求轉發
forward 指令:實體視圖
》2:redirect 重定向
redirect 指令:項目通路路徑+實體視圖
特點:視圖解析器不對指令後的内容拼接字首與字尾
- (3)指令也可以通路控制器方法
@RequestMapping(path="demo04.action",method = {RequestMethod.GET,RequestMethod.POST})
public String test04(Model model){
//Model 可以設定資料,自動由視圖解析器帶到頁面
model.addAttribute("data","wHelloWord");
//return "forward:/WEB-INF/jsp/success.jsp"; //
//return "redirect:http://www.baidu.com"; //外網
//return "redirect:demo05.jsp"; //
return "redirect:demo01.action"; //
}