JSP自己定义标签主要能用到的两个包

javax.servlet.jsp.*;javax.servlet.jsp.tagext.*;

自己定义标签<userInfo:showUserInfo/>实现对用户的展现。

效果图例如以下

定义用户累User.java  get set就不在赘述。

private String userName;

private Integer age;

private String email;



public User(){

this.userName="张三";

this.email="zhangsan@163.com";

this.age=28;

}

创建自己定义标签类UserInfoTag.java

package com.test.tag;





import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspWriter;

import javax.servlet.jsp.tagext.TagSupport;





import com.test.entity.User;





public class UserInfoTag extends TagSupport {



private User user=new User();



@Override

public int doStartTag() throws JspException {

// TODO Auto-generated method stub

JspWriter out = this.pageContext.getOut();

try {

if (user == null) {

out.print("UserInfo Is Not Found......");

return SKIP_BODY;

}

out.println("<table width='500px' border='1' align='center'>");

out.println("<tr>");

out.println("<td width='20%'>Username:</td>");

out.println("<td>" + user.getUserName() + "</td>");

out.println("</tr>");

out.println("<tr>");

out.println("<td>Age:</td>");

out.println("<td>" + user.getAge() + "</td>");

out.println("</tr>");

out.println("<tr>");

out.println("<td>Email:</td>");

out.println("<td>" + user.getEmail() + "</td>");

out.println("</tr>");

out.println("</table>");


} catch (Exception e) {

throw new JspException(e.getMessage());

}

return super.doStartTag();

}



@Override

public int doEndTag() throws JspException {

// TODO Auto-generated method stub

return EVAL_PAGE;

}



@Override

public void release() {

// TODO Auto-generated method stub

super.release();

this.user=null;

}



public User getUser() {

return user;

}



public void setUser(User user) {

this.user = user;

}



}

2在Web-Inf创建标签库描写叙述文件.tdl(Tag Library Description)

<?

xml version="1.0" encoding="UTF-8"?>

<taglib version="2.0" 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 web-jsptaglibrary_2_0.xsd">

<tlib-version>1.0</tlib-version>

<jsp-version>3.0</jsp-version>

<short-name>userInfo</short-name>

<uri>mytaglib</uri>

<tag>

<name>showUserInfo</name>

<tag-class>com.test.tag.UserInfoTag</tag-class>

<body-content>empty</body-content>

<attribute>

<name>user</name>

<required>false</required>

<rtexprvalue>true</rtexprvalue>

</attribute>

</tag>

</taglib>

3 配置web.xml

<jsp-config>

<taglib>

<taglib-uri>mytaglib</taglib-uri>

<taglib-location>/WEB-INF/mytaglib.tld</taglib-location>

</taglib>

</jsp-config>

4 须要使用该标签的页面头部引入

<%@ taglib uri="/mytaglib" prefix="cc"%>

<userInfo:showUserInfo/>

标签说明

我们创建的UserInfoTag类继承了TagSupport类,而它又实现了Tag接口,Tag接口的生命周期由其所在的容器控制,例如以下:

setPageContext() 将所在jsp页面的pageContext注入进来,目的是为了在后面的方法中能够訪问到jsp页面对象的pageContext属性

setParent()       设置此标签的父标签

setAttribute()   将标签中的属性注入到此class的属性,不须要自己实现但要提供属性的get与set方法

doStartTag()      在開始标签属性设置后调用,假设返回SKIP_BODY则忽略标签之中的内容,假设返回EVAL_BODY_INCLUDE则将标签体的内容进行输出

doEndTag()         在结束标签之前调用,返回SKIP_PAGE跳过整个jsp页面后面的输出,返回EVAL_PAGE运行页面余下部分

release()          生命周期结束时调用

至此,一个简单的自己定义标签就实现了。

源代码下载地址 http://download.csdn.net/detail/qiyejunlintian/8037433

