サーブレット構成ファイルでは、1 つ以上の <init-param> タグを使用して、サーブレットの一部の初期化パラメータを構成できます。サーブレットが初期化パラメータを使用して構成されている場合、Web コンテナはサーブレット インスタンス オブジェクトの作成時にこれらの初期化パラメータを ServletConfig オブジェクトに自動的にカプセル化し、サーブレットの init メソッドを呼び出すときに ServletConfig オブジェクトがサーブレットに渡されます。さらに、プログラマは、ServletConfig オブジェクトを通じて現在のサーブレットの初期化パラメータ情報を取得できます。
サンプルコードは次のとおりです。
次のようにコードをコピーします。
パッケージ com.yyz.servletconfig;
インポート java.io.IOException;
java.util.Enumeration をインポートします。
インポート javax.servlet.ServletConfig;
インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServlet;
インポート javax.servlet.http.HttpServletRequest;
インポート javax.servlet.http.HttpServletResponse;
パブリック クラス ServletConfigDemo1 extends HttpServlet {
ServletConfig 構成。
public void doGet(HttpServletRequest リクエスト、HttpServletResponse レスポンス)
ServletException、IOExceptionをスローします{
//指定された初期化パラメータを取得します
文字列値 = config.getInitParameter("xxx");
応答.getOutputStream().write(value.getBytes());
//すべての初期化パラメータを取得します
列挙体 e = cofig.getInitParameterNames();
while(e.hasMoreElements()){
文字列名 = (文字列) e.nextElement();
値 = config.getInitParameter(名前);
response.getOutputStream().write((name+"="+value+"<br/>").getBytes());
}
}
public void doPost(HttpServletRequest リクエスト、HttpServletResponse レスポンス)
ServletException、IOExceptionをスローします{
doGet(リクエスト, レスポンス);
}
@オーバーライド
public void init(ServletConfig config) throws ServletException {
this.config = 構成;
}
}
対応する web.xml は次のとおりです。
次のようにコードをコピーします。
<?xml バージョン="1.0" エンコーディング="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
バージョン="2.5">
<サーブレット>
<サーブレット名>ServletConfigDemo1</サーブレット名>
<サーブレットクラス>com.yyz.servletconfig.ServletConfigDemo1</サーブレットクラス>
<初期パラメータ>
<param-name>xxx</param-name>
<param-value>yyy</param-value>
</init-param>
<初期パラメータ>
<param-name>名前</param-name>
<param-value>yyz</param-value>
</init-param>
<初期パラメータ>
<param-name>パスワード</param-name>
<param-value>yyy</param-value>
</init-param>
</サーブレット>
<サーブレットマッピング>
<サーブレット名>ServletConfigDemo1</サーブレット名>
<url-pattern>/servlet/ServletConfigDemo1</url-pattern>
</サーブレットマッピング>
</web-app>
テスト結果は次のとおりです。
上記のコードでは、ServletConfigDemo1 オブジェクトに ServletConfig オブジェクトがありますが、これは実際には不要です。 ServletConfigDemo1 は HttpServlet を継承し、HttpServlet は GenericServlet を継承するためです。 GenericServlet はすでに ServletConfig オブジェクトを内部的に維持しています。関連する実装は次のとおりです。
次のようにコードをコピーします。
パブリック抽象クラス GenericServlet
Servlet、ServletConfig、java.io.Serializable を実装します
{
… …
プライベート一時的な ServletConfig 構成。
public ServletConfig getServletConfig() {
構成を返します。
}
}
したがって、作成した Servlet オブジェクトの getServletConfig() メソッドを通じて ServletConfig オブジェクトを直接取得できます。サンプル コードは次のとおりです。
次のようにコードをコピーします。
パッケージ com.yyz.servletconfig;
インポート java.io.IOException;
java.io.PrintWriterをインポートします。
インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServlet;
インポート javax.servlet.http.HttpServletRequest;
インポート javax.servlet.http.HttpServletResponse;
public class ServletConfigDemo2 extends HttpServlet {
public void doGet(HttpServletRequest リクエスト、HttpServletResponse レスポンス)
ServletException、IOExceptionをスローします{
文字列値 = this.getServletConfig().getInitParameter("name");
System.out.println(値);
}
public void doPost(HttpServletRequest リクエスト、HttpServletResponse レスポンス)
ServletException、IOExceptionをスローします{
doGet(リクエスト, レスポンス);
}
}
web.xml ファイル:
次のようにコードをコピーします。
<?xml バージョン="1.0" エンコーディング="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
バージョン="2.5">
<サーブレット>
<サーブレット名>ServletConfigDemo2</サーブレット名>
<サーブレットクラス>com.yyz.servletconfig.ServletConfigDemo2</サーブレットクラス>
<初期パラメータ>
<param-name>名前</param-name>
<param-value>yyz</param-value>
</init-param>
</サーブレット>
<サーブレットマッピング>
<サーブレット名>ServletConfigDemo2</サーブレット名>
<url-pattern>/servlet/ServletConfigDemo2</url-pattern>
</サーブレットマッピング>
</web-app>