标签学习01

1、标签的作用

自定义标签是属于JSP规范的。

开发原则:JSP中不要使用<%%>(标签替换)和<%=%>(EL表达式)

自定义标签的作用:替换掉JSP中的JSP脚本(<%%>),实现一些简单的逻辑运算。

2、标签的开发步骤

a、编写一个类,实现一个接口javax.servlet.jsp.tagext.SimpleTag.或者继承javax.servlet.jsp.tagext.SimpleTagSupport。

import java.io.IOException;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.PageContext;

import javax.servlet.jsp.tagext.SimpleTagSupport;

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Date;

//继承  SimpleTagSupport

public class GetCurrentTime extends SimpleTagSupport {

@Override

//实现  dotag方法

public void doTag() throws JspException, IOException {

// TODO Auto-generated method stub

super.doTag();

Date now = new Date();

DateFormat formate = new SimpleDateFormat();

String str = formate.format(now);

//获取content

PageContext content  = (PageContext)getJspContext();

//输出

content.getOut().write(str);

}

}

b、在WEB-INF目录下,建立一个扩展名为tld(Tag Libary

Definition)的xml文件。

注:tld如果在WEB-INF或者在jar包的META-INF目录下,都能自动找到。

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">

A tag library exercising SimpleTag handlers.

1.0


名字

http://www.jiangjianli.com/Demo1

//description否用于指定属性的描述信息。

demo1

//name 必须有  用于指定属性的名称。属性名称是大小写敏感的,并且不能以jsp、_jsp、java和sun开头。

//完整类名

//•empty:没有标签体

//scriptless:标签体可以包含el表达式和JSP动作元素,但不能包含JSP的脚本元素  <前缀名:tagname>                这种方式调用

//如果是empty 在JSP可<前缀名:tagname/>调用

scriptless

//标签中有参数是需配置参数名

true

//是否支持el表达式

true


在标签调用时传递了内容如abcdef将会调用setJspBody方法

/*. 若存在标签体, JSP 引擎将把标签体封装成一个 JspFragment

对象,调用setJspBody方法将JspFragment对象传递给标

签处理器对象。若标签体为空,这setJspBody将不会被

JSP引擎调用

*/

可以通过在dotag方法中通过下面代码获取到内容

StringWriter sw = new StringWriter();

//将内容写到SW中

getJspBody().invoke(sw);

//转换为字符串

String str = sw.getBuffer().toString();

//输出到浏览器

PageContext page = (PageContext)getJspContext();

page.getOut().write(str);

你可能感兴趣的:(标签学习01)