zoukankan      html  css  js  c++  java
  • Java之 jstl 自定义标签的方法

    1.写一个Java类

       我的路径是写再tag包中的一个 HelloTag类 

    package tag;
    
    import java.io.IOException;
    
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.JspWriter;
    import javax.servlet.jsp.PageContext;
    import javax.servlet.jsp.tagext.SimpleTagSupport;
    /*
     * 标签类
     * 		1.继承SimpleTagSupport
     * 		2.override  doTag方法
     * 		3.标签有哪些属性,标签类也得有对应的属性,属性名要一样,类型要匹配,并且有对应的set方法
     */
    public class HelloTag extends SimpleTagSupport{
    	private String info;
    	private int qty;
    	public HelloTag() {
    		System.out.println("HelloTag running");
    	}
    	public void setInfo(String info) {
    		System.out.println("HelloTag setInfo");
    		this.info = info;
    	}
    	public void setQty(int qty) {
    		System.out.println("HelloTag setQty");
    		this.qty = qty;
    	}
    	@Override
    	public void doTag() throws JspException, IOException {
    		System.out.println("HelloTag doTag");
    			/**
    			 * 通过继承自SimpleTageSupport提供的方法来获得pageContext,pageContext
    			 * 提供了获得其他所有隐含对象的方法
    			 */
    			PageContext pctx = (PageContext)getJspContext();
    			for(int i =0;i<qty;i++){
    			JspWriter out =  pctx.getOut();
    			out.println(info+"<br>");
    			}
    			
    	}
    	
    }
    

      定义一个.tld文件再 webapp下的WEB-INF文件夹中,实际就是xml

    <?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.1</tlib-version>
              <short-name>t</short-name>
         <uri>http//tedu.cn/mytag</uri>
         
         
           <tag>
    
    
        <name>date</name>
        <tag-class>tag.DateTag</tag-class>
            <!-- 
            body-content是用来告诉容器,标签有没有标签体,如果有,可以出现那些内容,
            empty:没有标签体
            scriptless:有标签体,但是,标签体里面不能够出现java代码
            JSP:有标签体 ,并且标签体里面允许出现java代码,但是只有复杂标签技术才支持这个值
         -->
        <body-content>empty</body-content>
       
        <attribute>
    
            <name>pattren</name>
            <!-- required 值为true,表示该属性必选 -->
            <required>true</required>
            <!-- retexprvalue 设置为true,表示该属性可以动态赋值,(比如可以使用el表达式来赋值) -->
            <rtexprvalue>true</rtexprvalue>
        </attribute>
     
      </tag>
      </taglib>

      使用:

    <%@ page contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@ taglib uri="http//tedu.cn/mytag" prefix="t"%>  <!-- 引入 -->
    <html>
    <head>
    <title>Insert title here</title>
    </head>
    <body>
    <t:hello info="Hello Kitty" qty="${1+8 }"></t:hello> <!-- 使用 -->
    </body>
    </html>

  • 相关阅读:
    笔记本Linux系统,修改合盖不待机
    用Java8把List转为Map
    获取本地请求的真实IP地址
    PowerDesigner 把Comment复制到name中和把name复制到Comment
    axios封装http请求
    Fiddler代理配置
    第十九章 代码重用
    第十八章 字符串
    第十七章 特殊类成员
    第十六章 多态性
  • 原文地址:https://www.cnblogs.com/topzhao/p/10254917.html
Copyright © 2011-2022 走看看