• 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(MyISAM)的读写互斥锁的问题
    XtraDB存储引擎
    VMware虚拟机linux系统时间同步的解决办法centos rhel
    SQL Server数据库查询速度慢的原因和解决方法
    mysql database manual[mysql数据库手册]
    android 相机使用详解概述
    android中进行https连接的方式的详解
    android 获取手机中所有的传感器Sensor类使用方法
    获取手机安装的全部应用的示例教程
    android 全局异常的处理 详解
  • 原文地址:https://www.cnblogs.com/mouseIT/p/4924367.html
Copyright © 2020-2023  润新知