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

環境変数表示カスタムタグ

envカスタムタグ

envカスタムタグの仕様

 envタグでは、リクエストヘッダの内容を表示します。

<ash:env />

envタグハンドラのソース

 タグハンドラは、doStartTagメソッドのみ実装します。
pageContext.getRequest()メソッドで、リクエストオブジェクトを取得することで、環境変数やパラメータなどを参照することができます。 参照した内容は、pageContext.getOut()メソッドで、出力ライタを取得して表示します。

EnvTag.java
// Copyright (C)1995-2002 ASH multimedia lab. http://ash.jp/
package jp.ash.taglib;

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

/**
 * 環境変数表示タグライブラリ
**/
public class EnvTag extends TagSupport {
  /** タグ初期処理 **/
  public int doStartTag() throws JspException {
    HttpServletRequest req = (HttpServletRequest)pageContext.getRequest();
    PrintWriter out = new PrintWriter(pageContext.getOut());

    try {
      out.println("<table border=\"2\" width=\"100%\">");
      out.println("<caption>リクエストヘッダ情報(getXXX)</caption>");
      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>");

      Enumeration enum = req.getHeaderNames();
      if (enum != null) {
        out.println("<table border=\"2\" width=\"100%\">");
        out.println("<caption>リクエストヘッダ情報(getHeader)</caption>");
        out.println("<tr><th>key</th><th>val</th></tr>");
        while (enum.hasMoreElements()) {
          String key = (String) enum.nextElement();
          String val = req.getHeader(key);
          out.println("<tr><td>"+key+"</td><td>"+val+"</td></tr>");
        }
        out.println("</table>");
      }

    } catch(Exception ex) {
      throw new JspException(ex);
    }
    return SKIP_BODY;
  }
}

paramカスタムタグ

paramカスタムタグの仕様

 paramタグでは、リクエストヘッダの内容を表示します。

<ash:param />

paramタグハンドラのソース

 タグハンドラは、doStartTagメソッドのみ実装します。
pageContext.getRequest()メソッドで、リクエストオブジェクトを取得することで、getParameter()メソッドで、パラメータの内容を参照することができます。 参照した内容は、pageContext.getOut()メソッドで、出力ライタを取得して表示します。

ParamTag.java
// Copyright (C)1995-2002 ASH multimedia lab. http://ash.jp/
package jp.ash.taglib;

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

/**
 * リクエストパラメータ表示タグライブラリ
**/
public class ParamTag extends TagSupport {
  /** タグ初期処理 **/
  public int doStartTag() throws JspException {
    HttpServletRequest req = (HttpServletRequest)pageContext.getRequest();
    PrintWriter out = new PrintWriter(pageContext.getOut());

    try {
      Enumeration enum = req.getParameterNames();
      if (enum != null) {
        out.println("<table border=\"2\" width=\"100%\">");
        out.println("<caption>リクエストパラメータ情報(getParameter)</caption>");
        out.println("<tr><th>key</th><th>val</th></tr>");
        while (enum.hasMoreElements()) {
          String key = (String) enum.nextElement();
          String val = req.getParameter(key);
          out.println("<tr><td>"+key+"</td><td>"+val+"</td></tr>");
        }
        out.println("</table>");
      }

    } catch(Exception ex) {
      throw new JspException(ex);
    }
    return SKIP_BODY;
  }
}

環境変数表示カスタムタグの利用例

表示画面イメージ

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

http://localhost:7001/TagLib/Env.jsp?key01=val01&key02=val02
環境変数の表示×
環境変数の表示
リクエストヘッダ情報(getXXX)
keyval
authTypenull
characterEncodingnull
contentLength-1
contentTypenull
contextPath/TagLib
methodGET
pathInfonull
pathTranslatednull
protocolHTTP/1.1
queryStringnull
remoteAddr127.0.0.1
remoteHost127.0.0.1
remoteUsernull
requestedSessionIdnull
requestURI/TagLib/Env.jsp
schemehttp
serverName127.0.0.1
serverPort7001
servletPath/Env.jsp
リクエストヘッダ情報(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)
Host127.0.0.1:7001
ConnectionKeep-Alive
リクエストパラメータ情報(getParameter)
keyval
key01val01
key02val02

JSPのソース(Env.jsp)

 <ash:env />や<ash:param />と記述するだけで、環境変数を表示することができます。 この機能は、JSPのデバッグ時に便利です。

Env.jsp
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib prefix="ash" uri="http://ash.jp/taglib_1_0" %>

<html>
<head><title>環境変数の表示</title></head>
<body>

<h1>環境変数の表示</h1>

<ash:env />

<ash:param />

</body>
</html>

カスタムタグの登録方法

タグライブラリ記述子の作成

 タグライブラリの情報をタグライブラリ記述子に設定します。

taglib.tld
<?xml version="1.0" encoding="Shift_JIS" ?>
<!DOCTYPE taglib PUBLIC
  "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
  "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>
  <tlib-version>1.0</tlib-version>
  <jsp-version>1.2</jsp-version>
  <short-name>ash</short-name>
  <uri>http://ash.jp/taglib_1_0</uri>
  <description>ASHのタグライブラリ</description>

  <tag>
    <name>env</name>
    <tag-class>jp.ash.taglib.EnvTag</tag-class>
    <body-content>empty</body-content>
    <description>リクエストヘッダを表示</description>
  </tag>
  <tag>
    <name>param</name>
    <tag-class>jp.ash.taglib.ParamTag</tag-class>
    <body-content>empty</body-content>
    <description>リクエストパラメータを表示</description>
  </tag>

</taglib>

デプロイメント記述子の作成

 タグライブラリ記述子をデプロイメント記述子に設定します。

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>

  <taglib>
    <taglib-uri>http://ash.jp/taglib_1_0</taglib-uri>
    <taglib-location>/WEB-INF/taglib.tld</taglib-location>
  </taglib>

</web-app>


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