创建定制标记库

通过示例更好地说明了创建定制标记库涉及的步骤。以下示例显示用于创建名为 sslCheck 的新标记库的步骤。此标记库使用安全套接字层(SSL)用来保护 Web 站点。SSL 允许 Web 浏览器与 Web 服务器之间进行安全连接,而 sslCheck 标记提供了使用安全连接的灵活方法。可以在任何 JSP 脚本包括 Java™ 和 JavaScript™ 中使用该标记。

下列简单标记实现检查所用的协议,然后将用户重定向至安全页或错误页, 这取决于标记的参数化(在后面说明)。此安全连接实现仅对 JSP 页(服务器端动态运行页)有效,对 HTML(静态)页是无效的。

必须为新标记创建两个文件:
  • sslCheck.java - 标记的 Java 实现
  • sslCheck.tld - 新标记的标记库定义

创建 sslCheck .java

从 Java 透视图中:
  1. 选择您的应用程序
  2. 选择文件 > 新建 > 。在“新建 Java 类”窗口中输入下列内容:
    • 包:com.ibm.entry.security
    • 名称:sslCheck
    • 超类:java.lang.Object
  3. 单击完成。源文件将自动打开。
  4. 删除自动代码并将它替换为以下代码:
    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;
       }
     } 
  5. 保存并关闭文件。
创建 sslCheck.tld
必须在 TLD 文件中定义该标记。要从 Web 透视图创建 TLD 文件:
  1. 选择 YourApp
  2. 选择 Web 模块 WEB-INF(位于 WebContent 文件夹下)。
  3. 右键单击 WEB-INF/tlds 文件夹。
  4. 选择新建 > 文件
  5. 命名文件 sslCheck.tld
  6. 单击完成。源文件将自动打开。删除自动代码并将它替换为以下代码:
    <?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>
  7. 保存并关闭文件。
使用标记
在可以使用 sslcheck 标记之前,必须建立下列标记库引用。
  1. 将以下标记库定义放置在 JSP 源文件的第一行中:
    <%@ taglib uri="/WEB-INF/tlds/sslCheck.tld" prefix="sslchk" %>
  2. 将下列其中一个 SSL 检查标记放置在代码中,紧跟在标记库定义后面。可以将标记与 errorpage 属性配合使用,也可以不配合使用。
    选项 描述
    <sslchk:sslcheck errorpage="error_page"/> 当请求到达 JSP 且未在使用 SSL 时,将显示使用 errorpage 属性定义的页。在开始使用应用程序之前, 必须使用错误消息创建错误页。
    <sslchk:sslcheck/> 使用不带 errorpage 属性的标记会立即将页重定向至同一位置,但会使用安全连接。
  3. 保存并关闭文件。
设置 SSL 传输
如果要部署到 WebSphere® V5 或 V5.1 服务器,则首先需要为测试应用程序服务器设置 SSL 传输,然后才能在开发环境中测试 SSL 连接。要设置 SSL 传输,请完成下列步骤:
  1. 从 J2EE 透视图中打开文档分发应用程序的测试服务器配置(WebSphere 管理域)。
  2. 单击端口选项卡。
  3. 单击 HTTP 传输方法列表旁边的添加。提供以下值:
    • 主机名:*(星号)
    • 端口:443
  4. 选择启用 SSL 复选框。
  5. 选择外部复选框。
  6. 单击确定
  7. 保存并关闭文件。
现在就为测试应用程序服务器设置了 SSL 传输,您可以在开发环境中测试 SSL 连接了。嵌入式 HTTP Server 正在对测试服务器使用哑元 SSL 服务器证书。如果要更改证书,使用 iKeyman 实用程序。哑元 SSL 服务器证书位于以下位置:
<wsad install directory>\plugins\com.ibm.etools.websphere.runtime\etc\DummyServerKeyFile.jks
WebAS 是 JKS 文件的密码。
测试标记
  1. 打开 login/login.jsp 文件并单击“源代码”选项卡。
  2. 将下列行置于文件的最上面:
    <%@ taglib uri="/WEB-INF/tlds/sslCheck.tld" prefix="sslchk" %>
    <sslchk:sslcheck/>
  3. 保存文件。
  4. 启动应用程序,然后登录。
浏览器将会通知您使用安全连接访问该站点。如果应用程序正在使用框架,而一个或多个框架正在使用安全连接,则浏览器中的位置将保留为“http”并且不会更改为“https”
相关概念
标记库
Web 资源
相关任务
添加定制 JSP 标记

反馈