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

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页面上的标签中,使用属性

注意:属性名必须与类中的变量同名。

练习demo:http://download.csdn.net/detail/a757956132/8923365

时间: 2024-09-29 02:42:33

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

eclipse环境Dynamic web module version 3.1版本的进步,简化Dynamic web object 中Servlet类的配置,不用web.xml配置&lt;Servlet&gt;

eclipse环境Dynamic web module version 3.1版本之前,Dynamic web object 中Servlet类的配置,要在web.xml 配置<Servlet>图片和代码如下: web.xml中源代码如下: <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins

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

一.web.xml配置 <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-val

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

Eclipse 通过 Maven 建立 SSM 框架项目(web项目)时,默认的web.xml文件版本为 2.3,jre版本为 1.5:在修改其版本遇到了各种问题 例如: web.xml is missing and <failOnMissingWebXml> is set to true JavaServer Faces 2.2 can not be installed : One or more constraints have not been satisfied. JavaServer

JavaEE SSH框架整合(一) jar包导入 web.xml配置

最近买了一个阿里的云服务器.服务端是linux命令行环境,tomcat.mysql啥的都整好了. 就想自己写个web后台,制造一些网络数据啥的,给我的移动app-demo访问玩. 虽然以前学过web相关内容,但已经离开它三年多了,忘光光了. 特在此记录下学习.开发的一些流程,遇到的一些问题,和一些解决的方法. 1. 去struts官网下载了最新的完整zip.struts2.3.20 2. 在网络上下载了spring-framework3.2.8的完整zip.(官方最新4.x需要jdk1.8,我本

自定义分页标签步骤

1.引架包 <!--javaee,处理自定义标签--> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> 2.在WEB-INF中创建.tld.文件,加入需引用

SSH自定义分页标签

本文参考文章:http://blog.csdn.net/qjyong/article/details/3240303 一.标签处理类: package cn.conris.sys.form; import java.io.IOException; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import java

JSP自定义业务标签

自定义标签: package cn.hv.tag; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.BodyContent; import javax.servlet.jsp.tagext.BodyTagSupport; public class BodyTag extends BodyTagSupport { private St

web.xml中taglib标签报错问题解决方案

<taglib>标签在web.xml文件中报错解决方法 配置web.xml文件时,taglib标签报错,但不会影响程序的运行,web.xml 如下: < xml version="1.0" encoding="UTF-8" > <web-app id="WebApp_ID" version="2.4" xmlns="" xmlns:xsi="" xsi:sc

Tomcat之web.xml中的&lt;url-pattern&gt;标签

关于web.xml配置中的<url-pattern> 标签<url-pattern> <url-pattern>是我们用Servlet做Web项目时需要经常配置的标签,例: <servlet> <servlet-name>index</servlet-name> <servlet-class>com.we.servlet.IndexServlet</servlet-class> </servlet>

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 所涉及的web.xml配置中,针对web-app上的XML模式配置,可以参考以下网址进行查阅: http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html 提示:在查阅的过程中,要注意发布的版本,比如选择时应为F