`
哈达f
  • 浏览: 119561 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

TagLib调用过程分析

    博客分类:
  • jsp
 
阅读更多

1.tld文件配置taglib:

<?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>对应着有很多标签<tag>每个标签都有自己的标签名name和标签对应的JavaBean类
在这个javabean类中去处理我们要用的数据,这也就解决了jsp中不能写代码的问题,把jsp中的java代码
分离到一个个的java类中,每个标签<tag>对应一个java类,在jsp页面中用标签的形式去调用java类
<前缀:name>这样就实现了把java代码分离出来了,这个过程,让我们来好好想想,既然是把java代码从jsp中
分离出来,那么标签对应的java类怎么和jsp之间进行数据的通讯呢?我们可以想到一个很重要的类,那就是pageContext
这个类中持有了jsp页面中九大隐藏对象的引用,用了这个对象,我们就可以获取jsp页面的隐藏对象,所以我们的java类中
必须有这样的一个对象,是jsp页面传递过来的,看一看我们的java类,这个java类要实现标签类的功能,就必须实现
Tag(老的方法)这个接口,然后实现其中的方法,通过实验,我们可以看到
调用:setPageContext
调用:setParent
调用:doStartTag
调用:doEndTag

这就是标签类的调用方法的次序,而setPageContext方法首先被调用,印证了我们的想法,那么我们就要设置一个成员变量
用于存下由jsp页面传递出来的pageContext对象,这样我们就可以在其他的方法中去调用我们的pageContext对象了,
比如pageContext.getOut()获得JspWriter对象,用于向我们的jsp页面输出。

 -->
<taglib>
	<tlib-version>7.0</tlib-version>
	<jsp-version>1.2</jsp-version>
	<short-name>Time</short-name>
	<tag>
		<name>time</name>
		<tag-class>cn.dhcool.tlb.TimeTag</tag-class>
	</tag>
</taglib>

 

 

 

2.web.xml配置taglib:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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-app_2_5.xsd">
	<display-name></display-name>
	
	<jsp-config>
		<taglib>
			<taglib-uri>http://www.dhcool.cn</taglib-uri>
			<taglib-location>/WEB-INF/First.tld</taglib-location>
		</taglib>
	</jsp-config>
	
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

 

 

 

3.tag标签类实现:

package cn.dhcool.tlb;

import java.io.IOException;
import java.util.Date;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;

public class TimeTag implements Tag {
	
	private PageContext pageContext;

	public void setPageContext(PageContext pc) {
		this.pageContext = pc;
		System.out.println("调用:setPageContext");
	}

	public void setParent(Tag t) {
		System.out.println("调用:setParent");
	}

	public Tag getParent() {
		System.out.println("调用:getParent");
		return null;
	}

	@SuppressWarnings("deprecation")
	public int doStartTag() throws JspException {
		JspWriter out = this.pageContext.getOut();
		try {
			out.println(new Date().toLocaleString());
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("调用:doStartTag");
		return 0;
	}

	public int doEndTag() throws JspException {
		try {
			this.pageContext.getOut().println("OK!");
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("调用:doEndTag");
		return 0;
	}

	public void release() {
		System.out.println("调用:release");
	}

}
 

 

分享到:
评论

相关推荐

    taglib-1.9.1.tar.gz

    编译过程通常涉及解压源代码,配置构建系统(如使用`cmake`命令),然后运行构建命令(如`make`)。完成编译后,可以使用提供的头文件和库文件开始编写读取和修改音频文件元数据的代码。 在实际应用中,Taglib可以...

    JSP核心技术源代码分析

    - 分析JSP源代码有助于理解JSP到Servlet的转换过程,以及代码在服务器端如何执行。 - 通过查看生成的Servlet源码,可以优化性能,避免不必要的服务器端计算,提高响应速度。 6. **J2EE集成** - JSP通常与Servlet...

    网上书城(当当网)项目需求分析

    【网上书城(当当网)项目需求分析】 该项目是一个基于Java Web的网上书城,主要功能包括用户注册与登录,以及购物车和商品交易。下面将详细解析这些关键模块的技术实现和流程。 **一、用户注册与登录** 1. **...

    JPetStore项目分析

    主要模块包括:控制模块(分发请求和控制屏幕跳转)、登录和注册(用户认证)、购物车模块(跟踪用户购物过程)、登录模块(用户登录界面)、消息模块(订单异步传输)、类别模块(提供类别视图)和客户模块(存储...

    webqq2协议分析和qq聊天机器人简单实现

    1. **json-taglib-0.4.1.jar**:这是一个JSON处理库,可能用于解析和生成与WebQQ2协议相关的JSON数据。在Java开发中,它可以方便地帮助我们处理JSON对象,如序列化和反序列化。 2. **QQClient.java**:这是实现QQ...

    C#实现读取MP3歌曲文件标准信息

    分析这些代码可以帮助理解实际的实现过程,包括如何打开文件、创建TagLib#的实例以及如何处理和显示读取到的信息。 9. **用户界面**:如果是一个完整的应用,你可能还需要考虑如何将这些信息展示给用户。这可能涉及...

    mystruct.zip

    在taglib方式中,ActionSupport中的方法可以通过标签直接调用,这样在页面上就可以执行相应的业务逻辑。 2. **Form方式**:在Struts2中,Action类通常与一个或多个Java Bean(也称为模型对象或POJO)关联,这些Bean...

    jsp自定义带属性的标签

    在JSP页面`useHelloTagHaveProp.jsp`中,我们通过`&lt;%@ taglib %&gt;`指令导入了包含`helloTagHaveProp`标签的标签库,并通过`&lt;myTag:helloTagHaveProp&gt;`标签调用了该自定义标签,同时设置了`fontSize`和`fontColor`属性...

    自定义标签源代码

    在JSP页面中,通过`&lt;%@ taglib %&gt;`指令引入标签库,并使用`&lt;mytag:customTag ...&gt;`形式调用自定义标签。例如: ```jsp &lt;%@ taglib prefix="mytag" uri="/WEB-INF/taglibs/custom" %&gt; ... ``` 4. **部署与...

    基于STRUTS-2框架产品信息Web发布系统的实现.docx

    本文通过对 STRUTS 2 框架和 MVC 2 模型的分析比较,研究了 STRUTS 2 框架的实施方法,将 STRUTS 2 框架应用于实际开发,建立了产品信息发布系统模型,并分析了开发中的关键问题。 STRUTS 2 框架的优点包括: * 可...

    [计算机项目]基于jsp的教师档案管理系统设计与实现(源代码+项目报告).zip

    项目报告则可能涵盖了系统的需求分析、设计思路、实现过程以及测试结果,为理解和复现项目提供了详细指导。 【标签解析】 "jsp"标签表明这个项目的核心技术是JSP,这意味着我们将深入探讨JSP的原理和在实际项目中的...

    JSP核心技术和电子商务应用实例源代码分析

    它简化了从JSP页面获取和设置Java对象属性的过程。 5. **JSTL(JavaServer Pages Standard Tag Library)**: 是一组标准的JSP标签,提供了常见的Web开发功能,如迭代、条件判断、XML处理等,旨在减少脚本块的使用,...

    mp3长度获取

    当我们需要对MP3文件进行操作,比如分析或编辑时,了解其长度是非常基础且关键的步骤。本文将详细介绍如何使用C++编程语言来获取MP3文件的长度,并提供三种不同的实现方法。其中两种方法可以通过编译成可执行文件...

    自定义标签(简单讲解)

    参考“掌握自定义JSP标签.chm”和“创建自定义标签.txt”,我们可以看到一个完整的自定义标签实现过程。例如,创建一个简单的“Hello, World!”标签,首先编写TLD文件,然后实现对应的标签处理类,最后在JSP页面上...

    基于JSP的网上购物系统的设计与实现(源代码+论文).zip

    了解Servlet的生命周期、请求响应过程以及如何在JSP中调用Servlet是必要的。 4. **数据库交互**:网上购物系统必然涉及数据库操作,如商品管理、订单处理、用户登录注册等。这可能涉及到SQL查询、JDBC(Java ...

    AndroidMp3标签提取器源码.zip

    例如,如果使用TagLib,可以调用`TagLib#FileRef`的`tag()`方法获取ID3标签对象。 3. **标签提取**:从解析得到的ID3标签对象中,可以获取各种元数据,如`Tag#getArtist()`、`Tag#getAlbum()`、`Tag#getTitle()`等...

    Struts 入门好文章

    在此过程中,将深入探讨基于MVC设计模式的Struts框架如何被应用于实际开发中,具体涉及的内容包括需求分析、视图组件的创建、控制器组件的设计、模型组件的实现以及配置文件的编写等。 #### 二、需求分析 **需求...

    org.apache.jasper 的jar包下载

    这个过程提高了应用程序的性能,因为后续的请求可以直接调用编译后的Servlet,而无需再次翻译。 JSP页面的翻译过程涉及以下步骤: 1. 分析:解析JSP页面,识别指令(如page、include、taglib等)、脚本元素(如...

    struts+hibernate实现的网络购物系统.rar

    开发文档通常包括需求分析、系统设计、数据库设计、接口设计等多个部分,帮助团队理解和维护项目。而源代码则体现了系统的实现细节,包括Struts Action、Hibernate实体类、Service接口及其实现等。对于学习者和...

    Struts原理、开发及项目实施

    Struts原理、开发及项目实施 Holen 2002-9-12 &lt;br/&gt;1、 摘要...charset=UTF-8" language="java" %&gt; &lt;%@ taglib uri="/WEB-INF/Struts-bean.tld" prefix="bean" %&gt; &lt;%@ taglib uri="/WEB-INF/Struts-...

Global site tag (gtag.js) - Google Analytics