91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringMVC域對象共享數據怎么實現

發布時間:2022-05-30 09:45:44 來源:億速云 閱讀:235 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“SpringMVC域對象共享數據怎么實現”,內容詳細,步驟清晰,細節處理妥當,希望這篇“SpringMVC域對象共享數據怎么實現”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

SpringMVC域對象共享數據

一、域對象

1. 域對象的作用

就是在一定范圍內可以共享數據,通常有 3 種:

  • request: 一次請求,多個資源共享數據

  • session: 默認一次會話,多個請求,多個資源共享數據

  • servletContext: 一個應用,多個會話,多個請求,多個資源共享同一份數據

2. 域對象生命周期
  • request: 創建-請求開始,銷毀-響應結束

  • session: 創建-第一次調用,銷毀- tomcat超時三十分鐘(默認)、或者手動調用invalidate()、或者服務器非正常關閉

  • servletContext: 創建-啟動時,銷毀-關閉時

3. 使用原則

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

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

因為除了查詢還同時會存在增刪改的功能,所以我們要每次去查詢一次才可以保證數據是最新的,這時候如果放在更大的域比如 session 中,那么在一次請求中只會用到一次,其他時候這個空間就浪費掉了。

二、向域對象共享數據

1. 向 request 域對象共享數據

(1)使用 servletAPI 向 request 域對象共享數據

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

在控制器方法里,設置 request 域對象中的數據,key 是testScope,value是"hello,servletAPI",最后這個請求轉發到了 success.html 上。

那么在 success.html 中就可以獲得域對象中的數據了,直接使用 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>

現在訪問http://localhost:8080/springmvc/testServletAPI,

SpringMVC域對象共享數據怎么實現

可以看到展示出了獲取到的 request 域中共享的數據。

(2)使用 ModelAndView 向 request 域對象共享數據

ModelAndView 有 Model和 View的功能,Model主要用于向請求域共享數據,View主要用于設置視圖,實現頁面跳轉。這種也是 springMVC 建議使用的方式。

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

@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
    /**
     * ModelAndView有Model和View的功能
     * Model主要用于向請求域共享數據
     * View主要用于設置視圖,實現頁面跳轉
     */
    ModelAndView mav = new ModelAndView();
    //向請求域共享數據
    mav.addObject("testScope", "hello,ModelAndView");
    //設置視圖,實現頁面跳轉
    mav.setViewName("success");
    return mav;
}

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

SpringMVC域對象共享數據怎么實現

獲取成功。

(3)使用 Model 向 request 域對象共享數據

這里的 Model 其實就是上面 ModelAndView 中的 Model 。

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

測試一下:

SpringMVC域對象共享數據怎么實現

獲取成功。

(4)使用 map 向 request 域對象共享數據

還可以使用 map 集合來實現,這時候向 map 集合中存放的數據,就是要共享的數據:

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

測試一下:

SpringMVC域對象共享數據怎么實現

獲取成功。

(5)使用 ModelMap 向 request 域對象共享數據

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

測試一下:

SpringMVC域對象共享數據怎么實現

獲取成功。

Model、ModelMap、Map的關系

Model、ModelMap、Map類型的參數其實本質上都是 BindingAwareModelMap 類型的。

分別查看源碼可知如下關系:

public interface Model{}
public class ModelMap extends LinkedHashMap<String, Object> {}
public class ExtendedModelMap extends ModelMap implements Model {}
public class BindingAwareModelMap extends ExtendedModelMap {}
2. 向 session 域共享數據

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

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

success 頁面也需要修改了,通過 session.testSessionScope獲取數據展示:

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

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

SpringMVC域對象共享數據怎么實現

3. 向 application 域共享數據

其實這里的 application 指的就是 ServletContext 對象,用 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:

SpringMVC域對象共享數據怎么實現

獲取成功。

讀到這里,這篇“SpringMVC域對象共享數據怎么實現”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

准格尔旗| 克山县| 东丽区| 蓬安县| 雷州市| 手游| 马公市| 都江堰市| 商都县| 杨浦区| 登封市| 黄浦区| 高密市| 杂多县| 蒙山县| 沙河市| 介休市| 永兴县| 玉环县| 武穴市| 正宁县| 武威市| 武强县| 旺苍县| 新疆| 宝应县| 甘洛县| 高密市| 沙田区| 新竹市| 嘉黎县| 开鲁县| 辽阳市| 阜城县| 磐石市| 东阿县| 兰西县| 泰顺县| 鸡东县| 二连浩特市| 勐海县|