カスタム・タグ・ライブラリーを作成するステップは、例を用いて説明するのが最適です。 以下の例は、sslCheck と呼ばれる新しいタグ・ライブラリーを作成するステップを示したものです。 このライブラリーは、Web サイトを保護するために Secure Socket Layer (SSL) を使用します。 SSL により、ご使用の Web ブラウザーと Web サーバーの間のセキュア接続が可能となり、sslCheck タグにより、 セキュア接続の使用法には融通性がもたらされます。 このタグは、Java™ と JavaScript™ を含め、どのような JSP スクリプトでも使用することができます。
以下の簡単なタグ実装では、使用されるプロトコルが検査されてから、タグのパラメーター化 (後に説明) に応じてユーザーがセキュア・ページまたはエラー・ページに転送されます。 こうしたセキュア接続の実装は、JSP ページ (サーバー・サイドの動的に実行するページ) の場合にかぎり働き、HTML (静的) ページの場合には働きません。
sslCheck .java の作成
package com.ibm.entry.security; import java.io.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.TagSupport; public class sslCheck extends TagSupport { private String errorpage=null; public void setErrorpage(String errorpage) { this.errorpage=errorpage; } public int doStartTag() throws JspException { try { HttpServletRequest request=(HttpServletRequest)pageContext.getRequest(); HttpServletResponse response=(HttpServletResponse)pageContext.getResponse(); if(request.getScheme().indexOf("https")==-1) { if(errorpage!=null) { // redirect to the error page response.sendRedirect(errorpage); } else { // redirect to the page using ssl String jumpURL="https://"+request.getServerName()+request.getRequestURI(); if(request.getQueryString()!=null) jumpURL+="?"+request.getQueryString(); response.sendRedirect(jumpURL); } return SKIP_PAGE; } } catch (IOException ioe) { throw new JspTagException("sslcheck tag failed"); } return EVAL_BODY_INCLUDE; } public int doEndTag() { return EVAL_PAGE; } }
<?xml version="1.0" encoding="UTF-8"?> <taglib> <tlibversion>1.0</tlibversion> <shortname>sslchk</shortname> <info>Tag library for checking SSL</info> <tag> <name>sslcheck</name> <tagclass>com.ibm.entry.security.sslCheck</tagclass> <bodycontent>empty</bodycontent> <attribute> <name>errorpage</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
<%@ taglib uri="/WEB-INF/tlds/sslCheck.tld" prefix="sslchk" %>
オプション | 説明 |
---|---|
<sslchk:sslcheck errorpage="error_page"/> | 要求が JSP に出され、SSL が使用されていない時は、定義された、errorpage 属性のあるページが表示されます。 アプリケーションを使用して開始する前に、エラー・メッセージ付きのエラー・ページを作成する必要があります。 |
<sslchk:sslcheck/> | errorpage 属性が無い状態でタグを使用すると、ページがただちに、同じロケーションにではあるが、セキュア接続を使用してリダイレクトされます。 |
<wsad install directory>¥plugins¥com.ibm.etools.websphere.runtime¥etc¥DummyServerKeyFile.jksWebAS は、JKS ファイルのパスワードです。
<%@ taglib uri="/WEB-INF/tlds/sslCheck.tld" prefix="sslchk" %> <sslchk:sslcheck/>