zoukankan      html  css  js  c++  java
  • taglib的使用

    使用自定义的taglib可以是我们对页面数据的处理放在后台,不仅使用方便,而且影藏了处理逻辑,也更加的安全。

    需要使用到servlet.jar

    1.在web-inf下建立taglib.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/dtd/web-jsptaglibrary_1_2.dtd">
    <taglib>
        <tlib-version>1.0</tlib-version>
        <jsp-version>1.2</jsp-version>
        <short-name>app</short-name>
        <uri>http://com.hh/taglib</uri><!--页面引用的地址-->
        <display-name>My Tags</display-name>
        <tag>
            <name>myTaglib</name>
            <tag-class>com.hh.MyTaglib</tag-class>
            <attribute>
                <name>name</name>
                <required>true</required><!--是否必须输入-->
                <rtexprvalue>true</rtexprvalue><!--当为true时, 表示该自定义标签的该属性的值可以直接指定或者通过动态计算指定为false时表示只能直接指定,如能否直接使用el表达式-->
            </attribute>
            <attribute>
                <name>age</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
            </attribute>
        </tag>
    </taglib>

    2.写jave类进行逻辑处理

    package com.hh;
    
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.JspWriter;
    import javax.servlet.jsp.tagext.TagSupport;
    import java.io.IOException;
    
    /**
     * Created by hh on 15-10-30.
     *需要引入servlet.jar
     */
    public class MyTaglib  extends TagSupport{
        private String name;//需要对参数写get,set方法
        private int age;
        @Override
        public int doStartTag() throws JspException {
            return super.doStartTag();
        }
    
        /**
         * EVAL_BODY_INCLUDE:把Body读入存在的输出流中,doStartTag()函数可用
         * EVAL_PAGE:继续处理页面,doEndTag()函数可用
         * SKIP_BODY:忽略对Body的处理,doStartTag()和doAfterBody()函数可用
         * SKIP_PAGE:忽略对余下页面的处理,doEndTag()函数可用
         * EVAL_BODY_TAG:已经废止,由EVAL_BODY_BUFFERED取代
         * EVAL_BODY_BUFFERED:申请缓冲区,由setBodyContent()函数得到的BodyContent对象来处理tag的body,如果类实现了BodyTag,那么doStartTag()可用,否则非法
         * @return
         * @throws JspException
         */
        @Override
        public int doEndTag() throws JspException {
            JspWriter out = pageContext.getOut();
            try {
                out.print("你输入的是:"+name+",年龄是:"+age);
            }catch (IOException e){
    
            }
            return EVAL_BODY_INCLUDE;
        }
    
        public String getName() { return name;}
    
        public void setName(String name) {this.name = name;}
    
        public int getAge() { return age;}
    
        public void setAge(int age) { this.age = age;}
    }

    3.页面调用

    <%@ page language="java" contentType="text/html; charset=UTF-8"
             pageEncoding="UTF-8"%>
    <%@ taglib prefix="myTag" uri="http://com.hh/taglib" %>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <body>
    <h2>Hello World!</h2>
    要显示的信息1:<myTag:myTaglib name="张三"></myTag:myTaglib><br>
    要显示的信息2:<myTag:myTaglib name="张三" age="20"></myTag:myTaglib>
    </body>
    </html>
  • 相关阅读:
    MYSQL数据库查看被锁状态以及解锁
    MongoDB命令
    代码重构
    笔试常见之C类型转换
    WeakReference(弱引用)(转)
    Linux ubuntu16.04下vim的安装与配置
    mysql Access denied for user root@localhost之错误解决方法(错误码:1045)
    mysql服务无法启动报错1067解决办法 (mysql启动错误1067)
    js的ajax封装
    windows下apache tomcat整合
  • 原文地址:https://www.cnblogs.com/mouseIT/p/4924367.html
Copyright © 2011-2022 走看看