自定义标签的作用:替换JSP页面的java代码

步骤:1.标签处理类(标签是一个对象,那也就需要先有类)  

   2.tld文件 它是一个xml(可以向c标签里借),一般放到WEB-INF下,不让客户端浏览器看到
      核心配置 <tag>
        <name>myTag</name>
        <tag-class>com.jiangbei.tag.MyTag</tag-class>
        <body-content>empty</body-content>
          </tag>
        【注意tag-class里面的对应的类记得改!】
   3.使用<%@taglib%>指定tld文件路径

  例如:

    标签处理类:

public class MyTag implements SimpleTag{

    private PageContext pageContext;
private JspFragment body; @Override
public void doTag() throws JspException, IOException {
// 想要向页面输出,需要out,pageContext一个顶九个,可以得到out
pageContext.getOut().print("Hello World"); } @Override
public JspTag getParent() {
// TODO Auto-generated method stub
return null;
} @Override
public void setJspBody(JspFragment jspBody) {
this.body = jspBody; } @Override
public void setJspContext(JspContext pc) {
//服务器传过来给他保存起来
this.pageContext = (PageContext) pc; } @Override
public void setParent(JspTag parent) {
// TODO Auto-generated method stub } }

在此目录下建立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>
<short-name>itcast</short-name>
<uri>http://www.itcast.cn/tags/1.0</uri> <tag>
<name>myTag</name>
<tag-class>com.jiangbei.tag.MyTag</tag-class>
<body-content>empty</body-content>
</tag> <tag>
<name>myTag2</name>
<tag-class>com.jiangbei.tag.MyTag2</tag-class>
<body-content>empty</body-content>
</tag> <tag>
<name>myTag3</name>
<tag-class>com.jiangbei.tag.MyTag3</tag-class>
<body-content>scriptless</body-content>
</tag> <tag>
<name>myTag4</name>
<tag-class>com.jiangbei.tag.MyTag4</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>test</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag> </taglib>

直接继承类而避免直接实现接口:

  

public class MyTag3 extends SimpleTagSupport{

    @Override
public void doTag() throws JspException, IOException {
//获取流,为了执行的参数输出
Writer out = this.getJspContext().getOut();
out.write("********************<br/>");
//执行标签体内容,写到指定的流中(页面上)
this.getJspBody().invoke(out);
out.write("<br/>********************");
} }

标签处理类(JspFragment jsp片段,就是内容)
实现simpleTag接口:5个方法(当然不会你自己调用,tomcat帮你调用)
doTag()每次执行标签时都会调用这个方法,会在其它方法之后被tomcat调用
set/getParent 操作父标签的方法,其中get为非生命周期方法
setJspBody(JspFragment jspBody)
void setJspContext(JspContext pc)
当然,有时候实现接口是非常不方便的,于是就有了一个类给我们继承
SimpleTagSupport,已经帮我们把东西都存好了,并且提供了get方法
供子类调用
标签体内容支持的类型
empty
JSP:已经不支持!(标签体内容可以是JAVA脚本、EL表达式等)
scriptless 是EL表达式(当然普通字符串也是可以得)
第四种无用!

可以使用在标签处理类doTag()方法中throw new SkipPageException,
tomcat认识这个标签,它会进行捕获。后面的不会再执行
work目录下看真身可以看到实现究竟

可以给标签添加属性:
给标签处理类添加属性
在tld文件中对属性进行配置(都见WEB-INF下的tlds的itcast_tld)
rtexprvalue:运行时表达式值,就是可不可以是EL表达式值

JavaWeb基础—JSP自定义标签入门的更多相关文章

  1. JSP自定义标签开发入门《转》

    JSP自定义标签开发入门 一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; ...

  2. JSP自定义标签开发入门

    一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发 ...

  3. 【转】Jsp自定义标签详解

    一.前言 原本是打算研究EXtremeComponents这个jsp标签插件,因为这个是自定义的标签,且自身对jsp的自定义标签并不是非常熟悉,所以就打算继续进行扫盲,开始学习并且整理Jsp自定义标签 ...

  4. 1.4(学习笔记)JSP自定义标签

    一.JSP自定义标签 JSP自定义标签,可以通过实现Tag接口.继承TagSupport类来设置标签功能. 后续通过配置文件将标签和具体的实现类关联. 二.自定义第一个标签(实现Tag接口) 自定义标 ...

  5. JSP 自定义标签

    0 标签技术的API继承体系 1 作用 jsp自定义标签用于移除页面中的java代码 2 实现 2.1 标签处理类ViewIPTag.java package com.zsm.util; import ...

  6. 一个简单的jsp自定义标签

    学到了一个简单的jsp自定义标签,后面有更多的例子,会更新出来: 例子1: 步骤: 1.编写标签实现类: 继承javax.servlet.jsp.tagext.SimpleTagSupport; 重写 ...

  7. jsp自定义标签分析

    jsp自定义标签的优势体现在于jsp页面上面减少了java代码. jsp自定义标签有三大部分组成,首先是类继承TagSupport,实现doStartTag方法. public int doStart ...

  8. JSP自定义标签库

    总所周知,JSP自定义标签库,主要是为了去掉JSP页面中的JAVA语句 此处以格式化输出时间戳为指定日期格式为例,简单介绍下JSP自定义标签的过程. 编写标签处理类(可继承自javax.servlet ...

  9. JSP自定义标签配置

    JSP自定义标签配置 JSP自定义标签 <taglib>         <taglib-uri>/WEB-INF/you.tld</taglib-uri>     ...

随机推荐

  1. 事件驱动模型 IO多路复用 阻塞IO与非阻塞IO select epool

    一.事件驱动 1.要理解事件驱动和程序,就需要与非事件驱动的程序进行比较.实际上,现代的程序大多是事件驱动的,比如多线程的程序,肯定是事件驱动的.早期则存在许多非事件驱动的程序,这样的程序,在需要等待 ...

  2. Maven安装及MyEclipse中使用Maven

    Step1:下载mavenhttp://maven.apache.org/download.cgi,下载好后解压到一个路径中 Step2:配置环境变量, 新建变量名:MAVEN_HOME 变量值:D: ...

  3. springboot学习入门之二---配置文件解析

    2springboot配置文件解析 2.1application.properties配置文件 使用application.properties全局配置文件(位置为src/main/resources ...

  4. python apache下出现The _imaging C module is not installed

    操作系统:win7 64位 安装python版本 win32 2.7版本 安装的PIL插件PIL-1.1.7.win32-py2.7.exe 用本地自带的开发服务器上传图片处理等一切正常 放到APAC ...

  5. jQuery 中bind(),live(),delegate(),on() 区别

    on()来改写通过 .bind(), .live(), .delegate()所注册的事件 /* The jQuery .bind(), .live(), and .delegate() method ...

  6. .Oracle固定执行计划之SQL PROFILE概要文件

    1.  引子Oracle系统为了合理分配和使用系统的资源提出了概要文件的概念.所谓概要文件,就是一份描述如何使用系统的资源(主要是CPU资源)的配置文件.将概要文件赋予某个数据库用户,在用户连接并访问 ...

  7. 第一篇,编译生成libcef_dll_wrapper

    因为工作原因需要在程序里面嵌入地图,在网上看了百度地图和高德地图都没有提供c++的接口,提供有web接口,那只好在程序里面嵌入web控件了,第一想到的是web browser控件,接着脑海里又想到IE ...

  8. 字典树(前缀树)-Java实现

    字典树 字典树是一种树形结构,优点是利用字符串的公共前缀来节约存储空间.在这提供一个自己写的Java实现,非常简洁. 根节点没有字符路径.除根节点外,每一个节点都被一个字符路径找到. 从根节点到某一节 ...

  9. 【转载】Spring最佳后台框架

    https://www.quora.com/What-is-the-best-backend-arquitecture-using-spring-framework The most modern a ...

  10. 洛谷 P2764 最小路径覆盖问题【最大流+拆点+路径输出】

    题目链接:https://www.luogu.org/problemnew/show/P2764 题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V ...