jsp自定标签

最近工作中用到了jsp的自定义标签。在前台使用较少的代码。即可实现强大的功能,于是通过查询相关资料做了一个访问数据的自定义标签。通过实例了解自定义标签的功能。

实例来源慕课网

参考资料:http://www.cnblogs.com/shanheyongmu/p/5940945.html

创建自定义类,需要继承TagSupport

package cn.choi.tag;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

@SuppressWarnings("serial")
public class DBconnectionTag extends TagSupport {
    private String driver;
    private String url;
    private String sql;
    private String username;
    private String password;

    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;

    @Override
    public int doEndTag() throws JspException {
        try {
            Class.forName(this.driver);
            conn = DriverManager.getConnection(this.url, this.username,
                    this.password);
            stmt = conn.createStatement();
            rs = stmt.executeQuery(this.sql);
            if (rs != null) {
                while (rs.next()) {

                    pageContext.getOut().print(rs.getString(2) + "<br/>");
                }
            }
            return EVAL_PAGE;

        } catch (Exception e) {
            e.printStackTrace();
            return SKIP_PAGE;
        } finally {

            try {
                if (rs != null) {
                    rs.close();
                }
                if (stmt != null) {
                    stmt.close();
                }
                if (conn != null) {
                    rs.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }

        }

    }

    public void setUrl(String url) {
        this.url = url;
    }

    public void setSql(String sql) {
        this.sql = sql;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setDriver(String driver) {
        this.driver = driver;
    }

}

创建tld 文件,该文件必须存在WEB-INF目录或其子目录。前面两个Tag为其他是标签

<?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">
    <!-- 标签库的描述 -->
    <description>A tag library exercising SimpleTag handlers</description>
    <!-- 自定义标签的版本为1.0 (必须元素) -->
    <tlib-version>1.0</tlib-version>
    <!-- 简短的名称(元素) -->
    <short-name>SimpleTag</short-name>
    <!-- 定义此标签的uri路径,用于唯一标示的数据库,便于页面引用 -->
    <uri>/choi-tag</uri>

    <tag>
        <!--该标签名称(必须元素) -->
        <name>loginDate</name>
        <!-- 全限定名(必须元素) -->
        <tag-class>cn.choi.tag.LoginDateTag</tag-class>
        <!-- 指明主题类型 -->
        <body-content>empty</body-content>
    </tag>

    <tag>
        <description>当页面request的show值为show时执行标签体的内容</description>
        <name>SkipBodyOrEvalBodyInclude</name>
        <tag-class>cn.choi.tag.SkipBodyOrEvalBodyIncludeTag</tag-class>
        <!-- 表示标签体可以包含EL表达式和JSP的动作元素,但不能包含脚本表达式 -->
        <body-content>scriptless</body-content>
    </tag>

    <tag>
        <description>当前的请求只能通过连接或form提交进行</description>
        <name>SkipPageOrEvalPage</name>
        <tag-class>cn.choi.tag.StartPagorEvalPagTag</tag-class>
        <!-- 表示标签体可以包含EL表达式和JSP的动作元素,但不能包含脚本表达式 -->
        <body-content>empty</body-content>
    </tag>
    <tag>
        <description>连接数据库</description>
        <name>DBconnnectionTag</name>
        <tag-class>cn.choi.tag.DBconnectionTag</tag-class>
        <body-content>empty</body-content>

        <attribute>
            <name>driver</name>
            <required>true</required>
        </attribute>

        <attribute>
            <name>url</name>
            <required>true</required>
        </attribute>
        <attribute>
            <name>sql</name>
            <required>true</required>
        </attribute>
        <attribute>
            <name>username</name>
            <required>true</required>
        </attribute>
        <attribute>
            <name>password</name>
            <required>true</required>
        </attribute>
    </tag>
</taglib>

jsp页面的代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/choi-tag" prefix="choi"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

<body>
    <choi:DBconnnectionTag
    driver="oracle.jdbc.driver.OracleDriver"
    password="admin"
    username="bysj"
    sql=" select * from users"
    url="jdbc:oracle:thin://localhost:1521:orcl"  />
</body>
</html>

总结:

创建的类需继承TagSupport类,实现方法。对于传入的参数需要添加set方法。

tld文件必须在WEB-INF目录下,设置参数必须性。

jsp添加taglib引入自定义标签。

时间: 2024-10-01 02:39:45

jsp自定标签的相关文章

Jsp开发常用标签总结

Jsp开发常用标签总结 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1]  是由Sun Microsystems公司倡导.许多公司参与一起建立的一种动态网页技术标准.JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp). 用JSP开发的Web应用是跨平台的,

