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> |