- 浏览: 153451 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
fddjxllren:
session.find()是不支持动态绑定参数的.要使用it ...
Hibernate查询之list/iterator -
xiaofeiyang:
http://svn.apache.org/repos/asf ...
struts,hibernate,spring 版本控制svn的URL地址 -
peterxiemin:
emp在建立的时候,报无效的月份,为什么 ?
oracle的练习表---employee -
java_bigniu:
...
Hibernate查询之list/iterator -
lanhai921:
学习下,谢谢分享。
itext基本用法
掌握基本的标签定义后,可以发现定义标签时都需要继承TagSupport这个类,TagSupport类是整个标签编程的一个核心类,此类定义如下:
public class TagSupport extends Objet implements IterationTag,Serizlizable
它同时实现了IteratorTag和Serializable两个接口,IterationTag接口的定义如下:
public interface IterationTag extends Tag{ public static final int EVAL_BODY_AGAIN; public int doAfterBody() throws JspException; }
IterationTag本身又是Tag接口的子接口,Tag接口定义如下:
public interface Tag extends JspTag{ public static final int SKIP_BODY; public static final int EVAL_BODY_INCLUDE; public static final int SKIP_PAGE; public static final int EVAL_PAGE; public void setPageContext(PageContext pc); public void setParent(Tag t); public Tag getParent(); public int doStartTag() throws JspException; public int doEndTag() throws JspException; public void release(); }
TagSupport类中定义的常量及方法:
No | 常量及方法 | 类型 | 描述 |
1 | protected PageContext pageContext | 属性 | 表示pageContext对象,可以操作4种属性范围 |
2 | public static final int SKIP_BODY | 常量 | 忽略标签体内容,将操作转交给doEndTag() |
3 | public static final int EVAL_BODY_INCLUDE | 常量 | 正常执行标签体操作,但不处理任何运算 |
4 | public static final int SKIP_PAGE | 常量 | 所在在JSP上的操作走将停止,会将所有输出的内容立刻显示在浏览器上 |
5 | public static final int EVAL_PAGE | 常量 |
正常执行JSP页面 |
6 | public static final int EVAL_BODY_AGAIN | 常量 | 重复执行标签体内容,会再次调用doAfterBody(),直到出现SKIP_BODY为止 |
7 | public int doStartTag() throws JspException | 方法 | 处理标签开始部分 |
8 | public int doEndTag() throws JspException | 方法 | 处理标签结束部分 |
9 | public int doAfterBody() throws JspException | 方法 | 处理标签主体部分 |
10 | public viod release() | 方法 | 释放标签资源 |
doStartTag():此方法忽略标签开始时执行,返回值如下:
- SKIP_BODY:表示忽略标签体的内容,而将执行权转交给doEndTag()方法;
- EVAL_BODY_INCLUDE:表示执行标签体的内容;
doAfterBody():此方法是IterationTag接口于Tag接口的区别所在,用来重复执行标签体的内容,返回治如下:
- SKIP_BODY:表示标签体内容会被忽略,并且将执行权交给doEndTag()方法;
- EVAL_BODY_AGAIN:表示重复执行标签体的内容,会重复调用doAfterBody()方法,一直循环下去,直到doAfterBody()方法返回SKIP_BODY为止;
doEndTag():此方法在标签结束时执行,返回值如下:
- SKIP_PAGE:表示jsp页面立刻停止执行,并将所有的输出立刻回传到浏览器上;
- EVAL_PAGE:表示JSP可以正常地运行完毕;
release():将标签处理类所产生或是获得的资源全部释放,并等待用户下次继续使用;
实现一个有标签体的标签库:
演示一个包含方法体标签的开发,主要完成:判断在某一属性中是否存在指定的属性,如果存在,则进行输出。
AttributeTag:
package com.keith.tag; import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.TagSupport; public class AttributeTag extends TagSupport { //接受属性名称 private String name; //接受查找范围 private String scope; @Override public int doStartTag() throws JspException { Object value = null; //是否是page范围 if ("page".equals(this.scope)) { value = super.pageContext .getAttribute(name, PageContext.PAGE_SCOPE); } else if ("request".equals(this.scope)) { //是否是request范围 value = super.pageContext.getAttribute(name, PageContext.REQUEST_SCOPE); } else if ("session".equals(this.scope)) { //是否是session范围 value = super.pageContext.getAttribute(name, PageContext.SESSION_SCOPE); } else { //是否是application范围 value = super.pageContext.getAttribute(name, PageContext.APPLICATION_SCOPE); } //如果没有查到属性 if (value ==null) { //不执行标签体内容 return TagSupport.SKIP_BODY; }else{ //找到属性,执行标签题内容 return TagSupport.EVAL_BODY_INCLUDE; } } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getScope() { return scope; } public void setScope(String scope) { this.scope = scope; } }
attributetag.tld:
<?xml version="1.0" encoding="UTF-8"?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <!-- 标签库的版本 --> <tlib-version>1.0</tlib-version> <!-- 为标签苦在TLD中的描述名称 --> <short-name>attributetag</short-name> <tag> <!-- 表示标签在JSP中的使用名称 --> <name>present</name> <!-- 表示这个标签所这项的Class --> <tag-class>com.keith.tag.AttributeTag</tag-class> <!-- 标签体内容为空 --> <body-content>JSP</body-content> <attribute> <!-- format为属性名 --> <name>name</name> <!-- 表示此值必须设置 --> <required>true</required> <!-- 表示属性值是请求时表达式的结果 --> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <!-- format为属性名 --> <name>scope</name> <!-- 表示此值必须设置 --> <required>true</required> <!-- 表示属性值是请求时表达式的结果 --> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
web.xml:
<taglib> <taglib-uri>attribute</taglib-uri> <taglib-location>/WEB-INF/attributetag.tld</taglib-location> </taglib>
index.jsp:
<%@ taglib prefix="attributetag" uri="attribute"%> <body> <hr /> <% String scope = "session"; session.setAttribute("name","keith"); %> <attributetag:present name="name" scope="<%=scope %>"> <%=scope %>范围内存在:"${sessionScope.name }" </attributetag:present> </body>
发表评论
-
JSTL标签之XML标签库,函数标签库
2011-01-20 13:14 0在JSTL中可提供了用于XML解析的操作,这样可以减少 ... -
JSTL常用标签之大聚集---下
2011-01-20 10:17 1388JSTL国际化标签库: 其主要标签如下: NO ... -
JSTL常用标签之大聚集---中
2011-01-20 08:52 991<c:forEach>标签: 主要 ... -
JSTL常用标签之大聚集---上
2011-01-17 22:53 1095JSTL已经被继承到了javaEE ... -
jsp标签编程『续』---简单开发
2011-01-17 16:03 1387在jsp1.2之前如果想要对标签库进行开发,要么继承Ta ... -
jsp标签编程『下』---开发迭代标签
2011-01-17 10:48 1289开发一个迭代标签,此标签只可以对list进行迭代(学习)。 ... -
jsp标签编程『中』---定义有属性的标签
2011-01-17 09:13 999定义一个日期标签,则用户就必须指定格式化日期的格式; Dat ... -
jsp标签编程『上』---编写标签
2011-01-16 21:30 10691,什么是JSP标签库? JSP标签库(自定义标签 ... -
javaWeb之表达式语言---初始EL
2011-01-16 08:55 10011,何为表达式语言(Expression Language,E ... -
监听器实例之---在线人员统计
2011-01-15 17:30 0当用户成功登录后,会在列表中增加此用户名称,这样就可 ... -
jsp/servlet之监听器
2011-01-15 16:05 16091,什么是监听器? 其主要的功能就是监听Web ... -
jsp/servlet之过滤器
2011-01-15 14:03 10971,什么是过滤器(filter)? 它是以一种 ... -
MVC之实例操作---MVC设计模式应用
2011-01-15 09:18 3979MVC的第一个实例-----一个登陆: 首先我们需要一个VO ... -
javaWeb之MVC模式
2011-01-13 23:11 1404javaWeb引入了servlet概念 ... -
javaWeb之Servlet跳转
2011-01-13 22:53 1851servlet跳转分为:客户端跳转和服务器端跳转; 客户端 ... -
javaWeb之Servlet
2011-01-13 22:22 1508使用jsp可以完成动态的web开发,但是在开发时发现大量的代码 ... -
javaBean实例之注册验证
2011-01-13 14:29 3123首先定义Bean: package com.keith.be ... -
javaWeb之JavaBean
2011-01-13 13:47 12521,什么是JavaBean? ... -
jsp之阶段性总结
2011-01-13 08:53 8991,web安全性! 在web目录中必须存在一个&q ... -
jsp值application
2011-01-12 22:34 11291,什么是application? application对 ...
相关推荐
综上所述,JSP标签库编程是提升JSP应用开发效率的关键。通过创建简单的标签库,我们可以封装常用功能,使得代码更加模块化和易于维护。同时,理解和掌握标签库的原理和实践,对提升JSP开发技能至关重要。通过分析...
- 实现自定义标签处理类:继承`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.SimpleTagSupport`。 6. **JSP与数据库交互** - JDBC(Java Database Connectivity):连接数据库,执行SQL语句...
综上所述,JSP标签是构建动态网页的重要工具,它们简化了页面的编程模型,使得开发者可以更加专注于业务逻辑,而不是页面的呈现细节。了解和熟练掌握JSP标签的使用,对于提升Web应用开发效率和质量具有重要意义。
- **定义标签处理类**:编写Java类,继承`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.SimpleTagSupport`,根据标签是否有体来选择基类。 - **创建TLD文件**:定义标签的属性、行为和对应的...
下面我们将深入探讨自定义JSP标签的原理、创建过程及其应用。 一、JSP标签基础知识 JSP标签分为两种类型:标准动作标签(Standard Actions)和自定义标签(Custom Tags)。标准动作标签如`<jsp:include>`、`<jsp:...
自定义JSP标签是Java服务器页面(JSP)技术中的一种高级特性,它允许开发者创建自己的可重用组件,以增强网页的可维护性和代码复用性。在JSP中,自定义标签与HTML标签类似,但它们可以执行更复杂的业务逻辑,提供了...
`Tag` 和 `TagSupport` 用于自定义JSP标签,扩展JSP的功能。 3. **使用场景**: 这些API广泛应用于企业级Web开发,尤其是在使用Java EE(Enterprise Edition)平台时。例如,你可以使用Servlet来处理HTTP请求,执行...
9. **自定义标签**:开发者可以通过实现Tag接口或TagSupport类来自定义JSP标签,增强代码复用性和可维护性。 10. **AJAX与JSP**:随着AJAX的流行,JSP也常常与AJAX技术结合,实现异步更新页面部分,提升用户体验。 ...
3. 带标签体的标签:标签之间可以包含其他JSP标签、HTML或自定义标签的内容。 4. 可以被Scriptlet使用的标签:通过定义id和type属性,可以在标签后面的Scriptlet中引用。 在JSP技术中,自定义标签的处理类需要实现...
之后,我们就可以像使用内置JSP标签一样使用自定义标签: ```jsp ,green,blue" /> 同意条款" /> 男" /> ``` 五、自定义标签的优势 1. **封装复杂逻辑**:自定义标签可以封装复杂的业务逻辑或视图渲染,使JSP页面...
而标签处理器则是Java类,实现了JSP标签的实际逻辑。当JSP容器遇到自定义标签时,会根据TLD文件找到相应的标签处理器并执行其中的方法。 创建自定义标签的步骤通常如下: 1. **编写标签处理器类**:这个类需要继承...
**自定义JSP标签**是JavaServer Pages (JSP)技术中的一个重要组成部分,它允许开发者创建可重用的、自定义的行为组件,以提高代码的复用性和可维护性。在传统的JSP开发中,我们通常使用JSP内置动作标签(如`<jsp:...
- 开发者可以通过实现Tag接口或TagSupport类来自定义标签,封装复杂功能,提高代码复用性。 - TLD(Tag Library Descriptor)文件用于定义自定义标签的属性、事件和行为。 7. **MVC(Model-View-Controller)设计...
标签处理程序类通常需要实现或扩展`javax.servlet.jsp.tagext.TagSupport`、`javax.servlet.jsp.tagext.SimpleTagSupport`或`javax.servlet.jsp.tagext.Tag`等接口,这些接口提供了处理标签生命周期的方法,比如`...
TLD文件定义了标签的名称、属性、行为等元数据,而标签处理类则实现了这些行为,处理由JSP页面传递过来的参数和指令。 在描述中提到的"动态属性支持"是指,标签的属性不是静态固定的,而是可以在运行时根据需要动态...
3. **自定义标签**:通过实现Tag接口或TagSupport类,可以创建自定义标签库,增强代码复用性。 4. **JSP 2.0及以上版本的特性**:如页面指令的简化、隐式对象、JSP动作的改进等,提高了开发效率。 本教程"JSP高级...
- 通常需要继承`javax.servlet.jsp.tagext.SimpleTagSupport`或`javax.servlet.jsp.tagext.TagSupport`类。 7. **JSP是如何被执行的?执行效率比SERVLET低吗?** - JSP被编译成Servlet后执行,执行效率取决于多种...
总的来说,JSP高级编程涉及的内容不仅仅是编写简单的动态页面,还包括深入理解JSP的底层机制,掌握EL和JSTL的使用,学习自定义标签的开发,熟悉MVC设计模式,以及如何在Java EE框架下利用JSP与其他组件协同工作。...
1. **创建自定义标签**: 编写一个Java类作为自定义标签的实现,这个类需要继承自`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.SimpleTagSupport`,并覆盖其中的方法来处理分页逻辑。...
在编写自定义标签时,我们需要创建一个Java类来处理标签逻辑,这个类通常会继承自`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.SimpleTagSupport`。例如,我们可以创建一个名为`MyCustomTag`...