使用JSP的fmt标签实现国际化支持

使用JSP的fmt标签配置i18n国际化资源文件可以实现根据不同的地区和语言切换不同的显示. 具体做法如下: 1.在JSP页面中添加fmt标签的引用: <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 2.设置需要用到的bundle : <fmt:setBundle basename="i18n/i18n_${system_language}"/&

JSP自定义分页标签TAG

首先我们需要在WEB-INF/tld/目录下创建page.tld文件 <?xml version="1.0" encoding="ISO-8859-1"?> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>page</short-name> <u

jsp param动作标签

param 标签以"名字-值"对的形式为其它标签提供附加消息.这个标签与jsp:include.jsp:forward.jsp:plugin标签一起使用. param 动作标签 <jsp:param name="名字"value ="指定给param的值"/> 当该标签与jsp:include标签一起使用时.能够将param标签的值传递到include指令要载入的文件里去,因此include动作标签假设结合param标签.能够在载入文

jsp之jstl标签

常用jstl标签 一.<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 核心标签 1.符合条件就输出,没有对应的else <c:if test="条件">  输出内容  </c:if> 2.符合某个条件后就不再执行后面的条件,没有条件适合就执行otherwise <c:choose> <c:when test=&q

学会怎样使用Jsp 内置标签、jstl标签库及自定义标签

学习jsp不得不学习jsp标签,一般来说,对于一个jsp开发者,可以理解为jsp页面中出现的java代码越少,对jsp的掌握就越好,而替换掉java代码的重要方式就是使用jsp标签. jsp标签的分类: 1)内置标签(动作标签): 不需要在jsp页面导入标签 2)jstl标签: 需要在jsp页面中导入标签 3)自定义标签 : 开发者自行定义,需要在jsp页面导入标签 1.内置标签(动作标签): <jsp:forward />转发标签: 语法:<jsp:forward page="

jsp的C标签一般使用方法以及js接收servlet中的对象及对象数字

jsp的C标签一般使用方法以及js接收servlet中的对象及对象数组 由于现流行的javaWeb框架提倡前后端分离,比如在SpringMvc中已经很少写servlet的一些东西:目前 前端jsp中大多是一些纯html和js,很少用到jstl的一堆东西,后端也仅仅处理一些前端的post.get请求或页面跳转,无须以往繁琐的xml路径映射和filter过滤. 不过有时也会用到servlet作用域中的一些东西,比如某个固定的值.上下文路径等等~,不过这些东西大多数也仅限于取值而不是设置值(或对象),

JSP自己定义标签入门实例具体解释

JSP自己定义标签主要能用到的两个包 javax.servlet.jsp.*;javax.servlet.jsp.tagext.*; 自己定义标签<userInfo:showUserInfo/>实现对用户的展现. 效果图例如以下 定义用户累User.java  get set就不在赘述. private String userName; private Integer age; private String email; public User(){ this.userName="张

[应用篇]第二篇 JSP自带标签介绍

JSP 有以下三类标签: 指令:JSP Directive 指令标签用于设置与整个 JSP 页面相关的属性,非常常用. 下面的三种标签是我们使用频率最高的 标签 jsp标签 描述 <%@ page … %> 使用比较 <jsp:directive.page attribute="value" /> 定义页面的依赖属性,例如脚本语言.页面编码.缓存需求等等 <%@ include … %> 静态包含,使用比较多 <jsp:directive.in