2_Jsp标签_传统标签功能简介
1传统标签接口关系:

2功能简介

3代码测试
1.标签体内容控制 StartTag
package com.tag; import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport; public class EvalBodyTag extends TagSupport {
private boolean show;
public void setShow(boolean show){
this.show = show; }
public int doStartTag() throws JspException {
// TODO Auto-generated method stub
if(show==true)
return super.EVAL_BODY_INCLUDE;
else
return super.SKIP_BODY;
} }
EvalBodyTag
2.标签结束后的处理 EndTag
package com.tag; import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport; public class ShowPageTag extends TagSupport {
private boolean show;
public void setShow(boolean show){
this.show = show;
}
@Override public int doEndTag() throws JspException {
System.out.println(show);
if(show==true)
return super.EVAL_PAGE;
else
return super.SKIP_PAGE;
}
@Override
public int doStartTag() throws JspException {
return super.EVAL_BODY_INCLUDE;
} }
ShowPageTag
3. 标签内容处理完后--doAfterBody
package com.tag; import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.IterationTag;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport; public class RepeatTag extends TagSupport{ private int count;
public void setCount(int count){
this.count = count;
}
public int doAfterBody() throws JspException {
count--;
if(count>0)
return RepeatTag.EVAL_BODY_AGAIN;
else
return RepeatTag.SKIP_BODY;
} public int doStartTag() throws JspException {
return Tag.EVAL_BODY_INCLUDE;
} }
RepeatTag
4. 内容格式化
package com.tag; import java.io.IOException; import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport; public class BodyContentTag extends BodyTagSupport { @Override
public int doEndTag() throws JspException {
BodyContent body = this.getBodyContent();
String bc = body.getString();
bc = bc.toUpperCase();
try {
this.pageContext.getOut().write(bc);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return super.doStartTag(); } @Override
public int doStartTag() throws JspException {
return super.EVAL_BODY_BUFFERED;
} }
BodyContentTag
4 tld文件约束:
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>SimpleTagLibrary</short-name>
<uri>http://self-tag-with-hello</uri> <tag>
<name>helloWorld</name> <tag-class>com.tag.HelloWorldTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag> <tag>
<name>evalbody</name>
<tag-class>com.tag.EvalBodyTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>show</name>
<required>true</required>
</attribute> </tag> <tag>
<name>showpage</name>
<tag-class>com.tag.ShowPageTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>show</name>
<required>true</required>
</attribute> </tag> <tag>
<name>repeatbody</name>
<tag-class>com.tag.RepeatTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>count</name>
<required>true</required>
</attribute> </tag>
<tag>
<name>changeContent</name>
<tag-class>com.tag.BodyContentTag</tag-class>
<body-content>JSP</body-content> </tag> </taglib>
MyTag
5页面结果展示

2_Jsp标签_传统标签功能简介的更多相关文章
- JSP第六篇【自定义标签之传统标签】
为什么要使用自定义标签? JSTL标签库只提供了简单的输出等功能,没有实现任何的HTML代码封装,并且某些复杂类型转换,或者逻辑处理的时候,JSTL标签库完成不了,需要自定义标签! 编写自定义标签的步 ...
- 3_Jsp标签_简单标签_防盗链和转义标签的实现
一概念 1防盗链 在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件,通过referer,网站可以检测目标网页访问的来源网页.有了referer跟踪来 ...
- javaEE(7)_自定义标签&JSTL标签(JSP Standard Tag Library)
一.自定义标签简介 1.自定义标签主要用于移除Jsp页面中的java代码,jsp禁止出现一行java脚本. 2.使用自定义标签移除jsp页面中的java代码,只需要完成以下两个步骤: •编写一个实现T ...
- JSP传统标签开发
1.标签技术的API类继承关系 1).JspTag接口是所有自定义标签的父接口 该接口中没有任何属性和方法,只有两个直接子接口,Tag接口和SimpleTag接口,把实现Tag接口的自定义标签叫做传统 ...
- 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销
第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...
- JSP自定义标签——传统标签
同JSP标签一样,自定义标签主要用于移除JSP页面中的Java代码,可以看到我们在JSP中其实是禁止使用Java脚本的,任何要想通过Java代码实现的功能都必须以标签形式来处理,可以使用JSP标签,J ...
- Java精选笔记_自定义标签
自定义标签 自定义标签入门 什么是自定义标签 自定义标签可以有效地将HTML代码与Java代码分离,从而使不懂Java编程的HTML设计人员也可以编写出功能强大的JSP页面 JSP规范中定义了多个用于 ...
- javaweb学习总结(二十四)——jsp传统标签开发
一.标签技术的API 1.1.标签技术的API类继承关系 二.标签API简单介绍 2.1.JspTag接口 JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属 ...
- jsp jsp传统标签开发
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
随机推荐
- Windows下C++多线程同步与互斥简单运用(转)
1. 互斥量,Mutex #include <Windows.h> #include <iostream> using namespace std; DWORD WINAPI ...
- 在Alfred添加自定义站内搜索
1.Google的站内搜索和渣度的对比,懒得吐槽了 2.在Alfred添加自定义站内搜索步骤 Add Custome Search 把搜索某个关键词的url复制到里面,把url里的关键词替换成{que ...
- HDU 1024 Max Sum Plus Plus [动态规划+m子段和的最大值]
Max Sum Plus Plus Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...
- Codeforces Round #451 (Div. 2) B. Proper Nutrition【枚举/扩展欧几里得/给你n问有没有两个非负整数x,y满足x·a + y·b = n】
B. Proper Nutrition time limit per test 1 second memory limit per test 256 megabytes input standard ...
- POJ2104 K-th Number(线段树)
题目链接 K-th Number #include <cstdio> #include <cstring> #include <iostream> #include ...
- 解决: g++: internal compiler error: Killed (program cc1plus)
现象描述:在树莓派上用qt编译二维码显示相关的UI程序时,经常报以上错误,有时候断电重启首次编译不会报错(估计是刚上电系统占用的内存比较少) g++: internal compiler error: ...
- VisualStudio 2013 Prieview体验
今天看到VisualStudio 2013的预览版发布了,便立即下载试用了一下. 主体界面和VS2012非常类似,不过色彩要稍微丰富点. 现在支持用MS账户登录了,登陆后可以同步设置,这个小功能还是比 ...
- BUG_ON&&WARN_ON&BUILD_BUG_ON
转载:http://wenx05124561.blog.163.com/blog/static/124000805201223112811490/ 一.BUG_ON Linux中BUG_ON,WARN ...
- iOS 在Xcode中使用OpenSSL库
最近要做一个密码键盘,想内置一些加密算法,所以就想到了添加OpenSSL库,现在mac也自带了OpenSSL库,但是每次都从终端是生成是很麻烦的.网上找了很多文档.博客去介绍如何编译可以在Xcode中 ...
- UE把环境变量Path改了
为了比较个文件,装了UE. 文件比较完了,环境变量也被改了. 改还不是写添加式的改,是写覆盖式的改. 搞得ant都起不动了,一看Path被改的那样(C:\hy\soft\ultraedit\Ultra ...