servlet自定义标签

walkwithmonth walkwithmonth     2023-02-25     729

关键词:

自定义标签

       1)用户定义的一种jsp标记,当一个含有自定义标签的jsp页面被jsp引擎编译成servlet时,tag标签被转化成了对一个称为 标签处理类 的对象的操作。于是,当jsp页面被jsp引擎转化为servlet后,实际上tag标签被转化为了对tag处理类的操作。

       2)所有的标签处理器类都要实现 JspTag 接口,该接口中没有定义任何方法,主要作为 Tag 和 SimpleTag 接口的父接口。编写完成标签功能的 Java 类(标签处理器) 

public class ForEachTag extends SimpleTagSupport

	private Collection<?> items;//集合变量名 
	public void setItems(Collection<?> items) 
		this.items = items;
	 
	private String var;//变量 
	public void setVar(String var) 
		this.var = var;
	 
	@Override
	public void doTag() throws JspException, IOException  
		if(items != null)
			for(Object obj: items)
		     //	 遍历的对象放入到 pageContext
				getJspContext().setAttribute(var, obj); 
				//把标签体的内容直接输出到页面上. 
				getJspBody().invoke(null);  
			
		 
	 

  3)编写标签库描述(tld)文件,在tld文件中对自定义中进行描述

          标签库描述(Tag Library Description)文件简称为 tld 文件,其扩展名为 .tld,多个标签的集合就形成了一个标签库,标签库中的所有标签都必须在标签文件中进行描述。Tld 文件可以放置在 web 应用程序的 WEB-INF 目录及其子目录中,但不能放置在 WEB-INF 目录下的 classes 和 lib 子目录中 。

<?xml version="1.0" encoding="UTF-8"?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
	version="2.0">

	<description>MyTag 1.2 core library</description>
	<display-name>MyTag core</display-name>
	<tlib-version>1.2</tlib-version>
	<short-name>myself</short-name>
	<uri>http://myself.com/myTag/core</uri> 
<tag> <name>forEach</name> <tag-class>com.demo.tag.ForEachTag</tag-class> <body-content>scriptless</body-content> <attribute> <name>items</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>var</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>choose</name> <tag-class>com.demo.tag.ChooseTag</tag-class> <body-content>scriptless</body-content> </tag> <tag> <name>when</name> <tag-class>com.demo.tag.WhenTag</tag-class> <body-content>scriptless</body-content> <attribute> <name>test</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>otherwise</name> <tag-class>com.demo.tag.OtherwiseTag</tag-class> <body-content>scriptless</body-content> </tag> </taglib>

  4) 在 JSP 页面使用 taglib 指令引入标签库描述文件:

            <%@ taglib prefix=“” uri=“” %>   uri:属性用于指定所引入的标签库描述(tld)文件中所定义的 <uri> 元素的内容;prefix 属性用于为引入的 tld 文件指定一个”引用代号”。Prefix 属性可以由 jsp 文件的作者任意指定,只要与其他 taglib 指令的 prefix 属性值不同就可以。

<%@page import="com.demo.tag.Customer"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="myself" uri="http://myself.com/myTag/core" %>  
<!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>show mytag</title>
</head>
<body> 
	<% 
		List<Customer> customers = new ArrayList<Customer>(); 
		customers.add(new Customer(1, "AAA"));
		customers.add(new Customer(2, "BBB"));
		customers.add(new Customer(3, "CCC"));
		customers.add(new Customer(4, "DDD"));
		customers.add(new Customer(5, "EEE")); 
		request.setAttribute("customers", customers); 
	%>   
	<myself:forEach items="$requestScope.customers " var="cust">
		--$pageScope.cust.id  -- $cust.name  <br>
	</myself:forEach> 
	<br><br> 
	<myself:choose>
		<myself:when test="$param.age > 30">中年...</myself:when>
		<myself:when test="$param.age > 20">青年...</myself:when>
		<myself:otherwise>少年...</myself:otherwise>
	</myself:choose>
</body>
</html>

  5)访问http://127.0.0.1:8080/demo/tag/test.jsp?age=30 

                                技术分享图片

 



servlet自定义标签

...jsp标记,当一个含有自定义标签的jsp页面被jsp引擎编译成servlet时,tag标签被转化成了对一个称为标签处理类的对象的操作。于是,当jsp页面被jsp引擎转化为servlet后,实际上tag标签被转化为了对tag处理类的操作。   &nbs... 查看详情

jsp自定义标签

 1.编写一个实现Tag接口的标签处理器类 1packagecn.itcast.web.tag;23importjava.io.IOException;45importjavax.servlet.http.HttpServletRequest;6importjavax.servlet.jsp.JspException;7importjavax.servlet.jsp.JspWr 查看详情

