<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # ServletContext **全局上下文** ServletContext代表是一個web應用的環境(上下文)對象,ServletContext對象 內部封裝是該web應用的信息,ServletContext對象一個web應用只有一個 代表: 服務器在啟動時,會為每個部署的項目創建唯一的一個對象,代表整個應用的web.xml配置文件,所有的Servlet獲取到的都是同一個全局上下文對象 ## 生命周期 創建:該web應用被加載(服務器啟動或發布web應用(前提,服務器啟動狀態)) 銷毀:web應用被卸載(服務器關閉,移除該web應用) ## 獲取 ~~~ ServletContext context = servletConfig.getServletContext(); 或者 ServletContext context = getServletContext(); ~~~ ## 作用 1. 獲取上下文路徑context.getContextPath() 2. 獲取文件的真實路徑 虛擬路徑: url 真實路徑: 文件全路徑(文件上傳下載時使用) 3. 作為整個web應用的最大域對象,在項目中共享數據 context.getAttribute context.setAttribute 4. 獲取全局上下文的配置參數 5. 獲取MIME類型 `String getMimeType(String file)` ## 示例 ~~~ <!-- 給全局上下文配置初始化參數,寫在web.xml標簽內 --> <context-param> <param-name>name</param-name> <param-value>xjd</param-value> </context-param> </web-app> ~~~ ~~~ public void init(ServletConfig servletConfig) throws ServletException { //獲取全局上下文 ServletContext context = servletConfig.getServletContext(); System.out.println(context); //獲取上下文路徑,帶/,就是8080/這邊 System.out.println(context.getContextPath()); //獲取文件的真實路徑,編譯后的 System.out.println(context.getRealPath("1.html")); //獲取全局初始化參數 System.out.println(context.getInitParameter("name")); } ~~~ 獲得web應用中任何資源的絕對路徑 方法:`String path = context.getRealPath(相對于該web應用的相對地址);` ~~~ //獲得ServletContext對象 ServletContext context = getServletContext(); //1. 獲得a b c d.txt的絕對路徑 //1.1 獲得a.txt String realPath_A = context.getRealPath("a.txt"); System.out.println(realPath_A); //1.2 獲得b.txt String realPath_B = context.getRealPath("WEB-INF/b.txt"); System.out.println(realPath_B); //1.3 獲得c.txt String realPath_C = context.getRealPath("WEB-INF/classes/c.txt"); System.out.println(realPath_C); //在讀取src(classes) 下的資源是可以同類加載器----專門加載classes 下的文件的 //getResource() 參數是一個相對地址 相對classes //ContextServlet是我這個文件的類名,換成自己類的名字就行 String path = ContextServlet.class.getClassLoader().getResource("c.txt").getPath(); System.out.println(path); //2. 域對象---向servletContext中存數據,小的向大的存,大的不能向小的存 context.setAttribute("name", "zhangsan"); ~~~ ## 域對象 ServletContext是一個域對象 什么是域對象?什么是域? 存儲數據的區域就是域對象 ServletContext域對象的作用范圍:整個web應(所有的web資源都可以隨意向Servletcontext域中存取數據,數據可以共享) 域對象的通用的方法 ~~~ setAtrribute(String name,Object obj); getAttribute(String name); removeAttribute(String name); ~~~ ## 讀取文件的數據 若UserDao類中的update()方法為: ~~~ public void update() throws IOException { // 以下代碼雖然可以讀取到資源文件的數據,但是無法獲取更新后的數據。 Properties dbconfig = new Properties(); InputStream in = UserDao.class.getClassLoader().getResourceAsStream("db.properties"); dbconfig.load(in); System.out.println(dbconfig.getProperty("url")); } ~~~ 以上代碼雖然可以讀取到資源文件的數據,但是無法獲取更新后的數據,即此時修改資源文件db.properties中的內容,但讀取不到最新的內容。這一般不是我們所希望的,那么怎么解決這個問題呢? 解決辦法:通過類裝載的方式得到資源文件的位置,再通過傳統方式讀取資源文件的數據,這樣就可以讀取到更新后的數據。代碼如下: ~~~ public void update() throws IOException { // 通過類裝載的方式得到資源文件的位置,再通過傳統方式讀取資源文件的數據,這樣就可以讀取到更新后的數據。 String path = UserDao.class.getClassLoader().getResource("db.properties").getPath(); FileInputStream in = new FileInputStream(path); Properties dbconfig = new Properties(); dbconfig.load(in); System.out.println(dbconfig.getProperty("url")); } ~~~ 總結: 如果讀取資源文件的程序不是Servlet的話,就只能通過類裝載器去讀了。而通過類裝載器去讀取資源文件需要注意兩個問題: * 資源文件不能太大!!! * **通過類裝載的方式去讀,采用類裝載的方式去讀文件,經常讀不到更新后的數據** # 注意 ServletContext對象會被所有的web資源所共享,通過它來帶數據,會出現數據紊亂的現象。在實際開發里面,不能通過context域,要通過request域
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看