J2EE-12 custom tag自定义标记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/L1558198727/article/details/83060112

初始化函数

setPageContext(PageContext pc)

int doStartTag(){

}

如果返回值是SKIP_BODY的时候就是
EVAL_PAGE:标签里面的内容正常执行,正常的返回值就是这个

一个例子

1.标记处理器:
import java.servlet.jsp.targext.*;
import java.util.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.jsp.*;
import javax.servlet.http.*;

public class IimeTag extends TagSupport{

	public int doStartTag()throws JspExpection{
		try{
			pageContext.getOut().
			print(new Date());

		}
		catch(Exception e){
			throw new JspExpection(e);
		}
		return Tag.EVAL_BODY_INCLUDE;
	}
}


2. 分配一个标记

.tld文件:
标记库描述符文件

<tag>
	<body-content>JSP</body-content>
	标记里面的内容是不是JSP,可为空,此时的标签内部如果有东西就报错
</tag>

标记库描述符文件

JSP指令的语法形式

<%@ taglib uri="/WEB-INF/a.tld" prefix="a" %>
<%@ taglib uri="/WEB-INF/b.tld" prefix="b" %>

<a:time>
</a:time>
<b:time>
</b:time>

用来区分相同名字的标签


JSP传递数据

jsp向标记处理器传递程序

jsp向标记处理器传递程序

public

<rtexprvalue>:对属性值进步进行解析 一般是true,即进行动态解析

eg <a:time place:"${place}">

标记处理器想JSP回传一个脚本变量

<% 
	int i = 5;
	Student s = new Student();

%>
<t:time/>
<%=d%>

d由time标记生成

TagExtraInfo


public VariableInfo{
变量信息:变量名称,变量类型
}

AT_BEGIN
标签的开始标记到JSP结束
AT_END
在标签的结束开始到JSP的最后
NESTED
标签内部使用,离开就不能使用


Eg:
在这里插入图片描述

在jsp转换为java代码的时候执行上面的代码

变量的赋值

在doStartTag中:
pageContext.setAttribute("d",new java.util.Date());


在JSP中使用

jsp中的变量应该由JSP程序员来指定


jsp页面中:
<t:time var = "d" type="java.util.Date"/>

在doStartTag()中

在这里插入图片描述

simpleTag

初始化
setJspContext()
setJspBody()

getJspContext()
getJspBody()

invoke()
执行代码片段,输出到out对象中 

作业:

simpleTag bodyTag intetationTag
API

猜你喜欢

转载自blog.csdn.net/L1558198727/article/details/83060112