envタグでは、リクエストヘッダの内容を表示します。
<ash: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タグでは、リクエストヘッダの内容を表示します。
<ash: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 |
<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>
|