サーブレット コンテキストの使用

ServletContext オブジェクトを使用して、アプリケーションに関する情報を保存したり、次の環境情報にアクセスできます。

サーブレットは getServletContext メソッドを使用して ServletContext オブジェクトの参照を取得します。

この例では、いくつかのサーブレット コンテキスト情報を表示します。

import java.io.*; 
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;

public class GetServletContextInfo extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse resp)
  throws IOException, ServletException { 

  // 戻り値のタイプを設定します。
  resp.setContentType("text/html");
  PrintWriter out = resp.getWriter();
  out.println("<html><head><title>Servlet Context</title>");
  out.println("</head><body>");
  out.println("<h1>Servlet Context Information</h1>");

  // ServletContext 情報を取得します。
  ServletContext scntxt = this.getServletContext();
  // サーバー情報
  out.println("Server information:"+ scntxt.getServerInfo() + "<br>");
  // メジャー/マイナー バージョン
  int majorVersion = scntxt.getMajorVersion();
  int minorVersion = scntxt.getMinorVersion();
  out.println("Major version:" + majorVersion + "<br>");
  out.println("Minor version:" + minorVersion + "<br>");
  // init パラメータがある場合は取得します。
  java.util.Enumeration parmEnum = scntxt.getInitParameterNames();
  if (parmEnum.hasMoreElements()) { 
    out.println("<h2>ServletContext Parameters</h2>");
  }
  while (parmEnum.hasMoreElements()) {
    String name = (String)parmEnum.nextElement();
    out.println("<b>"+name+":&nbsp;</b>");
    out.println(scntxt.getInitParameter(name) + "<br>");
  }
  // ServletContext 属性
  java.util.Enumeration attrEnum = scntxt.getAttributeNames();
  if (attrEnum.hasMoreElements()) { 
    out.println("<h2>ServletContext Attributes</h2>");
  }
  while (attrEnum.hasMoreElements()) {
    // 常に属性を適切なクラスに割り当てます。
    String attrName = (String)attrEnum.nextElement();
    out.println("<b>" + attrName + ":&nbsp;</b>");
    out.println(scntxt.getAttribute(attrName) + "<br>");
  }
  // サーブレットの実際のパスを取得します。
  String path = req.getServletPath();
  out.println("<b>Full servlet path:</b>");
  out.println(scntxt.getRealPath(path) + "<br>");
  // ServletContext のログを記録します。
  Date now = new Date();
  scntxt.log("Testing ServletContext:" + now);

  out.println("</body></html>");
} 
}