Servlet-ServletContext物件
阿新 • • 發佈:2021-01-08
概述
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);
}