JSP中自定义标记库的使用(二)
来源:互联网 发布:北大软件工程硕士学费 编辑:程序博客网 时间:2024/05/16 11:10
下面两个方法只有在继承BodyTagSupport类的时候才需要重载4)doInitBody()
在调用doStartTag()之后,处理标记体之前被调用
5)doAfterBody()
在处理完标记体后,调用doEndTag()之前调用。
该方法的返回值代表对标记体的处理方式:
IterationTag.EVAL_BODY_AGAIN : 需要再次处理标记体
Tag.SKIP_BODY: 结束对标记体的处理
4.带属性的标记-从页面向自定义标记传递信息
1)页面
<demo:hello name="username" />
属性值也可以是表达式,如 :<demo:hello name="<%=request.getParameter("username")%>" />
2)标签处理类
必须提供get,set方法对属性进行操作
每个属性的set方法会在doStartTag()之前自动被调用
3)TLD文件中必须对所有的属性进行定义
代码
<tag>
...
<attribute>
<name>属性名</name>
<required>true表示属性必须存在,false表示可由可无</required>
<rtexprvalue>定义属性是否允许使用表达式,为false表示只允许使用字符串</rtexprvalue>
</attribute>
一、概要:
1、JSP标签技术始于JSP1.1
2、作用:代码复用;JSP页面简洁
3、四个步骤:
A、创建实现标签功能的JAVA类(Bean或Servlet)
B、创建标签库的描述文件
C、web.xml中添加标签库说明
D、JSP页面中添加标签库说明,及使用标签
4、标签可以访问的数据范围类型:application;session;request;page.
------------------------[主要是为了说明什么时候用JavaBean或TagLib]
二、TagLib常用知识点
1、JSP Tag API----标签处理类必须是此API[只两种,且任一种即可]的子类
-----javax.servlet.jsp.TagSupport
-----javax.servlet.jsp.BodyTagSupport
2、TagSupport的主要方法[8种]及重要属性[2个]
1)主要方法:
与Servlet容器处理TAG开关相关的方法:
A、doStartTag()---Servlet容器遇到自定义标签的起始标志时调用该方法
B、doEndTag()----Servlet容器遇到自定义标签的结束结志时调用该方法
与标签处理类中值相关的方法:
C、setValue(String k,Object o)---在标签处理类中设置key/value
D、getValue(String k)--------------在标签处理类中根据参数key返回相应的value
E、removeValue(String k)---------删除标签处理类中的相应的key/value
与Servlet容器相关,设置页面上下文相关的方法:
F、setPageContext(PageContext pc)--设置PageContext对象,该方法由Servlet容器
在调用doStartTag或doEndTag方法前调用
与标签嵌套相关的方法:
G、setParent(Tag t)----------------设置嵌套了当前标签的上层标签的处理类,该方法由
Servlet容器在调用doStartTag或doEndTag方法前调用
H、getParent()---------------------- 返回嵌套了当前标签的上层标签的处理类
2)重要属性:
A、parent---代表了嵌套了当前标签的上层标签的处理类
B、pageContext----代表了Web应用中的javax.servlet.jsp.PageContext对象
两点说明: C、Servlet容器在调用doStartTag()或doEndTag()方法前,会先调用
setPageContext()和setParent()方法,调置pageContext和parent.
D、在doStartTag()或doEndTag()方法中可以通过getParent()方法获取上层标签的处理类;
在TagSupport类中定义了protected类型的pageContext成员变量,因此在标签处理类
中可以直接访问pageContext变量。
3、pageContext类的几点说明:
A、pageContext类提供了保存及访问WEB应用共享数据的方法:
---public void setAttribute(String name,Object value,int scope)
---public Object getAttribute(String name,int scope)
B、scope---用来指定数据的作用范围。可选值如下:
PageContext.PAGE_SCOPE
PageContext.REQUEST_SCOPE
PageContext. SESSION_SCOPE
PageContext.APPLICATION_SCOPE
如:setAttribute("userName","dxm",PageContext.SESSION_SCOPE);
二、TagLib常用知识点
4、javax.servlet.jsp.TagSupport的两个基础方法的重申:
---public int doStartTag() throws JspException
---public int doEndTag() throws JspException
1)doStartTag()方法:
A、当servlet容器遇到自定义标签的起始标志,就会调用doStartTag()方法。
B、doStartTag()方法会返回一个整数值,用来决定程序的后续流程。它有两个可选值:
代码
----Tag.SKIP_BODY
表示忽略掉标签之间的内容
代码
----Tag.EVAL_BODY_INCLUDE
表示标签之间的肉容要正常执行
如:
... ...
Dxm,Hello!
... ...
若的doStartTag()方法返回Tag.SKIP_BODY,“Dxm,Hello!”字样即不会出现在页
面;若返回Tag.EVAL_BODY_INCLUDE,则页面上显示出"Dxm,Hello!"字样。 2)doEndTag()方法:
A、当servlet容器遇到自定义标签的结束标志,就会自动调用doEndTag()方法
B、doEndTag()方法也会返回一个整数值,用来决定程序的后续流程。它也有两个可选值:
---Tag.SKIP_PAGE
表示立刻停止执行JSP网页,网页上未处理的静态内容和JSP程序均被忽略,任何已有的输出
内容立刻返回到客户的浏览器上。
---Tag.EVAL_PAGE
表示按正常的流程继续执行JSP网页。
5、用户自定义标签属性:
A、标签中可以包含自定义的属性,如:
... ...
B、但标签处理类中应将这个属性做为成员变量来使用,并给出赋值及取值的方法。如:
代码
private String username;
public setUsername(String value){
this.username=value;
}
public String getUsername(){
return username;
}
- JSP中自定义标记库的使用(二)
- JSP中自定义标记库的使用(一)
- JSP中自定义标记库的使用(三)
- JSP中自定义标记符的使用
- JSP中自定义标记符的使用
- 使用自定义 WebLogic JSP 标记
- J2EE 探索者: 用五个容易的步骤实现 JSP 自定义标记 ---在 JSP 页面中使用自定义标记的实用介绍
- JSP 自定义标记符库
- 最简单的自定义JSP标记库(TagLib)配置
- Eclipse中使用JSP标记时的问题解决!
- Base-Jsp-18-自定义标记库
- jsp自定义标记入门
- JSP自定义标记
- JSP定制标记——在JSP标记中自定义脚本编程变量
- JSP中如何使用自定义的标签库
- jsp中Tag的使用(自定义标签)
- jsp中自定义标签的使用
- 门户网站 JSP 使用的标记
- 使用msxml遍历重复的node问题
- windbg的中文帮助文档
- 一种Mobile UI及应用系统的构架与设计
- ExtJs自学教程(2):从DOM看EXTJS
- ucosII学习笔记
- JSP中自定义标记库的使用(二)
- 政协第十一届全国委员会二次会议日程公布
- Java语言 -- 多态
- [MFC]CEdit获取一行的文字
- Linux select()详解(转载)
- JSP中自定义标记库的使用(一)
- web安全测试杂谈
- 借助 windbg 调试 句柄泄漏
- JSP中自定义标记库的使用(三)