Taglib学习笔记

基于QGIS的DEM地形数据精细化处理:从裁剪、合并到成果输出 本文详细介绍了使用QGIS进行DEM地形数据的精细化处理流程,包括数据获取、裁剪、合并及成果输出等关键步骤。通过实战技巧和注意事项,帮助用户高效处理地形数据,适用于GIS分析、三维建模等应用场景。 阅读详情

第一章:怎样使用Taglib

一、第一种方法:仅声明TLD位置

在jsp文件头部,声明:

<%@ taglib uri=”/WEB-INF/tlds/orataglib_1_0.tld” prefix=”ora”%>

这样就ok了

二、第二种方法:定义库名称

在jsp文件头部,声明:

<%@ taglib uri=”/orataglib” prefix=”ora”%>

 

在WEB.XML添加如下声明:

<taglib>

<taglib-uri>/orataglib</taglib-uri>

<taglib-location>/WEB-INF/tlds/orataglib_1_0.tld</taglib-location>

</taglib>

 

在tld里加上:

<shortname>ora</shortname>

<uri>/orataglib</uri>

 

三、区别

  如果类不多,用tld引用就行了。否则就用库形式,便于升级,改动。

第二章:编写最简单的Taglib

一、编写HelloWorldTag 类

package mytag; 

import java.io.IOException;

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

public class HelloWorldTag extends TagSupport{

    public int doStartTag() throws JspTagException{

        return EVAL_BODY_INCLUDE;

    }

    public int doEndTag() throws JspTagException{

    try{

            pageContext.getOut().write("Hello World");

        }

    catch (IOException ex){

             throw new JspTagException("Error!");

        }

    return EVAL_PAGE;

    }

}

二、编写相应TLD文件

取名为hello.tld

 

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE taglib

        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"

    "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

<taglib>

  <tlibversion>1.0</tlibversion>

  <jspversion>1.1</jspversion>

  <shortname>myTag</shortname> 

    <tag>

        <name>hello</name>

        <tagclass>mytag.HelloWorldTag</tagclass>

        <bodycontent>empty</bodycontent>

   </tag>

</taglib>

三、编写testtag1.jsp进行调用

<%@ page language="java"%>

<%@ taglib uri="/WEB-INF/tlds/hello.tld" prefix="mytag"%>

<html>

<body>

<mytag:hello></mytag:hello>

</body>

</html>

四、注意点

1.   实际生成的类在包mytag内,要把该包放到WEB-INF/classes目录下

2.   tld文件里的shortname 就是 jsp里的 prefix

3.   tld文件里的<tag>标签中,<name>表示实际类的一个别名,供jsp页面引用。<tagclass>表示实际的类

 4。把tld文件放到WEB-INF 下的tlds文件夹内。

五、概述

1.   必须导入javax.servlet.jsp.* 和 javax.servlet.jsp.tagext.* 两个包

2.   让自己的类继承TagSupport 类,并且实现doStartTag 或 doEndTag 方法。

3.   编写tld标签,只需指定<shortname>标签,和编写具体的类标签<tag>,其他的可以复制粘贴。

4.   在jsp页面是用导入tld的办法。然后用前缀:类名的方式调用。

 

第三章:编写带BODY的Taglib

一、编写HelloBodyTag 类

package mytag;

import java.io.*;

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

 

public class HelloBodyTag extends BodyTagSupport {

    public int doAfterBody() throws JspException {

        BodyContent bc = getBodyContent();

        JspWriter out = getPreviousOut();

        try {

            out.write(bc.getString());

        }

        catch (IOException e) {} // Ignore

        return SKIP_BODY;

    }

}

 

二、修改tld文件

加入:

     <tag>

        <name>HelloBodyTag</name>

        <tagclass>mytag.HelloBodyTag</tagclass>

     </tag>

三、        写testtag2.jsp调用

<%@ page language="java"%>

<%@ taglib uri="/WEB-INF/tlds/hello.tld" prefix="mytag"%>

<html>

<body>

<mytag:HelloBodyTag>Hello,BodyTag!</mytag:HelloBodyTag>

</body>

</html>

四、概述

1.类最好继承BodyTagSupport

2.BodyContent 和 JspWriter 都是容器内的对象

3.GetPreviousOut表示外层输出。对于某个tag来说,外层输出就是jsp页面。对于某个嵌套的tag,外层输出就是父tag

