JSP自定義標簽示例

jopen 10年前發布 | 22K 次閱讀 JSP Java開發

1.自定義標簽庫要編寫一個類實現Tag接口,實現它的方法

通常我們只需要繼承Tag的實現類TagSupport,重寫它的doStart()方法即可

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

/**
 * TagSupport內部會通過setPageContext(PageContext pageContext)傳入相應的pageContext
 * 有了pageContext我們就可以操作當前應用的所有對象
 *
 */
public class ViewIPTag extends TagSupport {

    private static final long serialVersionUID = 6754089233531337844L;

    @Override
    public int doStartTag() throws JspException {
        HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest();
        JspWriter out = this.pageContext.getOut();

        String ip = request.getRemoteAddr();
        try {
            out.print(ip);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        return super.doStartTag();
    }
}

2.編寫tld文件(其實本質是一個xml文件,只是后綴名為tld),此文件要放在WEB-INF/下,
可從$tomat/webapps/examples/WEB-INF/jsp2下找到tld文件

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    <tlib-version>1.0</tlib-version>
    <short-name>boco</short-name><!--prefix-->
    <uri>http://www.boco.com/lhp</uri><!--uri-->
    <tag>
        <name>viewIP</name><!--tagName-->
        <tag-class>com.boco.lhp.ViewIPTag</tag-class>
        <body-content>empty</body-content>
    </tag>
</taglib>

<body-content>有4個屬性:JSP/empty/scriptless/tagdependent;意思是,在使用標記時,標記中可包含的內容。JSP表示標記中可包 含java代碼;empty表示標記中不可包含任何內容,必須為空;scriptless表示標記中不能包含java代碼,可包含EL、JSP動作代 碼;tagdependent表示標記包含的內容由標記決定

3.jsp中的應用,要通過<%taglib uri="uri" prefix="prefix" />引入,并通過<prefix:tagName />

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.boco.com/lhp" prefix="boco" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>viewIp</title>
  </head>
    <boco:viewIP/>
  <body>
  </body>
</html>

標記庫文件打包成jar文件的方法:
創建一個臨時文件夾temp,把需要打包的標記庫類的class文件(在tomcat中webapps文件夾下對應項目的web-inf目錄下) 放入temp文件夾中(注意要帶上完整的package),并在temp下創建META-INF文件夾用以存放編輯好的tld文件,    之后通過cmd在temp目錄下  運行【jar -cvf jarName.jar *】即可,jarName是自定義的jar文件名,*表示temp文件下的所有文件


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!