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+": </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 + ": </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>");
}
}