ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

環境変数表示サーブレット

 サーブレットに渡る環境変数の内容を表示するサーブレットです。

画面イメージ

 getXXXメソッドで取得できるリクエストヘッダの内容と、getHeaderメソッドで取得できるリクエストヘッダの内容と、getParameterメソッドで取得できるリクエストパラメータの値を表示します。

http://localhost:7001/Example/EnvServlet?key01=val01&key02=val02
環境変数の表示×
環境変数の表示
リクエストヘッダ情報(getXXX)
keyval
AuthTypenull
CharacterEncodingnull
ContentLength-1
ContentTypenull
ContextPath/Example
MethodGET
PathInfonull
PathTranslatednull
ProtocolHTTP/1.1
QueryStringkey01=val01&key02=val02
RemoteAddr127.0.0.1
RemoteHost127.0.0.1
RemoteUsernull
RequestedSessionIdnull
RequestURI/Example/EnvServlet
Schemehttp
ServerNamelocalhost
ServerPort7001
ServletPath/EnvServlet
リクエストヘッダ情報(getHeader)
keyval
Acceptimage/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-powerpoint, application/vnd.ms-excel,
application/msword, */*
Accept-Languageja
Accept-Encodinggzip, deflate
User-AgentMozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Hostlocalhost:7001
ConnectionKeep-Alive
リクエストパラメータ情報(getParameter)
keyval
key01val01
key02val02

環境変数表示サーブレットソースプログラムの作成

 以下のJavaサーブレットのソースを作成します。
 日本語のページの場合は、ContentType設定でcharsetの指定が必要です。 ContentType設定は、getWriterの前に実行しなければなりません。
 環境変数は、専用のgetXXXメソッドとgetHeaderメソッドで、リクエストヘッダの内容を表示しています。 また、getParameterメソッドで、リクエストパラメータの内容を表示しています。

EnvServlet.jsp
// Copyright (C)1995-2002 ASH multimedia lab. http://ash.jp/
package jp.ash.example;

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

/** 環境変数表示サーブレット **/
public class EnvServlet extends HttpServlet {
  public void service (HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
    PrintWriter out;
    Enumeration enum;
    String key, val;

    res.setContentType("text/html; charset=Shift_JIS");
    out = res.getWriter();

    out.println("<html><body>");
    out.println("<h1>環境変数の表示</h1>");

    out.println("<h2>リクエストヘッダの表示(getXXXメソッド)</h2>");

    out.println("<table border=\"2\">");
    out.println("<tr><th>key</th><th>val</th></tr>");
    out.println("<tr><td>AuthType</td><td>"+req.getAuthType()+"<tr>");
    out.println("<tr><td>CharacterEncoding</td><td>"+req.getCharacterEncoding()+"<tr>");
    out.println("<tr><td>ContentLength</td><td>"+req.getContentLength()+"<tr>");
    out.println("<tr><td>ContentType</td><td>"+req.getContentType()+"<tr>");
    out.println("<tr><td>ContextPath</td><td>"+req.getContextPath()+"<tr>");
    out.println("<tr><td>Method</td><td>"+req.getMethod()+"<tr>");
    out.println("<tr><td>PathInfo</td><td>"+req.getPathInfo()+"<tr>");
    out.println("<tr><td>PathTranslated</td><td>"+req.getPathTranslated()+"<tr>");
    out.println("<tr><td>Protocol</td><td>"+req.getProtocol()+"<tr>");
    out.println("<tr><td>QueryString</td><td>"+req.getQueryString()+"<tr>");
    out.println("<tr><td>RemoteAddr</td><td>"+req.getRemoteAddr()+"<tr>");
    out.println("<tr><td>RemoteHost</td><td>"+req.getRemoteHost()+"<tr>");
    out.println("<tr><td>RemoteUser</td><td>"+req.getRemoteUser()+"<tr>");
    out.println("<tr><td>RequestedSessionId</td><td>"+req.getRequestedSessionId()+"<tr>");
    out.println("<tr><td>RequestURI</td><td>"+req.getRequestURI()+"<tr>");
    out.println("<tr><td>Scheme</td><td>"+req.getScheme()+"<tr>");
    out.println("<tr><td>ServerName</td><td>"+req.getServerName()+"<tr>");
    out.println("<tr><td>ServerPort</td><td>"+req.getServerPort()+"<tr>");
    out.println("<tr><td>ServletPath</td><td>"+req.getServletPath()+"<tr>");
    out.println("</table>");

    out.println("<h2>リクエストヘッダの表示(getHeaderメソッド)</h2>");
    enum = req.getHeaderNames();
    if (enum != null) {
      out.println("<table border=\"2\">");
      out.println("<tr><th>key</th><th>val</th></tr>");
      while (enum.hasMoreElements()) {
        key = (String) enum.nextElement();
        val = req.getHeader(key);
        out.println("<tr><td>"+key+"</td><td>"+val+"</td></tr>");
      }
      out.println("</table>");
    }

    out.println("<h2>リクエストパラメータの表示(getParameterメソッド)</h2>");
    enum = req.getParameterNames();
    if (enum != null) {
      out.println("<table border=\"2\">");
      out.println("<tr><th>key</th><th>val</th></tr>");
      while (enum.hasMoreElements()) {
        key = (String) enum.nextElement();
        val = req.getParameter(key);
        out.println("<tr><td>"+key+"</td><td>"+val+"</td></tr>");
      }
      out.println("</table>");
    }

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

サーブレットの登録方法

 WEB-INF/web.xmlファイルに、サーブレットの登録を行います

web.xml
<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC
  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
  <servlet>
    <servlet-name>EnvServlet</servlet-name>
    <servlet-class>jp.ash.example.EnvServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>EnvServlet</servlet-name>
    <url-pattern>/EnvServlet/*</url-pattern>
  </servlet-mapping>
</web-app>


Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp