1、标签
类似于html标签的方式实现的java代码的封装
第一:形成了开发标签的技术标准---自定义标签的技术标准
第二:java标准标签库(sun之前自己开发的一系列的标签的集合)jstl,以及表达式语言EL。
 
2、自定义标签
(1)理解:
可以允许用户自己根据自己的需要,去开发自己的标签的技术规范。
通俗:在Jsp页面上,以简单的标签封装java代码的操作。
//在自定义标签类中,先调用setPageContext()实例化内置对象:

//然后是doStartTag()方法,核心代码放在这个方法里面:

 //定义变量,变量的Get、Set方法:
 private String UserName = "";
//tld配置文件放置在WEB-INF目录下,主要的标记如下,主要的配置如下:
//前面tlib-version版本号、Jsp-version JSP的版本号、short-name 命名空间、是必须有的
//uri,注意是uri而不是url,url是访问的路径。
//而uri为访问时候的别名,写在JSP页面上的标签的别名。
//name为此标签类的别名,tag-class 为标签类的存放的物理路径 
//body-content 为是否有标签体,如果是/子关闭标签设置为EMPTY
//如果涉及到标签属性,可以设置attribute,其中name为属性的名称,而不是别名,required 属性是否必须设置,rtexprvalue 是否程序运行时候为属性赋值。

//如果在tld文件中不设置uri,则在web-xml中必须对talib-uri进行设置。

//在JSP页面中,用taglib指令导入自定义标签。

//JSP页面上的使用,前面my为tld文件中为标签类定义的命名空间、hello为tld文件中指定标签类的别名:

(2)技术组成
A:标签处理类:实现所有信息显示功能的Java类
B:标签配置文件(标签描述文件、库文件):是一个遵守xml规范的tld文件(扩展名为TLD)
C:配置web.xml:告诉web应用,需要引用其他的标签信息
D:jsp页面上,调用标签
 
3、标签的特点
(1)分类
A:成对出现的标签
B:自关闭的标签
(2)特点
A:标签必须正确的关闭
B:标签不能出现重名
C:标签可以有标签体也可以没有
D:标签可以有属性,但是一个标签不能出现同名属性
 
最简单的标签:没有标签体也没有属性的标签
 