自定义标签案例

(1)、用自定义标签模仿完成if功能首先写一个标签处理类packagecom.gqx.a_tag;importjava.io.IOException;importjavax.servlet.jsp.JspException;importjavax.servlet.jsp.tagext.SimpleTagSupport;publicclassIfTagextendsSimpleTagSupport{ 查看详情

自定义标签

...更加方便,增加程序安全性。在javaeeapi中有一个接口javax.servlet.jsp.tagext.JspTag,它是所有的标签的根接口。在jsp2.0以后,定义了一个更加简单的javax.servlet.jsp.tagext.SimpleTag,这个接口就描述了如何自定义标签。标签的分类:传统标签... 查看详情

jsp自定义标签

...JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被称为taghandler的对象的操作,即当servlet执行时Webcontainer调用那些操作。JSP标签扩展可以让你创建新的标签并且可以直接插入到一个JSP页面。JSP2.0规范... 查看详情

jsp自定义标签获取标签体内容输出到页面展示《三》

1.BodyTag.javapackagecom.zy.tag;importjava.io.IOException;importjavax.servlet.jsp.JspException;importjavax.servlet.jsp.JspWriter;importjavax.servlet.jsp.PageContext;importjavax.servlet.jsp.tagext.JspF 查看详情

jsp自定义标签开放入门

...JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被称为taghandler的对象的操作,即当servlet执行时Webcontainer调用那些操作。  JSP标签扩展可以让你创建新的标签并且可以直接插入到一个JSP页面。JSP2.0... 查看详情

如何开发自定义标签

...jsp标记。当一个含有自定义标签的jsp页面被jsp引擎编译成servlet时,tag标签被转化成了对一个标签处理器类的对象的操作。标签库API:定义在javax.servlet.jsp.tagext中 二、实现SimpleTag接口的标签处理器类的生命周期1)setJspContext:... 查看详情

jsp自定义标签

...直接在maven里面引入依赖:<dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</arti 查看详情

jsp自定义标签开发入门

...般情况下开发jsp自定义标签需要引用以下两个包importjavax.servlet.jsp.*;importjavax.servlet.jsp.tagext.*;首先我们需要大致了解开发自定义标签所涉及到的接口与类的层次结构(其中SimpleTag接口与SimpleTagSupport类是JSP2.0中新引入的)。目标1:自... 查看详情

jsp的自定义标签

...①创建自定义标签的处理器类[1]标准要求:实现接口javax.servlet.jsp.tagext.SimpleTag[2] 查看详情

jsp2自定义标签开篇

...签。第一步骤:开发自定义标签类。标签类需要继承javax.servlet.jsp.SimpleTagSupport;如果标签类包含属性,每个属性都要有getter和setter方法;重写doTag()方法,这个方法负 查看详情

自定义标签异常错误汇总

1、未设置empty属性错误信息:严重:Servlet.service()forservlet[jsp]incontextwithpath[/web-exercise]threwexception[/paramTag.jsp(line:11,column:0)TheTLDfortheclasstaglibclass.QueryTagspecifiesaninvalidbody-content(JS 查看详情

一个简单的jsp自定义标签

...新出来:例子1:步骤:1.编写标签实现类:  继承javax.servlet.jsp.tagext.SimpleTagSupport;  重写doTag,实现在网页上输出;2.在web-inf目录或其子目录下,建立helloword.tld文件,即自定义标签的说明文件  注意:标签处理类必须放在... 查看详情

ssh框架学习笔记----jsp/servlet相关技术

开发自定义标签步骤:开发自定义处理类:继承javax.servlet.jsp.tagext.SimpleTagSupport类如果有属性,每个属性都必须实现getter,setter方法重写doTag方法建立TLD文件:文件放在WEB-INF目录下定义<uri>标签定义<tag>标签<tag><name>标... 查看详情

jsp自定义标签

...,便可引入页面使用了。下面截一段API与大家讨论:javax.servlet.jsp.tagextInterfaceJspTagAllKnownSubinterfaces:BodyTag,IterationTag,LoopTag,SimpleTag,Tag从上一段API内容中可以看出JspTag接口下又有BodyTag,IterationTag,LoopTag,SimpleTag,Tag几个子接口。然后以Si... 查看详情

第四周作业

....编写标签库的java类MyTags.javaimportjava.io.IOException;importjavax.servlet.jsp.JspException;import 查看详情

myeclipse自定义servlet模板

每次用MyEclipse默认的servlet的模板创建servlet的时候,里面会生成好多没有用的代码。因此,我们可以自定义servlet模板。步骤如下:找到com.genuitec.eclipse.wizards_11.5.0.me201310291746.jar文件,该文件在MyEclipse(本人安装的是MyEclipseProfessiona... 查看详情