zoukankan      html  css  js  c++  java
  • Jsp_demo:自定义标签

    Jsp自定义标签:

          1.继承SimpleTagSupport,重写doTag()。

          2.在WEB-INF/ 下配置**.tld文件

          3.Jsp页面引入自定义标签:<%@ taglib uri="***" prefix="s"%>

    自定义标签demo实现:在jsp页面将对象存入pageContext.setAttribute(),使用标签输出该对象的所有方法,成员变量及值。

    TestTag.java:

    package mytag;
    import java.io.IOException;
    import java.io.Writer;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import javax.servlet.jsp.tagext.SimpleTagSupport;
    public class TestTag extends SimpleTagSupport{
        private String obj;//带属性标签必须为每个属性提供对应的 setter 和 getter 方法
        public String getObj() {
            return obj;
        }
        public void setObj(String obj) {
            this.obj = obj;
        }
        public void doTag() throws IOException{
            Writer out = getJspContext().getOut();
            Object object=(Object)getJspContext().getAttribute(obj);
            Class<?> c=object.getClass();
            Field fields[]=c.getDeclaredFields();
            for(Field f:fields ){            
                f.setAccessible(true);//私有成员也能访问
                try {
                    out.write(f.getName()+":"+f.get(object)+"</br>");
                } catch (IllegalArgumentException | IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
            Method methods[]=c.getMethods();
            for(Method m:methods){
                out.write(m.toString()+"</br>");
            }
        }
    }

    mytaglib.tld:

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE taglib
            PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
            "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
    <taglib>
    
      <tlib-version>1.0</tlib-version>
      <jsp-version>1.2</jsp-version>
      <short-name>mytaglib</short-name>
      <uri>/mytaglib</uri>
      <tag>
        <!-- 定义标签名 -->
        <name>info</name>
        <!-- 定义标签处理类 -->
        <tag-class>mytag.TestTag</tag-class>
        <!-- 定义标签体为空 -->
        <body-content>empty</body-content>
        <!-- 配置标签属性:driver -->
        <attribute>
            <name>obj</name> 
            <required>true</required>
            <fragment>true</fragment>
        </attribute> 
        </tag>
    </taglib>

    test.jsp:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="mytag.User,java.util.*" %>
        <%@ taglib uri="/mytaglib" prefix="s" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <%
        pageContext.setAttribute("date", new Date());
    %>
    <b><s:hello/></b>
    <b><s:info obj="date"/></b>
    </body>
    </html

  • 相关阅读:
    怎样看文献
    How to save rules of the iptables?
    Keras 自适应Learning Rate (LearningRateScheduler)
    在主线程中慎用WaitForSingleObject (WaitForMultipleObjects)
    QT5.9 新特性与版本回顾
    [常见问题]解决创建servlet 找不到webservlet包.
    MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
    MyBatis学习总结(七)——Mybatis缓存
    MyBatis学习总结(六)——调用存储过程
    MyBatis学习总结(五)——实现关联表查询
  • 原文地址:https://www.cnblogs.com/yunwuzhan/p/5859321.html
Copyright © 2011-2022 走看看