礼悟:
好好学习合思考,尊师重道存感恩。叶见寻根三返一,江河湖海同一体。
虚怀若谷良心主,愿行无悔给最苦。读书锻炼强身心,诚劝且行且珍惜。
javaEE:7
javaSE:1.8
JSTL:1.2.2
server:tomcat 8.5
browser:Chrome/Firefox
os:windows7 x64
ide:MyEclipse 2017
项目结构
jizuiku-tags.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"> ???<tlib-version>1.0</tlib-version> ?<short-name>jzk</short-name> ?<uri>http://www.jizuiku.com/tags/1.0</uri> ???????<!-- 配置标签 --> ?<tag> ?<name>MyTag</name><!-- 指定当前标签的名称 --> ?<tag-class>com.jizuiku.tag.MyTag</tag-class><!-- 当前标签的处理类 --> ?<body-content>scriptless</body-content><!-- 指定标签体的类型 EL表达式 --> ?<!-- 部署属性 --> ?<attribute> ?<name>value</name> ?<required>true</required> <!-- 是必须要给的属性 --> ?<rtexprvalue>true</rtexprvalue><!-- rt:runtime expr:expression value:value --> ????????<!-- 属性赋值可以是EL表达式 --> ?</attribute> ?</tag> ?</taglib>
MyTag.java
package com.jizuiku.tag;import java.io.IOException;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.SimpleTagSupport;/** * ?* ?* @author 博客园-给最苦 * @version V2017.12.04 */public class MyTag extends SimpleTagSupport {private boolean value = false;/* ?* 在doTag之前被tomcat调用 ?* getXxx就不用写了,请问为什么? * ?*/public void setValue(boolean value) {this.value = value;}@Overridepublic void doTag() throws JspException, IOException {// TODO Auto-generated method stubif (value) {// 执行标签体,参数是null 指的是 输出流是当前页面的outthis.getJspBody().invoke(null);this.getJspContext().getOut().print("居然是真");} else {// 执行标签体,参数是null 指的是 输出流是当前页面的outthis.getJspBody().invoke(null);this.getJspContext().getOut().print("居然是假");}}}
MyJsp.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@ taglib prefix="j" uri="/WEB-INF/tlds/jizuiku-tags.tld"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP ‘MyJsp.jsp‘ starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"></head><body><!-- 给最苦 没有起好名字,完全不能见名知意呀!!! --><j:MyTag value="${empty param.name }">呵呵,这里必须要写一些内容。否则就会抛出空指针异常<br></j:MyTag></body></html>
浏览器查看
学习资源:itcast和itheima视频库。如果您有公开的资源,可以分享给我的话,用您的资源学习也可以。
博文是观看视频后,融入思考写成的。博文好,是老师讲得好。博文坏,是 给最苦 没认真。
JSTL基础 SimpleTagSupport 自定义标签 带有属性
原文地址:http://www.cnblogs.com/jizuiku/p/7994030.html