最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringMVC域?qū)ο蠊蚕頂?shù)據(jù)示例詳解

 更新時(shí)間:2022年05月28日 16:44:14   作者:把蘋果咬哭的測(cè)試筆記  
這篇文章主要為大家介紹了SpringMVC域?qū)ο蠊蚕頂?shù)據(jù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

SpringMVC域?qū)ο蠊蚕頂?shù)據(jù)

一、域?qū)ο?/h3>

1. 域?qū)ο蟮淖饔?/h4>

就是在一定范圍內(nèi)可以共享數(shù)據(jù),通常有 3 種:

  • request: 一次請(qǐng)求,多個(gè)資源共享數(shù)據(jù)
  • session: 默認(rèn)一次會(huì)話,多個(gè)請(qǐng)求,多個(gè)資源共享數(shù)據(jù)
  • servletContext: 一個(gè)應(yīng)用,多個(gè)會(huì)話,多個(gè)請(qǐng)求,多個(gè)資源共享同一份數(shù)據(jù)

2. 域?qū)ο笊芷?/h4>
  • request: 創(chuàng)建-請(qǐng)求開始,銷毀-響應(yīng)結(jié)束
  • session: 創(chuàng)建-第一次調(diào)用,銷毀- tomcat超時(shí)三十分鐘(默認(rèn))、或者手動(dòng)調(diào)用invalidate()、或者服務(wù)器非正常關(guān)閉
  • servletContext: 創(chuàng)建-啟動(dòng)時(shí),銷毀-關(guān)閉時(shí)

3. 使用原則

在滿足需求的前提下,能選擇小范圍的就不選擇大范圍的。

舉例,一個(gè)查詢列表場(chǎng)景,這種一般放在 request 域中,當(dāng)然了放在更大的2個(gè)里面也可以,但是沒必要。

因?yàn)槌瞬樵冞€同時(shí)會(huì)存在增刪改的功能,所以我們要每次去查詢一次才可以保證數(shù)據(jù)是最新的,這時(shí)候如果放在更大的域比如 session 中,那么在一次請(qǐng)求中只會(huì)用到一次,其他時(shí)候這個(gè)空間就浪費(fèi)掉了。

二、向域?qū)ο蠊蚕頂?shù)據(jù)

1. 向 request 域?qū)ο蠊蚕頂?shù)據(jù)

(1)使用 servletAPI 向 request 域?qū)ο蠊蚕頂?shù)據(jù)

@Controller
public class ScopeController {
    @RequestMapping("/testServletAPI")
    public String testServletAPI(HttpServletRequest request){
        request.setAttribute("testScope", "hello,servletAPI");
        return "success";
    }
}

在控制器方法里,設(shè)置 request 域?qū)ο笾械臄?shù)據(jù),key 是testScope,value是"hello,servletAPI",最后這個(gè)請(qǐng)求轉(zhuǎn)發(fā)到了 success.html 上。

那么在 success.html 中就可以獲得域?qū)ο笾械臄?shù)據(jù)了,直接使用 key:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>success</p>
<p th:text="${testScope}"></p>
</body>
</html>

現(xiàn)在訪問http://localhost:8080/springmvc/testServletAPI,

可以看到展示出了獲取到的 request 域中共享的數(shù)據(jù)。

(2)使用 ModelAndView 向 request 域?qū)ο蠊蚕頂?shù)據(jù)

ModelAndView 有 Model和 View的功能,Model主要用于向請(qǐng)求域共享數(shù)據(jù),View主要用于設(shè)置視圖,實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)。這種也是 springMVC 建議使用的方式。

注意控制器方法必須要返回 ModelAndView 類型的對(duì)象。

@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
    /**
     * ModelAndView有Model和View的功能
     * Model主要用于向請(qǐng)求域共享數(shù)據(jù)
     * View主要用于設(shè)置視圖,實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)
     */
    ModelAndView mav = new ModelAndView();
    //向請(qǐng)求域共享數(shù)據(jù)
    mav.addObject("testScope", "hello,ModelAndView");
    //設(shè)置視圖,實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)
    mav.setViewName("success");
    return mav;
}

訪問一下http://localhost:8080/springmvc/testModelAndView:

獲取成功。

(3)使用 Model 向 request 域?qū)ο蠊蚕頂?shù)據(jù)

這里的 Model 其實(shí)就是上面 ModelAndView 中的 Model 。

@RequestMapping("/testModel")
public String testModel(Model model){
    model.addAttribute("testScope", "hello,Model");
    return "success";
}

測(cè)試一下:

獲取成功。

(4)使用 map 向 request 域?qū)ο蠊蚕頂?shù)據(jù)

還可以使用 map 集合來實(shí)現(xiàn),這時(shí)候向 map 集合中存放的數(shù)據(jù),就是要共享的數(shù)據(jù):

@RequestMapping("/testMap")
public String testMap(Map<String, Object> map){
    map.put("testScope", "hello,Map");
    return "success";
}

測(cè)試一下:

獲取成功。

(5)使用 ModelMap 向 request 域?qū)ο蠊蚕頂?shù)據(jù)

@RequestMapping("/testModelMap")
public String testModelMap(ModelMap modelMap){
    modelMap.addAttribute("testScope", "hello,ModelMap");
    return "success";
}

測(cè)試一下:

獲取成功。

Model、ModelMap、Map的關(guān)系

Model、ModelMap、Map類型的參數(shù)其實(shí)本質(zhì)上都是 BindingAwareModelMap 類型的。