第四章:让行为互相协作

一、编写互相协作的行为

编写这样的tag,在jsp页面调用时

<mytag:helloMan><mytag:param name=”diego” ></mytag:param></mytag: helloMan>

 会得到 hello diego 的值。

 

二、编写两个Tag类

1.编写ParamTag 类

package mytag;

 

import java.net.*;

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

 

public class ParamTag extends TagSupport {

    private String name;

 

    public void setName(String name) {

        this.name = name;

    }

    public int doEndTag() throws JspException {

        Tag parent = findAncestorWithClass(this, ParamParent.class);

 

        ParamParent paramParent = (ParamParent) parent;

        paramParent.setParam(name);

        return EVAL_PAGE;

    }

   

    public void release() {

        name = null;

        super.release();

    }

}

 

2.编写HelloParamTag 类

package mytag;

 

import java.io.*;

import javax.servlet.http.*;

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

 

public class HelloParamTag extends TagSupport implements ParamParent {

    private String name;

 

    public void setParam(String name) {

        this.name = name;

    }

 

    public int doStartTag() {

        return EVAL_BODY_INCLUDE;

    }

 

    public int doEndTag() throws JspException {

        JspWriter out = pageContext.getOut();

        try{

     out.print("hello " + this.name );   

     }

catch(IOException e){

         }            

        return EVAL_PAGE;

    }

 

    public void release() {

     name = null;

        super.release();

    }

}

 

3.编写辅助的接口ParamParent

package mytag;

 

public interface ParamParent {

    void setParam(String name);

}

 

三、修改tld文件

    <tag>

        <name>helloMan</name>

        <tagclass>mytag.HelloParamTag</tagclass>

    </tag>

     

    <tag>

        <name>param</name>

        <tagclass>mytag.ParamTag</tagclass>

        <attribute>

            <name>name</name>

            <required>false</required>

        </attribute>

    </tag>

四、编写testtag3.jsp进行测试

<%@ page language="java"%>

<%@ taglib uri="/WEB-INF/tlds/hello.tld" prefix="mytag"%>

<html>

<body>

<mytag:helloMan><mytag:param name="diego" ></mytag:param></mytag:helloMan>

</body>

</html>

五、设计思路

1.嵌套行为中,一般父Tag实现业务逻辑,子Tag为父Tag提供参数

2.子Tag通过findAncestorWithClass 找到父Tag,为了达到通用化,设计接口ParamParent

3.在父Tag内实现了接口的setParam方法,子Tag通过调用该方法,设置了父Tag的参数

4.父Tag实现业务逻辑。打印Hello

从零到精通:ROS2 MoveIt2与MPC机械臂轨迹规划的完整配置流程 本文详细介绍了ROS2 MoveIt2与MPC机械臂轨迹规划的完整配置流程,从环境准备到高级功能扩展,帮助开发者实现精准控制。通过集成模型预测控制(MPC),机械臂能够优化复杂轨迹规划,处理动态避障,提升工业自动化效率。 阅读详情

相关推荐

STM32F103新手必看:0.96寸OLED屏幕从接线到动态显示全攻略(附IIC避坑指南)

本文为STM32F103新手提供了0.96寸OLED屏幕从硬件接线到软件驱动的完整实战指南。重点解析了IIC通信的时序、设备地址(0x78/0x7A)的常见陷阱,并详细演示了如何实现字符显示与平滑滚动显示等动态效果,帮助开发者快速上手并避开常见调试难题。

stone的博客 552

关于<taglib>的uri的一点总结

      在早期的jsp开发中,是使用java代码来控制逻辑和显示的,但这样会给前端开发人员带来些麻烦并且代码的可读性也会降低。为了解决上述情况,标签库被创造出来了。标签库的目的在于让开发人员能像使用html标签一样的标签来完成前端的逻辑控制和内容显示,而把那些繁琐、复杂的java代码隐藏在背后,返还jsp文件的干净整洁。   标签库的组成       一个标签库一般由两大部分组成:jar...

iteye_5704的博客 1141

自相关互相关卷积的_相关性(Correlation)和相干性(Coherence)

