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 ...
随机推荐
- sql注入学习心得与sqlmap使用心得
做题是最好的老师 首先先来分享一下我用来练手的题目,实验吧中的简单的sql注入1,2,3 不得不说,sql注入真是一个神奇的东西,至少我以前看起来一点头绪都没有的题目能入手了 首先是简单的sql注入3 ...
- 【前端】javascript+jQuery实现旋转木马效果轮播图slider
实现效果: 实现原理: 技术栈: javascript+jQuery+html+css 实现步骤: // 0. 获取元素 // 1. 鼠标放置到轮播图上,显示两侧的控制按钮,移开后隐藏 // 2. 为 ...
- Django组件(三) Django之中间件
中间件概述 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影响到性 ...
- HDU 6148 Valley Numer (数位DP)题解
思路: 只要把status那里写清楚就没什么难度T^T,当然还要考虑前导零! 代码: #include<cstdio> #include<cstring> #include&l ...
- UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0
Windows 7/8/10机器上安装Python 2.7后,下载一些Package包进行setup时总是报错UnicodeDecodeError,如下: File "C:/Python27 ...
- LLDP协议、STP协议 笔记
参考: 数据链路层学习之LLDP 生成树协议 LLDP协议.STP协议 笔记 LLDP 提出背景: 随着网络技术的发展,接入网络的设备的种类越来越多,配置越来越复杂,来自不同设备厂商的设备也往往会增加 ...
- linux设置端口转发(一键设置)
linux设置端口转发 #下载rinetd程序并进入文件夹 wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xv ...
- jsjl_for_ubuntu12.04
1. VC++代码: #include <stdio.h> #include <windows.h> #include <wchar.h> void MoveMou ...
- 学霸网站之NABC
1.Need 本次学霸系统的设计是基于学长的版本,在此基础上,我们准备进一步完善已有版块,在用户信息管理.提问.搜索.分类.评论.个性化界面.用户反馈.娱乐.积分获取等方面加入新的功能. 一.用户信息 ...
- SQL Timeout超时的处理方法
第一步:修改Web.config配置文件.在数据库连接字符串中加上连接时间Connect Timeout,根据实际情况定时间. <!--连接数据库--> <connectionStr ...