日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

springmvc中的model和HttpServletRequest的區別詳細分析

作者:碼農研究僧 更新時間: 2022-01-06 編程語言

前言

寫代碼的時候經常遇到model傳值或者HttpServletRequest傳值發現都可以
那兩種的區別在于哪里呢

此處push出代碼展示區別何在

//實現登判斷,并進行相應的跳轉
@RequestMapping("/login")
public String login(String name , String pwd, HttpServletRequest request){

    Admin admin = adminService.login(name,pwd);
    if(admin != null){
        request.setAttribute("admin",admin);
        //登錄成功
        return "main";
    }else{
        //登錄失敗
        request.setAttribute("errmsg","用戶名或密碼不正確!");
        return "login";
    }

}

以及通過model書寫的代碼模塊

//實現登判斷,并進行相應的跳轉
@RequestMapping("/login")
public String login(String name , String pwd, Model model){

    Admin admin = adminService.login(name,pwd);
    if(admin != null){
        model.addAttribute("admin",admin);
        //登錄成功
        return "main";
    }else{
        //登錄失敗
        model.addAttribute("errmsg","用戶名或密碼不正確!");
        return "login";
    }

}

可以看到兩者的區別在于函數名字不同而已
那其中蘊涵的原理又是如何

1. 定義

1.1 HttpServletRequest

HttpServletRequest對象代表客戶端的請求,當客戶端通過HTTP協議訪問服務器時,HTTP請求頭中的所有信息都封裝在這個對象中,通過這個對象提供的方法,可以獲得客戶端請求的所有信息

具體其功能函數有如下:

函數 功能
getRequestURL 返回客戶端請求時的完整URL
getQueryString 返回請求行中的參數部分
getPathInfo 返回請求URL中的額外路徑信息
getRemoteAddr 返回發出請求的客戶機的IP地址
getRemoteHost 返回發出請求的客戶機的完整主機名
getRemotePort 返回客戶機所使用的網絡端口號
getLocalAddr 返回WEB服務器的IP地址
getLocalName 返回WEB服務器的主機名

1.2 model

關于model的這個類

  • 只傳輸數據而不會自動尋址,由于model的每次請求會自動創建對象,所以不用new

ModelAndView會自動尋址,就會鏈接到WebCotent下的view,modelandview請求不會自動創建對象,每次使用都要new

關于ModelAndView這個類可以看我之前的文章
SpringMVC之ModelAndView類詳細分析(全)

srpingMVC內部機制決定的,請求處理方法執行完成后,最終返回一個 ModelAndView 對象。

model數據最終還是寫到HttpServletRequest屬性中,只是model的寫法更體現了MVC思想減少各層間耦合

2. 總結

  • Model是每次請求中都存在的默認參數,利用其addAttribute()方法即可將服務器的值傳遞到jsp頁面中;
  • ModelAndView包含model和view兩部分,使用時需要自己實例化,利用ModelMap用來傳值,也可以設置view的名稱

關于其寫法的具體展示
具體如下:

  • 1.request.setAttribute("name","manongyanjiuseng");//把值存到request
    其取值具體是通過request.getAttribute(“manongyanjiuseng”)
  • 2.modelMap.addAttribute("name","manongyanjiuseng");//把值存到modelMap
    其取值具體是通過${manongyanjiuseng}
  • 3.model.addAttribute("name","manongyanjiuseng");//把值存到model
    其取值具體是通過${manongyanjiuseng}
  • 4.request.getSession.setAttribute("name","manongyanjiuseng");//先獲取,在把值存到Session
    其取值具體是通過request.getSession().getAttribute(“manongyanjiuseng”)

以上取值中${manongyanjiuseng}這種方式是最快的
也就是model和HttpServletRequest,model的取值比較快

原文鏈接:https://blog.csdn.net/weixin_47872288/article/details/122362891

欄目分類
最近更新