ServletContextとは何ですか
ServletContextは、Webアプリケーションのコンテキストオブジェクト(ウェブ・アプリケーション・オブジェクト)の代表であり、Webアプリケーションが情報のServletContextのアプリケーションのうちの対応する内側にパッケージされています。
ServletContextのライフサイクル
サーバーの起動時に作成されます、ときにサーバーのシャットダウンして破壊しました。
コンテキストを取得する方法
- パラメータinitメソッドのServletConfigにより取得されます
- HttpServletをそれらへのダイレクトアクセス:
this.getServletContext()
このアプローチは、取得した設定を通ってくると行くことに本質的でした
グローバル初期化パラメータを取得するには
1つのサーブレットの設定を来ることができない初期化パラメータ。最も外側に来ると構成で
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>name</param-name>
<param-value>youyuan</param-value>
</context-param>
</web-app>
グローバル初期化パラメータを取得します:
package org.youyuan.servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/myservlet")
public class myServlet extends HttpServlet{
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("servlet");
ServletContext servletContext = this.getServletContext();
System.out.println(servletContext.getInitParameter("name"));
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
コンソールをプリントアウト:
Webアプリケーションは、特定のリソースのリソースへの絶対パスを取得し、ファイルの内容を読み取ります
最初:
db.properties:
name = zs
age = 23
@WebServlet("/getPropertiesServlet")
public class getPropertiesServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
/*获取相对路径的输入流对象*/
InputStream resourceAsStream = servletContext.getResourceAsStream("/WEB-INF/classes/db.properties");
Properties properties = new Properties();
properties.load(resourceAsStream);
System.out.println("name="+properties.getProperty("name"));
System.out.println("age="+properties.getProperty("age"));
}
}
コンソールは、結果を印刷します:
第二:
@WebServlet("/getPropertiesServlet2")
public class servlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
//获取文件绝对路径
String realPath = servletContext.getRealPath("/WEB-INF/classes/db.properties");
FileInputStream inputStream = new FileInputStream(realPath);
Properties properties = new Properties();
properties.load(inputStream);
System.out.println("name="+properties.getProperty("name"));
System.out.println("age="+properties.getProperty("age"));
}
}
コンソールは、結果を印刷します:
ServletContextはドメインオブジェクトであります
-
ドメインとは何ですか?データを保存することができます。
-
ドメインオブジェクト?データオブジェクトにアクセスすることが可能です。
-
ServletContextのスコープ・ドメイン・オブジェクト?
1. Webアプリケーション全体。
2.すべてのWebリソースは、データにアクセスすることができます
3.データを共有することができます。 -
内のServletContextを取得するには、データの書き込みが完了した後
context.setAttribute(文字列名、オブジェクト値) ; -
取得のServletContextが完了した後、抽出されたデータは名前で保存されている
context.getAttribute(ストリング名); -
取得のServletContextが完了した後、指定された名前の値を削除
Context.removeAttribute(文字列名)。 -
それはドメインオブジェクトである限り、いくつかの方法は、実質的に存在しています