简单标签
由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单、便于编写和调用的SimpleTag接口来实现标签的功能。实现SimpleTag接口的标签通常称为简单标签。简单标签共定义了5个方法:
setJspContext方法
setParent和getParent方法
setJspBody方法
doTag方法
SimpleTag方法介绍
setJspContext方法
用于把JSP页面的pageContext对象传递给标签处理器对象
setParent方法
用于把父标签处理器对象传递给当前标签处理器对象
getParent方法
用于获得当前标签的父标签处理器对象
setJspBody方法
用于把代表标签体的JspFragment对象传递给标签处理器对象
doTag方法
用于完成所有的标签逻辑,包括输出、迭代、修改标签体内容等。在doTag方法中可以抛出javax.servlet.jsp.SkipPageException异常,用于通知WEB容器不再执行JSP页面中位于结束标记后面的内容,这等效于在传统标签的doEndTag方法中返回Tag.SKIP_PAGE常量的情况。
SimpleTag接口方法的执行顺序
当web容器开始执行标签时,会调用如下方法完成标签的初始化
WEB容器调用标签处理器对象的setJspContext方法,将代表JSP页面的pageContext对象传递给标签处理器对象。
WEB容器调用标签处理器对象的setParent方法,将父标签处理器对象传递给这个标签处理器对象。注意,只有在标签存在父标签的情况下,WEB容器才会调用这个方法。
如果调用标签时设置了属性,容器将调用每个属性对应的setter方法把属性值传递给标签处理器对象。如果标签的属性值是EL表达式或脚本表达式,则WEB容器首先计算表达式的值,然后把值传递给标签处理器对象。
如果简单标签有标签体,容器将调用setJspBody方法把代表标签体的JspFragment对象传递进来。
执行标签时:
容器调用标签处理器的doTag()方法,开发人员在方法体内通过操作JspFragment对象,就可以实现是否执行、迭代、修改标签体的目的。
JspFragment类
javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段,这段JSP片段中不能包含JSP脚本元素。
WEB容器在处理简单标签的标签体时,会把标签体内容用一个JspFragment对象表示,并调用标签处理器对象的setJspBody方法把JspFragment对象传递给标签处理器对象。JspFragment类中只定义了两个方法,如下所示:
getJspContext方法
用于返回代表调用页面的JspContext对象.
public abstract void invoke(java.io.Writerout)
用于执行JspFragment对象所代表的JSP代码片段
参数out用于指定将JspFragment对象的执行结果写入到哪个输出流对象中,如果传递给参数out的值为null,则将执行结果写入到JspContext.getOut()方法返回的输出流对象中。(简而言之,可以理解为写给浏览器)
invoke方法详解
JspFragment.invoke方法是JspFragment最重要的方法,利用这个方法可以控制是否执行和输出标签体的内容、是否迭代执行标签体的内容或对标签体的执行结果进行修改后再输出。例如:
在标签处理器中如果没有调用JspFragment.invoke方法,其结果就相当于忽略标签体内容;
在标签处理器中重复调用JspFragment.invoke方法,则标签体内容将会被重复执行;
若想在标签处理器中修改标签体内容,只需在调用invoke方法时指定一个可取出结果数据的输出流对象(例如StringWriter),让标签体的执行结果输出到该输出流对象中,然后从该输出流对象中取出数据进行修改后再输出到目标设备,即可达到修改标签体的目的。
开发带属性的标签
自定义标签可以定义一个或多个属性,这样,在JSP页面中应用自定义标签时就可以设置这些属性的值,通过这些属性为标签处理器传递参数信息,从而提高标签的灵活性和复用性。
要想让一个自定义标签具有属性,通常需要完成两个任务:
在标签处理器中编写每个属性对应的setter方法
在TLD文件中描术标签的属性
为自定义标签定义属性时,每个属性都必须按照JavaBean的属性命名方式,在标签处理器中定义属性名对应的setter方法,用来接收JSP页面调用自定义标签时传递进来的属性值。 例如属性url,在标签处理器类中就要定义相应的setUrl(String url)方法。
在标签处理器中定义相应的set方法后,JSP引擎在解析执行开始标签前,也就是调用doStartTag方法前,会调用set属性方法,为标签设置属性。
在TLD中描述标签属性 attribute
<tag>元素的<attribute>子元素用于描述自定义
标签的一个属性,自定义标签所具有的每个属性
都要对应一个<attribute>元素 。
<attribute>
<description>description</description>
<name>aaaa</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>ObjectType</type>
</attribute>
打包自定义标签库
把自定义的标签打到一个jar包中,就是要把标签处理类的字节码和标签库描述文件按照一定的存放方式添加到一个jar包中。具体做法如下。
把标签处理类字节码和标签库描述文件按如下所示的结构组织。
使用jar命令来创建jar文件: jar cvf mytaglib_0.9.jar META-INF com
完成这两个步骤之后,一个自定义标签库jar包就打好了,可以把它添加到任何想使用这个标签库的Web应用程序的WEB-INF/lib目录下使用了。
分享到:
相关推荐
【JSP课程设计 大学课程】是一个针对学习者精心设计的教学项目,旨在帮助学生深入理解和掌握JavaServer Pages(JSP)技术。JSP是一种基于Java的动态网页开发技术,它允许开发者在HTML代码中嵌入Java代码,实现服务器...
在进行JSP课程设计时,通常会涉及以下几个核心知识点: 1. **JSP基本结构**:一个JSP文件本质上是HTML页面,但可以在其中嵌入Java代码。主要元素包括指令(directives)、脚本元素(scriptlets)、表达式...
在进行JSP课程设计时,不仅需要掌握理论知识,还需要实际动手操作,通过编写简单的网页、实现动态功能、连接数据库、处理用户请求等方式,提升对JSP的理解和应用能力。同时,团队协作和项目管理也是课程设计中不可...
学生成绩管理系统JSP课程设计 可实现学生和老师两个端的登录;学生个人信息修改、密码修改、个人成绩查询;教师个人信息修改、密码修改、成绩录入与修改、任课管理、学生管理......等功能 运用技术: 1、前端:...
新闻管理系统是基于JSP(JavaServer Pages)技术的课程设计项目,主要目的是让学生掌握Web开发的基本技能,了解如何使用JSP来实现动态网页并处理服务器端的数据。在这个项目中,通常会涉及到以下几个核心知识点: 1...
**JSP课程设计计划书** JSP(JavaServer Pages)是一种动态网页开发技术,由Sun Microsystems公司推出,现已成为Oracle公司的产品。它允许开发者在HTML或XML文档中嵌入Java代码,实现服务器端的动态网页生成。JSP...
- XML语法:XML文档由元素、属性、文本节点等组成,遵循严格的规则,如元素必须有关闭标签,属性值需加引号等。 - XML文档结构:XML文档通常包含声明(`<?xml version="1.0" encoding="UTF-8"?>`)、根元素以及...
【JSP简单数据库课程设计】是一门实践性强的IT课程,旨在帮助学习者掌握如何使用Java Server Pages(JSP)技术与数据库进行交互,实现Web应用程序的数据存储和检索功能。在这一课程设计中,我们将深入探讨以下几个...
**JSP(Java Server Pages)课程设计详解** 在软件工程的学习过程中,JSP技术常常被用于Web应用程序的开发,尤其是在进行课程设计时。本项目,名为"jsp-project.zip",是一个基于JSP的简单管理系统,虽然没有采用...
学生可能会学习如何创建一个简单的JSP页面,如何使用内置对象(如request、response、session等),以及如何在JSP中输出数据。 **第六章:JSP表达式与脚本片段** 这一章可能深入讲解了JSP中的表达式(`<%= %>`)和...
【标题】"jsp课程设计学生信息管理系统"是一个基于Java服务器页面(JSP)技术的项目,旨在教授学生如何构建一个管理学生信息的应用程序。在这个设计中,开发者利用JSP技术来创建动态网页,同时结合了JavaBean组件和...
以下是一个可能的JSP课程目录,旨在帮助初学者系统地学习JSP开发: ### 第一部分:JSP基础 1. **JSP概述** - JSP的概念和历史 - JSP与Servlet的关系 - JSP的优势和应用领域 2. **JSP环境搭建** - 安装Java ...
本课程的"JSP课程ppt(全)"包含了完整的JSP学习资料,帮助我们深入理解和掌握这一强大的技术。 1. **JSP基本概念** - JSP是一种服务器端的脚本语言,由Sun Microsystems公司推出,用于构建和运行跨平台的Web应用...
【JSP(Java Server Pages)课程设计简洁版】是一个针对初学者或中级开发者设计的管理系统的实例,旨在提供一个基础的、易于理解的平台来学习和实践JSP技术。这个项目可能包含了创建动态网页、数据处理和用户交互的...
【JavaWeb课程设计-购物商城】是一个典型的JavaWeb项目,主要使用了jsp和servlet技术来构建一个在线购物平台。这个项目对初学者而言是一个很好的实践机会,它涵盖了Web开发中的许多基础概念和技术,同时也提供了实际...
3. **JSP动作标签**:例如`<jsp:include>`、`<jsp:forward>`和`<jsp:useBean>`,它们简化了页面组合和对象管理。 在与SQL连接方面,课程将涵盖: 1. **数据库连接**:使用JDBC(Java Database Connectivity)API...
在这个“jsp课程设计源代码”压缩包中,我们可能找到了一系列JSP项目实例,这些实例可以帮助学习者深入理解JSP的工作原理及其在实际项目中的应用。以下是一些可能包含在这些源代码中的关键知识点: 1. **JSP基本...
本项目“jsp课程设计 投票系统”就是一个基于JSP的实际应用示例,它旨在教授学生如何利用JSP来构建一个实用的交互式应用程序。 投票系统是常见的Web应用程序,用于收集用户的意见或偏好。在这个项目中,用户可以...
javaweb课程设计基础知识+教程+课件,涵盖: 适合人群:大学生、毕业生、各在职人员需要系统补充基础的人员 ---JSTL_Core.ppt ---_MySQL安装图解.doc ---_Servlet过滤器.ppt ...--- 标签与简单标签ppt
JSP中的脚本元素(scriptlets)、表达式和指令标签等元素可以实现与JavaBean的交互。 4. **JavaBean**: JavaBean是符合特定规范的Java类,常用于封装数据和业务逻辑。在本系统中,JavaBean作为Model层的实体类,...