JSP自己定义标签入门实例具体解释的更多相关文章

  1. JSP自己定义标签

    JSP自己定义标签 API文档: http://docs.oracle.com/javaee/7/api/ watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ ...

  2. 【Jsp】JSP自己定义标签与MODEL1、MODEL2标准

    在JSP2.0之后支持自己定义标签,如今一般都是jsp2.4的版本号了,所以无须考虑版本号的问题. 直接使用就能够了.尽管一般开发的过程中,非常少会自己定义JSP标签.可是通过一个JSP自己定义标签的 ...

  3. JSP自己定义标签继承哪个类

    JSP自己定义标签继承哪个类 解:JSP自己定义标签继承TagSupport

  4. 深入分析JavaWeb Item23 -- jsp自己定义标签开发入门

    一.自己定义标签的作用 自己定义标签主要用于移除Jsp页面中的java代码. 二.自己定义标签开发和使用 2.1.自己定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 要编写一 ...

  5. JSP自定义简单标签入门之带有属性

    上面写的那个简单标签来控制页面中标签内容的重复次数是固定的,这就是权限"写死了",这是非常不好的行为,因为其灵活性太差.所以下面就介绍一种使用属性来控制标签内容输出次数的方法. 准 ...

  6. JAVAWEB开发之JSTL标签库的使用、 自己定义EL函数、自己定义标签(带属性的、带标签体的)

    JSTL  JSTL简单介绍: JSTL的全称:JSP Standard Tag Library,JSP标准标签库 JSTL的作用:   提供给Java Web开发者一个标准通用的标签函数库   和E ...

  7. 【JSP】自定义标签开发入门

    JSP 自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时We ...

  8. JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门

    2 JSP内置标签(美化+业务逻辑)   1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容   2)JSP内 ...

  9. <jsp:javabean>动作标签实例

    <jsp:javabean>动作标签实例 之后补齐基础知识 scope属性 该属性指定了所创建Bean实例的存取范围,省略该属性时的值为page.<jsp:useBean>标识 ...

随机推荐

  1. XML和JSON

    XML XML(EXtensible Markup Language),可扩展标记语言 特点 XML与操作系统.编程语言的开发平台无关 实现不同系统之间的数据交换 作用: 数据交互 配置应用程序和网站 ...

  2. 【转】UpdateData()函数

    一.总结UpdateData()函数 UpdateData(true);//用于将屏幕上控件中的数据交换到变量中. UpdateData(false);//用于将数据在屏幕中对应控件中显示出来. 当你 ...

  3. python 导入beautifulsoup报错

    导入Beautifulsoup 报错 AttributeError: 'module' object has no attribute '_base' 解决方法:   pip install --up ...

  4. Java中数组在内存中的图解

    Java中的数组在内存中的图解,其实对于数组,还是比较熟悉的,平时用的也是很多的,在看数据结构与算法的极客时间专栏,最常用的10个数据结构:数组.链表.栈.队列.散列表.二叉树.堆.跳表.图.Trie ...

  5. android网络图片自动轮播 githhub地址

    https://github.com/panxw/android-image-indicator

  6. 洛谷——P2417 课程

    P2417 课程 裸地匈牙利算法, 贪心的不断匹配,若没匹配,则匹配:反之,判断与之匹配的点能否在找另一个点匹配,若能,抢多这个点与之匹配 时间复杂度$O(n\times m)$ #include&l ...

  7. Redis 压缩存储的配置

    如题,redis是采用了ziplist 元素在不足一定数量时采用压缩存储 hash: zset: list: 如上图所示: ziplist-entries:最大元素数量(即存储了多少个元素) zipl ...

  8. Python之爬虫-京东商品

    Python之爬虫-京东商品 #!/usr/bin/env python # coding: utf-8 from selenium import webdriver from selenium.we ...

  9. HDU3032 nim博弈

    题目大意: 可以从某一堆中取任意个数,也可把一堆分成两个不为0的堆,直到某一方无法操作为输 因为是nim博弈,所以只要考虑一堆时候的sg值,把所有堆的sg值异或即可 很显然这里 0 是一个终止态 sg ...

  10. 莎拉公主的困惑(bzoj 2186)

    Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现 ...