1. 概念相关性(Correlation,或称相关系数或关联系数),显示两相关变量之间线性关系的强度和方向。在统计学中,相关的意义是用来衡量两个变量相对于其相互独立的距离。相干性(Coherence),与相关性计算得到的信息非常相似,都是衡量两个变量之间的相关程度,只是相干性多用于频域计算,可以在基于频率上给出更多的信息,而相关性多用于普通的数组计算和时域信号。这里其实应该有三个概念,c...

weixin_39963053的博客 3332

Taglib笔记

  读完《jsp设计》后深深为大师的功力折服。这篇笔记就当是个总结。  所有代码在win2000 + tomcat 4.1.17 下通过。  我刚开始使用java,有不当之处,请高手多指教。       第一章:怎样使用Taglib一、第一种方法:仅声明TLD位置在jsp文件头部,声明:这样就ok了二、第二种方法:定义库名称在jsp文

itdiego的专栏 852

如何使用obspy下载地震波形数据

如果你是地震研究学者,或者需要进行地震方面的研究,那么地震数据下载是一个必不可少的流程,本文将告诉你如何使用obspy下载想要的地震数据

monsterk1的博客 2077

2025-03-21(DS复习): Databricks 的技术架构

Databricks 的技术架构以 ​为核心,构建了一套高度集成、可扩展且支持多云环境的统一分析平台。其架构设计注重存储与计算的深度融合,并通过丰富的服务层功能简化了数据工程、机器学习和数据科学的工作流。

baidu_24377669的博客 1428

taglib指令标签的详细使用

taglib 指令标记的使用 taglib 指令用于引入 JSP 页面中需要使用的标签库的定义,以便在页面中使用标签库定义的标签。

weixin_64240179的博客 5272

基于立创开源ESP32步进电机驱动板硬件设计与优化实践

本文详细介绍了基于立创开源平台的ESP32步进电机驱动板硬件设计与优化实践。重点解析了ESP32-PICO-D4与A4950驱动芯片的选型搭配、电源电路噪声隔离、PCB布局布线技巧以及保护电路设计,为开发者提供了从原理图到PCB的完整优化方案,有效提升驱动板的性能与稳定性。

7z8x2c4v6b9的博客 647

taglib指令报错 uri错误

近期在学习jsp时,学到taglib的时候,有: <%@ taglib uri= "http://java.sun.com/jsp/jstl/core" prefix="c" %>一直报错,显示uri无效。 在查询了相关资料后发现是缺少两个包,即:jstl.jar ,standard.jar 。 在http://tomcat.apache.org/taglibs/sta...

NULL 9504

【OpenAirInterface知识-3】OAI端到端部署之5G基站部署

在上一篇文章中已经完成了5G核心网的部署,本篇文章将介绍OAI 5G基站的部署过程。

起名字难上难的博客 3421

波士顿房价预测分析----以线性回归LinearRegression为例

波士顿房价数据集包括506个样本,每个样本包括13个特征变量和该地区的平均房价,房价显然和多个特征变量相关,先选择一元线性回归与多个特征建立线性方程,观察模型预测的好坏,再选择多元线性回归进行房价预测。13个特征变量缩写含义CRIM城镇人均犯罪率ZN住宅用地所占比例INDUS城镇中非住宅用地所占比例CHAS虚拟变量,用于回归分析NOX环保指数RM每栋住宅的房间数AGE1940 年以前建成的自住单位的比例DIS距离 5 个波士顿的就业中心的加权距离RAD。

我走的每一步都算数 842

java taglib uri_jsp中自定义Taglib详解

一、自定义标签入门之无参数自定义标签1.开发自定义标签类当我们在JSP页面使用一个简单的标签时,底层实际上由标签处理类提供支持,从而可以使用简单的标签来封装复杂的功能,从而使团队更好地协作开发(能让美工人员更好地参与JSP页面的开发)。自定义标签类都必须继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport,或者TagSupport除此之外,JSP自定义标...

weixin_29082143的博客 989

【Unity实战篇 】| Unity实现 文本框可以自适应大小,到达最大宽度之后再缩小字体

Unity实现 Text文本框可以自适应大小,到达最大宽度之后再缩小字体 需求:在文本框可以自适应大小拉伸的前提下,增加一个最大限制宽度,使其到达最大宽度后 再启用 Best Fit 实现自适应改变文字大小以适应文本框的大小。 在Unity中经常会用到文本组件的自适应大小功能,一般使用HorizontalLayoutGroup和ContentSizeFitter组件配合即可实现文本自适应的效果。