4、自定义标签的开发流程(上面的插图
A:明确要实现的功能:要在页面显示具体什么内容
B:开发标签处理类
C:创建以及配置标签描述文件:TLD文件
D:配置web.xml
E:jsp页面调用标签
 
5、开发标签处理类
(1)父类
一个接口两个类
接口:Tag接口javax.servlet.jsp.tagext.Tag
类:
自关闭:TagSupport 
成对出现:BodyTagSupport
(2)开发标签类
集成自指定的类,重写setPageContext(),doStartTag(),doEndTag()
重点:标签开始操作doStartTag()方法★
 
6、创建标签配置文件(TLD文件)
(1)作用
是用来统一管理多个标签处理类的xml文件。
(2)创建
具有自己的格式和规范的(和XML文件一样)
推荐WEN-INF目录下,创建自己的tld文件。
(3)文件格式
A:根元素:taglib
B:taglib的四个起始子元素
<tlib-version>标签库的技术标准的版本1.0</tlib-version>
<jsp-version>支持的jsp的技术标准版本1.2</jsp-version>
<short-name>标签库文件的命名空间:缩写</short-name>
<uri>当前标签库文件的唯一标记的符号(别名)</uri>
 
 
命名空间用来区分当前标签是属于哪个标签库的名称简写。<jsp:useBean>
 
说明:uri子元素是可有可无的,但是会对后期的调用产生影响。
 
C:tag子元素
每个标签处理类都必须在tld文件中进行配置。每个标签类都对应一个tag元素,描述自己的配置信息。
<tag>
     <name>标签处理类的别名</name>
     <tag-class>标签类的物理地址</tag-class>
     <body-content>是否有标签体</body-content>
</tag>
 
body-content:值默认的是jsp。如果是自关闭标签,需要制定成empty。
如果标签有属性,还有attribute子元素。
 
7、配置web.xml
(1)作用
在web.xml中进行标签配置文件的设置,告诉web应用程序,需要调用的自定义标签在哪里
(2)前提
在标签配置文件中,如果没有进行<uri>的配置,则必须进行web.xml的配置。如果已经配置了uri元素的值,就不需要进行web.xml的配置,可以直接在jsp上调用。uri表现在JSP页面引入标签时候,需为taglib指令指定uri,注意和TLD文件中的标签类的别名name区分,那个是在JSP页面中调用标签时候命名空间后面写入
(3)配置(如上图在WEB.XML中的配置)
所有的标签配置文件的配置,都必须在<jsp-config>元素中。每个配置文件有自己<taglib>元素。
<taglib>
<taglib-location>标签配置文件的物理地址</taglib-location>
<taglib-uri>标签配置文件的调用别名</taglib-uri>
</taglib>
 
8、jsp调用标签
(1)引入标签库
利用taglib指令实现引入
<%@ taglib uri="标签库的别名" prefix="标签库的前缀(命名空间)"%>
uri:如果tld文件中已经配置了uri,必须与tld的uri一致。如果tld中没有配置,必须与web.xml中的taglib-uri一致。
prefix:前缀,如果在tld文件中设置了short-name,则必须与short-name保持一致。
 
(2)调用标签
<前缀:标签类的别名>
 
(3)标签处理类的生命周期
A:加载
根据标签类的别名,定位标签处理类,加载到容器上
B:实例化
根据默认无参构造函数,进行实例化
C:设置上下文
设置页面上下文,获得内置对象
D:设置父标签
E:执行标签开始的操作
F:执行标签结束的操作
G:资源释放
 
9、jsp和标签处理类的信息交互方式
两种:
A:借助session属性,由jsp向标签处理类传递值
B:借助于标签的属性,实现传值。
 
10、属性
(1)理解
用来附加说明标签基本信息的名称与值的集合。
(2)分类
必须有的属性
可有可无的属性
(3)特点
A:是名称与值的集合
B:如果有属性,属性必有值
C:属性的值必须用引括起来
D:一个标签不允许有同名属性
(4)设置
A:在标签处理类中,创建代表属性的变量以及对应的set/get方法(见上图)。
在标签处理类中,属性是以变量的方式存在的。
B:在标签开始动作中,直接使用变量
C:在标签配置文件上,在相应的tag中,添加属性配置。
每个属性都有自己的<attribute>标签
<attribute>
  <name>属性的名称(与类中变量同名)</name>
  <required>属性是否是必须的(true/false)</required>
  <rtexprvalue>属性的值是否通过运行时加以赋值(程序动态赋值)</rtexprvalue>
</attribute>
D:jsp页面上的标签中,使用属性
注意:属性名必须与类中的变量同名。
 
 

JavaEE自定义标签:标签类的创建、tld配置文件的创建(位置、如何创建)、Web-XML配置、JSP应用的更多相关文章

  1. eclipse环境Dynamic web module version 3.1版本的进步,简化Dynamic web object 中Servlet类的配置,不用web.xml配置<Servlet>

    eclipse环境Dynamic web module version 3.1版本之前,Dynamic web object 中Servlet类的配置,要在web.xml 配置<Servlet& ...

  2. struts2拦截器-自定义拦截器,放行某些方法(web.xml配置)

    一.web.xml配置 <filter> <filter-name>encodingFilter</filter-name> <filter-class> ...

  3. Eclipse创建Maven-Web项目及解决 jre版本和web.xml版本问题

    eclipse maven-web有个蛋疼的问题,就是web版本很低. 且看别人是如何解决的:Eclipse创建Maven-Web项目及解决 jre版本和web.xml版本问题

  4. 创建新的servlet一定要记得修改web..xml文件!!!

    创建新的servlet一定要记得修改web..xml文件!!!

  5. JSP自定义业务标签

    自定义标签: package cn.hv.tag; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; ...

  6. java web 学习笔记 - JSP标签编程

    1.JSP标签编程简介 标签编程在开发中并不常见,主要是为了更好的理解struts等框架的标签而打基础,完善相关知识体系. 标签编程分为: 一个继承自TagSupport的标签类,一个在WEB-INF ...

  7. Tomcat之web.xml中的<url-pattern>标签

    关于web.xml配置中的<url-pattern> 标签<url-pattern> <url-pattern>是我们用Servlet做Web项目时需要经常配置的标 ...

  8. Java EE: XML Schemas for Java EE Deployment Descriptors(Java Web的web.xml头web-app标签上的XML模式)

    继上几篇文章 http://www.cnblogs.com/EasonJim/p/6221952.html http://www.cnblogs.com/EasonJim/p/6959120.html ...

  9. JavaEE web.xml 中ContextLoaderListener的解析

    ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息.因为它实现了ServletContextListener这个接口,在 ...

  10. eclipes创建一个web项目web.xml不能自动更新的原因(web.xml和@WebServlet的作用)

    在eclipse中创建一个Web项目的时候,虽然有web.xml生成,但是再添加Servlet类文件的时候总是看不见web.xml的更新,所以异常的郁闷!上网查了查,原来我们在创建Web项目的时候,会 ...

随机推荐

  1. redis的安装-windows和linux

    windows 下载地址:http://code.google.com/p/servicestack/wiki/RedisWindowsDownload 下载解压到D盘下: 进到该目录下,有下列文件: ...

  2. Swift lazy 修饰符和方法

    LAZY 修饰符和 LAZY 方法 由 王巍 (@ONEVCAT) 发布于 2015/10/07 延时加载或者说延时初始化是很常用的优化方法,在构建和生成新的对象的时候,内存分配会在运行时耗费不少时间 ...

  3. Linux Makefile analysis for plain usr

    一.本文主旨 笔者写了一篇linux内核Makefile整体分析 ,测重于理论分析,对于实际应用不算对头,所以需要写一篇实用性较强的文章,为以后内核.驱动移植做好铺垫. 二.本文内容概要 1.编译哪些 ...

  4. IEngineEditor与IWorkspaceEdit,以及相关的事件监听

    转自原文 IEngineEditor与IWorkspaceEdit,以及相关的事件监听 IEngineEditor适用于直接在图层上的编辑,例如使用"要素编辑"工具菜单上的&quo ...

  5. HTML DOM Select 对象

    Select 对象 Select 对象代表 HTML 表单中的一个下拉列表. 在 HTML 表单中,<select> 标签每出现一次,一个 Select 对象就会被创建. 您可通过遍历表单 ...

  6. POJ 2992 Divisors

    每个数都可以分解成素数的乘积: 写成指数形式:n=p1^e1*p2^e2*...*pn^en:(p都是素数) 那么n的因数的数量m=(e1+1)*(e2+1)*...*(en+1): 所以用筛选法筛出 ...

  7. VC下载文件 + 显示进度条

    在codeproject里找了许久,发现这样一个VC下载文件并显示进度条的源码,于是添加了些中文注释: 1.下载线程函数: UINT DownloadFile(LPVOID pParam) { CWn ...

  8. PEP Index > PEP 339 -- Design of the CPython Compiler 译文

    http://www.python.org/dev/peps/pep-0339/ PEP: 339 标题: CPython的编译器设计 版本: 425fc5598ee8 最后修改: 2011-01-1 ...

  9. Specify a culture in string conversion explicitly

    Specify a culture in string conversion explicitly There are different methods of grouping symbols, l ...

  10. WCF 托管在IIS中遇到Http的错误

    IIS8中部署WCF服务出错:HTTP 错误 404.3 - Not Found http://www.cnblogs.com/xwgli/archive/2013/03/15/2961022.htm ...