JavaWeb-のServletContext(ファイルは、次の2つの方法のリソースを読み込みます)

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(文字列名)。

  • それはドメインオブジェクトである限り、いくつかの方法は、実質的に存在しています

公開された25元の記事 ウォンの賞賛0 ビュー280

おすすめ

転載: blog.csdn.net/qq_42219004/article/details/105281716