努力前行,总会成为自己心中的那道光 3万+

taglib学习笔记

在web.xml加入taglib <taglib> <taglib-uri>/WEB-INF/tiles.tld</taglib- uri> <taglib-location>/WEB-INF/tiles.tld</taglib...

chuanzaang6621的博客 131

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

JSON taglib学习笔记

JSON-taglib 是 JSP 2.0 标签库,用于生产 JSON (JavaScript Object Notation) 数据结构。 使用方法:   把 Json-taglib.jar 到 WEB-INF/lib目录 下面是一个示例: &lt;json:object&gt;   &lt;json:property name = " outer "  value = ...

liyiye 489

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

JSP自定义标记taglib学习笔记

一、什么是Taglib? 标记库(tag library),是指由在JSP页面中使用的标记所组成的库。JSP容器推出时带有一个小型的、默认的标记库。而自定义标记库是为了某种特定的用途或者目的,将一些标记放到一起而形成的一种库。在一个团队中协同工作的开发者们可能会为各自的项目创建一些非常特定化的自定义标记库,同时也会创建一个通用自定义标记库,以供当前使用。 标准的JSP 标记可以调用JavaBea

Wiinder的博客 5847

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Taglib入门文章

关于Taglib的文章:《深入浅出taglib》 http://www.javaresearch.org/article/showarticle.jsp?column=106&thread=9477《taglib简介》http://www-900.ibm.com/developerWorks/cn/java/j-jsp07233/index.shtml?ca=dwcn-isc&me=cci

[布袋]的布袋 1236

JSP Taglib 学习笔记

今天看书摸索了一下午终于弄清楚 JSP Taglib 的基本原理,做下笔记以备忘. [color=blue]首先[/color]要写好一个java类来定义自己的Tag,这个类必须继承[color=red]javax.servlet.jsp.tagext.SimpleTagSupport[/color]类才可以!!! [color=green]HelloJSP_Taglib.java [...

dishell的专栏 251

JUnit学习笔记16---用JSP和taglib进行单元测试3

用mock objects对taglib进行单元测试    因为JSP不是纯粹的java代码,所以,使用mock进行测试是行不通的,但是,taglib却是纯粹的java代码,可以测试,但是它也有麻烦的地方,我们要为抽象的java类的PageContext创建mocks。    在前面,我们曾学习了使用EasyMock和DynaMock的框架来创建mock,但是,他们使用的是Dynamic P

Chatopera 1346

Javaweb学习笔记——(十二)——————JSP指令:page指令、include指令、taglib指令,JavaBean,内省,EL表达式

JSP指令JSP指令分类 JSP有三大指令: *page指令 *include指令 *taglib指令 在JSP中没有任何指令是必须的。 但基本上每个JSP都是使用page指令============================================================page指令 page指令是最为常用的指令 1.page指令的常用属性: *import:...

第二颗大白菜 3981

JUnit学习笔记15---对JSP和taglib进行单元测试2

使用Cactus对taglib进行单元测试 下图描述了使用Cactus对标记库的一个标记进行单元测试的过程。(图片链接) 1.Cactus对象初始化测试类,该类必须派生自JspTestCase类,测试标记时所需要的任何HTTP参数,都需要在beginXXX方法中进行配置。例如,如果某标记从Http参数提取信息,那么你需要在beginXXX方法中定义该参数。 2.在内部,C

pan-zy的专栏 957

JUnit学习笔记14---对JSP和taglib进行单元测试1

                                                  A test that can’t be repeated is worthless.---Brian Marick 本章内容: 分别使用Cactus和mock objects对JSP进行单元测试 用Maven运行Cactus对JSP的测试 用Cactus对Taglib进行

Chatopera 4737

Javaweb学习笔记——(十二)——————JSP指令:page指令、include指令、taglib指令,JavaBean,内省,EL表达式...

JSP指令JSP指令分类 JSP有三大指令: *page指令 *include指令 *taglib指令 在JSP中没有任何指令是必须的。 但基本上每个JSP都是使用page指令============================================================page指令 page指令是最为常用的指令 1.page指令...

weixin_33922670的博客 292
上一篇: taglib 原理和实现 第一章:实现最简单的Tag
下一篇: kodojdo指南(前两章)
云哥
博客等级 码龄22年 2粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值