jsp 自定义标签库
自定义标签的作用
*** 自定义标签的主要用于移除jsp页面中java代码 ***
JSP页面中使用自定义的标签
使用jsp指令<% @taglib uri="标签库的uri" prefix="标签使用的前缀" %> 指令要引入使用的标签库。
自定义标签的执行流程
jsp引擎遇到自定义标签时,首先创建标签处理类的实例对象,然后按照JSP规范定义的通信规则依次调用它的方法。
public void setPageContext(pageContext pc) JSP引擎实例化标签处理器后,将调用setPageContext方法将JSP页面
的pageContext对象传递给标签处理器,标签处理器以后可以通过这个pageContext对象与JSP页面进行通信。
public void setParent(Tag t),setPageContext 方法执行完成后,WEB容器接着调用setParent方法将当前标签的父标签
传递给当前标签处理器,如果当前标签没有父标签,则传递给setParent方法的参数值为null
public int doStartTag(),调用setPageContext方法和setParent方法之后,WEB容器执行到自定义标签的开始标记时,就会调用标签处理器的doStartTag 方法。
public int doEndTag(),WEB容器执行完自定义标签的标签体后,就会接着去执行自定义标签的结束标记,此时,WEB容器会去调用标签处理器的doEndTag方法。
public void release() 通常WEB容器执行完自定义的标签后,标签处理器会驻留在内存中,为其他请求服务,直至停止web应用,web容器才会调用release方法。
开发步骤
实现tag接口的JAVA类
package business.tagdemo;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
public class DemoTag implements Tag {
/** 接受传递进来的pageContext */
private PageContext pageContext;
/**WEB容器执行完自定义标签的标签体后,就会接着去执行自定义标签的结束标记,此时,WEB容器会去调用标签处理器的doEndTag方法*/
@Override
public int doEndTag() throws JspException {
System.out.println("调用doEndTag()方法");
return 0;
}
/**调用setPageContext方法和setParent方法之后,WEB容器执行到自定义标签的开始标记时,就会调用标签处理器的doStartTag 方法*/
@Override
public int doStartTag() throws JspException {
System.out.println("调用doStartTag()方法");
HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
JspWriter jw = pageContext.getOut();
String ip = request.getRemoteAddr();
try {
jw.write(ip);
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
@Override
public Tag getParent() {
return null;
}
@Override
public void release() {
System.out.println("调用release()方法");
}
/**
* JSP引擎实例化标签处理器后,将调用setPageContext方法将JSP页面的pageContext对象传递给标签处理器,标签处理器以后可以通过这个pageContext对象与JSP页面进行通信
*/
@Override
public void setPageContext(PageContext arg0) {
this.pageContext=arg0;
}
@Override
public void setParent(Tag arg0) {
}
}
创建tld文件
elipse中的创建方法
New ----> XML ----> XML File ----> 输入xx.tld
----> Create XML file from a DTD file ----> Select XML Catalog entry
----> -//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd" >
<taglib>
<!-- taglib标签库版本号 -->
<tlib-version>gs-1.0</tlib-version>
<jsp-version>jsp-version</jsp-version>
<short-name>gs</short-name>
<!--
为自定义标签库设置一个uri,uri以/开头,后面的内容可以随便写,如这里写/gs.
在JSP页面中引用标签库的时候,需要通过uri找到标签库
在JSP页面中就要这样引入标签库<%@ taglib uri="/gs" prefix="/gs"%>
-->
<uri>/gs</uri>
<!--
一个taglib中可以包含多个自定义标签,每一个标签使用一个tag标记来描述
一个tag标记对应一个自定义标签
-->
<tag>
<!--
为标签类配置一个标签名,在JSP页面中使用标签时是通过标签名来找到要调用的标签处理类的
通过aouo就能找到business.tagdemo.DemoTag类
-->
<name>aouo</name>
<!-- 标签处理类 -->
<tag-class>business.tagdemo.DemoTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
JSP中使用自定义标签库
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!-- 使用taglib 指令引入gs标签库,标签库的前缀(prefix)可以随意设置,如这里设置成 prefix=ssgao-->
<%@ taglib uri="/gs" prefix="ssgao"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
你的IP地址(使用JAVA代码输出):
<%
//JSP页面中使用java代码输出IP地址
String ip=request.getRemoteAddr();
out.write(ip);
%>
<br />
你的ip地址(使用自定义标签库输出):
<!-- 使用是自定义标签gs -->
<ssgao:aouo/>
</body>
</html>
jsp 自定义标签库的更多相关文章
- JSP自定义标签库
总所周知,JSP自定义标签库,主要是为了去掉JSP页面中的JAVA语句 此处以格式化输出时间戳为指定日期格式为例,简单介绍下JSP自定义标签的过程. 编写标签处理类(可继承自javax.servlet ...
- [JSP]自定义标签库taglib
自定义标签的步骤 自定义标签的步骤大概有三步: 1.继承javax.servlet.jsp.tagext.*下提供的几个标签类,如Tag.TagSupport.BodyTagSupport.Simpl ...
- JSP自定义标签的使用简化版
在jsp中 如果不想页面中出现java代码 这个时候就需要使用到jsp的自定义标签库技术了 自定义标签库 能够有效的减少jsp中java代码的出现 使其更加自然的像html页面一样 如果要使用jsp自 ...
- jsp的标签库和自定义标签
1.jstl标签库 JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. ...
- JSP 标准标签库(JSTL)
JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...
- JSP 自定义标签
0 标签技术的API继承体系 1 作用 jsp自定义标签用于移除页面中的java代码 2 实现 2.1 标签处理类ViewIPTag.java package com.zsm.util; import ...
- JSP自定义标签开发入门
一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发 ...
- javaweb学习总结(二十三)——jsp自定义标签开发入门
一.自定义标签的作用 自定义标签主要用于移除Jsp页面中的java代码. 二.自定义标签开发和使用 2.1.自定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 1 packag ...
- JSP 标准标签库(JSTL)之最常用的JSTL标签总结
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. Apache Tomcat安装JSTL 库步骤如下: 从Apache的标准标签库中下载的二进包(jakarta-t ...
随机推荐
- LTE-A 载波聚合(Carrier Aggregation)介绍【转】
本文转自:https://blog.csdn.net/txgc1009/article/details/46467255 载波聚合(Carrier Aggregation) 首先介绍几个基本概念 Pr ...
- 主引导记录MBR的结构和作用
MBR磁盘分区都有一个引导扇区,称为主引导记录,英文简称为MBR.1. MBR的结构MBR扇区位于整个硬盘的第一个扇区:按照C/H/S地址描述,即0柱面〇磁头1扇 区:按照LBA地址描述即0扇区.它是 ...
- [BZOJ1497]最大获利
Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一 ...
- POJ 2823 Sliding Window(单调队列 || 线段树)题解
题意:求每个长度为k的数组的最大值和最小值 思路: 1.用线段树创建维护最大值和最小值,遍历询问,简单复习了一下...有点手生 2.单调队列: 可以看一下详解 单调队列顾名思义就是一个单调递增或者递减 ...
- spring注解注入properties配置文件
早期,如果需要通过spring读取properties文件中的配置信息,都需要在XML文件中配置文件读取方式. 基于XML的读取方式: <bean class="org.springf ...
- nginx 安装手记
Nginx需要依赖下面3个包 1. gzip 模块需要 zlib 库 ( 下载: http://www.zlib.net/ ) zlib-1.2.8.tar.gz 2. rewrite 模块需要 p ...
- 【第三十二章】 elk(3)- broker架构 + 引入logback
实际中最好用的日志框架是logback,我们现在会直接使用logback通过tcp协议向logstash-shipper输入日志数据.在上一节的基础上修改!!! 一.代码 1.pom.xml 1 &l ...
- [tixml]保存,读取
保存: //xml的实体 TiXmlElement* rootElement = new TiXmlElement("spark"); rootElement->SetAtt ...
- [ios]如何在ARC代码中混编非ARC代码
参考 :http://blog.sina.com.cn/s/blog_b595ce9e0101nvvn.html “ios中如果arc和非arc文件混编,可以在build parses中指定compi ...
- Java 常用对象-Date类和Calender类
2017-11-02 22:29:34 Date类:类 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值 ...