天天看點

Day25SSM之SpringMVC 方法傳回值類型***

處理器的傳回值介紹

  • (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"; //
    }