标签学习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目录下,都能自动找到。

<?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> A tag library exercising SimpleTag handlers.</description>

<tlib-version>1.0</tlib-version>


<short-name>名字</short-name>

<uri>http://www.jiangjianli.com/Demo1</uri>

<tag>

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

<description>demo1</description>

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

<name></name>

//完整类名

<tag-class></tag-class>

//•empty:没有标签体

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

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

<body-content>scriptless</body-content>

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

<name></name>

<required>true</required>

//是否支持el表达式

<rtexprvalue>true</rtexprvalue>

</attribtue>

</tag>


在标签调用时传递了内容如<demo:demo1>abcdef</demo:demo1>将会调用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);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,583评论 18 399
  • 这部分主要是与Java Web和Web Service相关的面试题。 96、阐述Servlet和CGI的区别? 答...
    杂货铺老板阅读 1,498评论 0 10
  • 一. Java基础部分.................................................
    wy_sure阅读 3,988评论 0 11
  • 传统标签技术复杂 写一个类实现Tag接口 写一个tld文件,描述写好的类 在JSP页面引入tld文件,就可以在JS...
    newdolphintime阅读 418评论 0 1
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,925评论 1 114

友情链接更多精彩内容