分別查看源碼可知如下關(guān)系:

public interface Model{}
public class ModelMap extends LinkedHashMap<String, Object> {}
public class ExtendedModelMap extends ModelMap implements Model {}
public class BindingAwareModelMap extends ExtendedModelMap {}

2. 向 session 域共享數(shù)據(jù)

直接使用 servlet 原生的 HttpSession 即可:

@RequestMapping("/testSession")
public String testSession(HttpSession session){
    session.setAttribute("testSessionScope", "hello,session");
    return "success";
}

success 頁(yè)面也需要修改了,通過 session.testSessionScope獲取數(shù)據(jù)展示:

... ...
<p th:text="${session.testSessionScope}"></p>
... ...

重新部署訪問http://localhost:8080/springmvc/testSession:

3. 向 application 域共享數(shù)據(jù)

其實(shí)這里的 application 指的就是 ServletContext 對(duì)象,用 session.getServletContext() 來獲取即可:

@RequestMapping("/testApplication")
public String testApplication(HttpSession session){
	ServletContext application = session.getServletContext();
    application.setAttribute("testApplicationScope", "hello,application");
    return "success";
}

success.html 修改:

... ...<p th:text="${application.testApplicationScope}"></p>... ...

重新部署訪問http://localhost:8080/springmvc/testApplication:

獲取成功。

感謝《尚硅谷》的學(xué)習(xí)資源。

以上就是SpringMVC域?qū)ο蠊蚕頂?shù)據(jù)示例詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC域?qū)ο蠊蚕頂?shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java實(shí)現(xiàn)發(fā)牌小程序

    java實(shí)現(xiàn)發(fā)牌小程序

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)發(fā)牌小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • java中用String.Join美化代碼的實(shí)例講解

    java中用String.Join美化代碼的實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于java中用String.Join美化代碼的實(shí)例講解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Java編程將漢字轉(zhuǎn)Unicode碼代碼示例

    Java編程將漢字轉(zhuǎn)Unicode碼代碼示例

    偶然看到Unicode編碼,覺得挺有意思,于是搜索了相關(guān)資料,準(zhǔn)備學(xué)習(xí)學(xué)習(xí),本文主要是一個(gè)Unicode編碼的簡(jiǎn)單Java實(shí)現(xiàn),需要的朋友可以了解下。
    2017-10-10
  • 如何優(yōu)雅的處理Spring Boot異常信息詳解

    如何優(yōu)雅的處理Spring Boot異常信息詳解

    這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅的處理Spring Boot異常信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 淺析JAVA常用JDBC連接數(shù)據(jù)庫(kù)的方法總結(jié)

    淺析JAVA常用JDBC連接數(shù)據(jù)庫(kù)的方法總結(jié)

    本篇文章是對(duì)在JAVA中常用JDBC連接數(shù)據(jù)庫(kù)的方法進(jìn)行了詳細(xì)的總結(jié)分析,需要的朋友參考下
    2013-07-07
  • Springboot消除switch-case過程解析

    Springboot消除switch-case過程解析

    這篇文章主要介紹了Springboot消除switch-case過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • JMeter配置元件詳解

    JMeter配置元件詳解

    JMeter提供了豐富的配置元件,常用的包括參數(shù)化配置元件、HTTP請(qǐng)求默認(rèn)值、HTTP信息頭管理器、計(jì)數(shù)器等,本文就詳細(xì)的介紹一下這些元件的使用,感興趣的可以了解一下
    2021-12-12
  • Java如何實(shí)現(xiàn)kaptcha網(wǎng)頁(yè)驗(yàn)證碼驗(yàn)證

    Java如何實(shí)現(xiàn)kaptcha網(wǎng)頁(yè)驗(yàn)證碼驗(yàn)證

    在做關(guān)于SSM項(xiàng)目之商鋪系統(tǒng)時(shí),了解到了kaptcha實(shí)現(xiàn)網(wǎng)頁(yè)驗(yàn)證碼驗(yàn)證,感覺就很有趣,所以便開始學(xué)習(xí)記錄了起來,復(fù)制粘貼即可用
    2025-01-01
  • spring boot 如何優(yōu)雅關(guān)閉服務(wù)

    spring boot 如何優(yōu)雅關(guān)閉服務(wù)

    這篇文章主要介紹了spring boot 如何優(yōu)雅關(guān)閉服務(wù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Springboot集成Kafka實(shí)現(xiàn)producer和consumer的示例代碼

    Springboot集成Kafka實(shí)現(xiàn)producer和consumer的示例代碼

    這篇文章主要介紹了Springboot集成Kafka實(shí)現(xiàn)producer和consumer的示例代碼,詳細(xì)的介紹了什么是Kafka和安裝Kafka以及在springboot項(xiàng)目中集成kafka收發(fā)message,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評(píng)論

韶山市| 石屏县| 济源市| 三门县| 昆明市| 曲周县| 中阳县| 新晃| 当阳市| 汉源县| 禹州市| 北安市| 游戏| 且末县| 石渠县| 桦甸市| 县级市| 志丹县| 中山市| 临泉县| 英吉沙县| 清徐县| 南城县| 板桥市| 中牟县| 阆中市| 普安县| 同江市| 通化县| 丽水市| 兰考县| 宜城市| 泗水县| 昌乐县| 丹棱县| 蒲城县| 临沧市| 潮州市| 龙江县| 宁武县| 定州市|