开发步骤:
1)编写一个普通的java类,继承SimpleTagSupport类,叫标签处理器类
2)覆盖doTag方法
package com.loaderman.demo.a_tag; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspContext; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.SimpleTagSupport; /** * 标签处理器类 * @author APPle * 1)继承SimpleTagSupport * */ public class ShowIpTag extends SimpleTagSupport{ /** * 以下屏蔽的代码在SimpleTagSupport代码中已经做了!这里不需要重复再做! */ /*private JspContext context; *//** * 传入pageContext *//* @Override public void setJspContext(JspContext pc) { this.context = pc; }*/ /** * 2)覆盖doTag方法 */ @Override public void doTag() throws JspException, IOException { //向浏览器输出客户的ip地址 PageContext pageContext = (PageContext)this.getJspContext(); HttpServletRequest request = (HttpServletRequest)pageContext.getRequest(); String ip = request.getRemoteHost(); JspWriter out = pageContext.getOut(); out.write("使用自定义标签输出客户的IP地址:"+ip); } }
3) 在web项目的WEB-INF目录下建立loaderman.tld文件,这个tld叫标签库的声明文件。(参考核心标签库的tld文件)
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <!-- 标签库的版本 --> <tlib-version>1.1</tlib-version> <!-- 标签库前缀 --> <short-name>loaderman</short-name> <!-- tld文件的唯一标记 --> <uri>http://loaderman.cn</uri> <!-- 一个标签的声明 --> <tag> <!-- 标签名称 --> <name>showIp</name> <!-- 标签处理器类的全名 --> <tag-class>com.loaderman.demo.a_tag.ShowIpTag</tag-class> <!-- 输出标签体内容格式 --> <body-content>scriptless</body-content> </tag> </taglib>
4) 在jsp页面的头部导入自定义标签库
5) 在jsp中使用自定义标签
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@taglib uri="http://loaderman.cn" prefix="loaderman"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>第一个自定义标签</title> </head> <body> <% //获取当前客户的IP地址 //String ip = request.getRemoteHost(); //输出到浏览器 //out.write("当前客户的IP地址是:"+ip); %> <%--使用标签库中的标签--%> <loaderman:showIp>xxxxx</loaderman:showIp> </body> </html>