六、ServletContext和ServletConfig學習

一、servletContext圖解

這裏寫圖片描述

正如上圖所示:因爲ServletContext數據長期保存在服務器,會佔用內存,因此建議不要像服務器中添加過大的數據。

二、ServletContext與session、cookie有什麼異同

1,servletContext和session一樣保存在服務端。
2,servletContext在服務器單獨爲它開闢內存空間,可以被所有用戶共享。
3,ServletContext當web應用啓動的時候自動被創建。
4,ServletContext當tomcat關閉,或者web應用reload的時候,servletContext自動銷燬。

三、ServletContext使用場景

1,網頁計數器
2,在線用戶顯示
3,簡單的聊天系統等。

總之:如果是不同頁面共享數據,而這些數據量不大,同時又不想操作數據庫我們就可以考慮使用ServletContext。

四、ServletContext如何使用?

1,得到ServletContext

this.getServletContext();或 this.getServletConfig().getServletContext();

2,添加屬性

servletContext.setAttribute(String,Object);

3,獲取屬性

servletContext.getAttribute("屬性名");

4,刪除屬性

servletContext.removeAttribute("屬性名");

五、ServletContext特殊使用

1,獲取web應用初始化參數

<context-param>
        <param-name>username</param-name>
        <param-value>scott</param-value>
    </context-param>

2,使用ServletContext實現跳轉

this.getServletContext().getRequestDispatcher("/login").forward(req, resp);

3,讀取文件
(1)【web目錄或WEB-INF下的文件

InputStream inputStream=this.getServletContext().getResourceAsStream("dbinfo.Properties");
        //創建Properties
        Properties pp=new Properties();
        pp.load(inputStream);
        String username=pp.getProperty("username");
        String password=pp.getProperty("password");
        out.println("username="+username+" password="+password);

(2)如果文件放在src目錄下則用類加載器進行加載

InputStream is =Servlet5.class.getClass().getResourceAsStream("dbinfo.Properties");

(3)獲取文件全路徑,加載文件

String path = getServletContext().getRealPath("/imag/bg.jpg");
        System.out.println("path = "+path);
        InputStream inputStream = this.getServletContext().getResourceAsStream(path);

六、ServletConfig

(1)servletConfig主要用於讀取servlet的配置信息(即:讀取web.xlm)

<servlet>
    <servlet-name>ConfigTest</servlet-name>
    <servlet-class>com.hsp.model.ConfigTest</servlet-class>
    <!-- 這裏可以給servlet配置信息,這裏配置的信息只能被該servlet讀取  -->
    <init-param>
    <param-name>encoding</param-name>
    <param-value>gbk</param-value>
    </init-param>
    <!-- 1表示該servlet被初始化的順序 -->
    <load-on-startup>1</load-on-startup>
  </servlet>

針對上面配置,讀取配置信息。

String encoding=this.getServletConfig().getInitParameter("encoding");

(2)針對某個servlet配置,讀取該servlet所有配置參數信息

Enumeration<String> names=this.getServletConfig().getInitParameterNames();
        while(names.hasMoreElements()){
            String name=names.nextElement();
            System.out.println(name);
            System.out.println(this.getServletConfig().getInitParameter(name));
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章