JSP自定义标签入门实例详解

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="[email protected]";

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

时间: 2024-11-09 07:47:54

JSP自定义标签入门实例详解的相关文章

基于JSP 自定义标签使用实例介绍

添加JSP自定义标签: 先添加一个tld文件到WEB-INF文件夹中<?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://

JavaWeb基础—JSP自定义标签入门

自定义标签的作用:替换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>

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

JSP自定义标签开发入门 一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发自定义标签所涉及到的接口与类的层次结构(其中SimpleTag接口与SimpleTagSupport类是JSP2.0中新引入的). 目标1:自定义一个用表格显示用户信息的简单标签 效果图: 在jsp页面使用此自定义标签: 假设我们有一个UserInfo的javabean,那

JSP自定义标签开发入门

一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发自定义标签所涉及到的接口与类的层次结构(其中SimpleTag接口与SimpleTagSupport类是JSP2.0中新引入的). 目标1:自定义一个用表格显示用户信息的简单标签 效果图: 在jsp页面使用此自定义标签: 假设我们有一个UserInfo的javabean,那么在JSP页面使用此标签只

Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(五)

这是本系列的最后一篇,主要讲一下FreeMarker模板引擎的基本概念与常用指令的使用方式.     一.FreemMarker基本概念     FreemMarker是一个用Java语言编写的模板引擎,它是一个基于模板来生成文本输出的一个工具.是除了JSP之外被使用得最多的页面模板技术之一,另一个比较有名的模板则是Velocity.     用户可以使用FreeMarker来生成所需要的内容,通常由Java提供数据模型,FreeMarker通过模板引擎渲染数据模型,这样最终得到我们想要的内容.

《AngularJS》5个实例详解Directive(指令)机制(转)

转自大漠穷秋:http://damoqiongqiu.iteye.com/blog/1917971 感谢作者分享! <AngularJS>5个实例详解Directive(指令)机制 大漠穷秋 本文整理并扩展了<AngularJS>这本书第六章里面的内容,此书近期即将由电子工业出版社出版,敬请期待口令:Angular 1.一点小说明 指令的作用:实现语义化标签 我们常用的HTML标签是这样的: <div> <span>一点点内容</span> &l

Vue 实例详解与生命周期

Vue 实例详解与生命周期 Vue 的实例是 Vue 框架的入口,其实也就是前端的 ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个 Vue 实例生成.编译.挂着.销毁等过程进行 js 控制. Vue 实例初始化的选项配置对象详解 前面我们已经用了很多次 new Vue({...})的代码,而且 Vue 初始化的选项都已经用了data.methods.el.computedd等,估计您看到这里时,应该已经都明白了他们的作

Cocos2d-x 3.X手游开发实例详解

Cocos2d-x 3.X手游开发实例详解(最新最简Cocos2d-x手机游戏开发学习方法,以热门游戏2048.卡牌为例,完整再现手游的开发过程,实例丰富,代码完备,Cocos2d-x作者之一林顺和泰然网创始人杨雍力荐) 于浩洋 著   ISBN 978-7-121-23998-4 2014年9月出版 定价:59.00元 356页 16开 编辑推荐 以Cocos2d-x V3.0为框架全面讲解手游开发的知识和方法 以热门游戏2048.卡牌为例,完整再现手游的开发过程 Cocos2d-x作者之一林

《HTML 5网页开发实例详解》目录

第一篇  从宏观上认识HTML 5 讲述了HTML 5引发的Web革命.HTML 5的整体特性.HTML 5相关概念和框架和开发环境搭建. 第1章 HTML 5引发的Web革命 1.1  你是不是真的了解HTML 5 1.1.1  通过W3C认识HTML 5的发展史 1.1.2  HTML 5.HTML4.XHTML的区别 1.1.3  什么人应该学HTML 5 1.1.4  一个图告诉你如何学习HTML 5 1.2  浏览器之争 1.2.1  说说这些常见的浏览器 1.2.2  浏览器的兼容烦