1. 程式人生 > 實用技巧 >Servlet-ServletContext物件

Servlet-ServletContext物件

概述

web容器在啟動的時候,它會為每個web程式都建立一個對應的ServletContext物件,它代表了當前的web應用;

共享資料

Set

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 獲取上下文容器
    ServletContext context = this.getServletContext();
    // 將一個數據儲存在了ServletContext中,鍵值對形式,名字為:data,值: 你好
    context.setAttribute("data", "你好");

    response.setContentType("text/html");
    response.setCharacterEncoding("utf-8");
    response.getWriter().print("Have set!");
}

Get

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 獲取上下文容器
    ServletContext context = this.getServletContext();
    // 根據key獲取值
    String data = (String) context.getAttribute("data");

    response.setContentType("text/html");
    response.setCharacterEncoding("utf-8");
    response.getWriter().print("data:" + data);
}

驗證

先獲取值會得到null值:

獲取初始化引數

web.xml:

<!--配置一些web應用初始化引數-->
<context-param>
    <param-name>url</param-name>
    <param-value>jdbc:mysql://localhost:3306/mybatis</param-value>
</context-param>
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 獲取上下文容器
    ServletContext context = this.getServletContext();
    // 獲取web.xml中預配置的引數
    String url = context.getInitParameter("url");

    response.setContentType("text/html");
    response.setCharacterEncoding("utf-8");
    response.getWriter().print("data:" + url);
}

測試

請求轉發

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 獲取上下文容器
    ServletContext context = this.getServletContext();
    // 重定向到 /hello
    context.getRequestDispatcher("/hello").forward(request, response);
}

測試

讀取資原始檔

新建資原始檔

重新生成專案

確保配置好pom,防止匯出資源失敗

複製資原始檔路徑

程式碼

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 獲取輸入流
    InputStream is = this.getServletContext().getResourceAsStream("WEB-INF/classes/db.properties");
    // 載入Properties檔案
    Properties prop = new Properties();
    prop.load(is);
    // 獲取值
    String username = prop.getProperty("username");
    String password = prop.getProperty("password");

    response.setContentType("text/html");
    response.setCharacterEncoding("utf-8");
    response.getWriter().print("username:" + username);
    response.getWriter().print("<br/>");
    response.getWriter().print("password:" + password);
}

測試