前面说过jsp2自定义标签如果要加入属性需要设置属性的getter和setter方法。代码如下:

 public class GetParam extends SimpleTagSupport {
private String driver;
private String url;
private String user;
private String pwd;
private String sql;
private Connection conn = null;;
private Statement stm = null;;
private ResultSet rs = null; public void setDriver(String driver) {
this.driver = driver;
} public String getDriver() {
return this.driver;
} public String getUrl() {
return url;
} public void setUrl(String url) {
this.url = url;
} public String getUser() {
return user;
} public void setUser(String user) {
this.user = user;
} public String getPwd() {
return pwd;
} public void setPwd(String pwd) {
this.pwd = pwd;
} public String getSql() {
return sql;
} public void setSql(String sql) {
this.sql = sql;
} @Override
public void doTag() throws JspException, IOException {
// TODO Auto-generated method stub
try {
// 注册驱动
Class.forName(driver);
// 建立连接
conn = DriverManager.getConnection(url, user, pwd);
stm = conn.createStatement();
rs = stm.executeQuery(sql);
// 获取页面输出流
Writer out = getJspContext().getOut();
// 设置表格
out.write("<table border='1' width='300'>");
// 遍历
while (rs.next()) {
out.write("<tr>");
for (int i = 1; i < rs.getMetaData().getColumnCount(); i++) {
out.write("<td>");
out.write(rs.getString(i));
out.write("</td>");
}
out.write("</tr>");
}
out.write("</table>"); } catch (SQLException | ClassNotFoundException ex) { // TODO: handle exception
ex.printStackTrace();
throw new JspException("自定义标签错误" + ex.getMessage());
} finally {
try {
if (rs != null) {
rs.close();
}
if (stm != null) {
stm.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
}

接下来配置tld文件,对于有属性的标签,需要在<tag>元素下增加<attribute>子元素。在<attribute>下有三个元素,

第一个是name:设置属性名,第二个是required:该属性是否为必须属性,第三个是fragment:该属性是否支持JSP脚本,表达式等动态内容。

在配置<attribute>下面的name时候,一定要和属性名对应,不然会报错"Unable to find setter method for attribute: XXX",tld文件完整代码如下:

 <?xml version="1.0" encoding="GBK" ?>
<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>
<!-- 版本 -->
<tlib-version>1.0</tlib-version>
<!-- 短名 -->
<short-name>gotparam</short-name>
<!-- 指定标签库URI -->
<uri>http://tomcat.apache.org/gotparam</uri>
<tag>
<description>Outputs Hello, World</description>
<!-- 标签库名字 -->
<name>GetParam</name>
<!-- 标签处理类 -->
<tag-class>lee.GetParam</tag-class>
<!-- 标签体内容 -->
<body-content>empty</body-content>
<!-- 标签属性:driver -->
<attribute>
<name>driver</name>
<required>true</required>
<fragment>true</fragment>
</attribute>
<!-- 标签属性:url -->
<attribute>
<name>url</name>
<required>true</required>
<fragment>true</fragment>
</attribute>
<!-- 标签属性:user -->
<attribute>
<name>user</name>
<required>true</required>
<fragment>true</fragment>
</attribute>
<!-- 标签属性:pwd -->
<attribute>
<name>pwd</name>
<required>true</required>
<fragment>true</fragment>
</attribute>
<!-- 标签属性:sql -->
<attribute>
<name>sql</name>
<required>true</required>
<fragment>true</fragment>
</attribute>
</tag>
</taglib>

最后新建一个jsp文件测试标签,代码如下:

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://tomcat.apache.org/gotparam" prefix="gotparam"%>
<!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>
<gotparam:GetParam user="root" url="jdbc:mysql://localhost:3306/house"
driver="com.mysql.jdbc.Driver" pwd="123456" sql="select * from house" />
</body>
</html>

jsp2自定义标签+属性的更多相关文章

  1. JSP2 自定义标签

    实现步骤 实现自定义标签的处理类继承javax.servlet.jsp.tagext.SimpleTagSupport,并重写doTag方法 建立标签库配置文件 在jsp中使用自定义标签 一个简单的标 ...

  2. jsp2自定义标签开篇

    在JSP2中开发标签库需要以下几个步骤: 1.开发自定义标签处理类: 2.建立一个*.tld文件,每个*.tld文件对应一个标签库,每个标签库可包含多个标签: 3.在JSP文件中使用自定义标签. 第一 ...

  3. Angular JS中自定义标签 属性绑定的解释

    看到自定义标签的文档时,文档作者解释的能力实在太弱,也可能是本人太笨,一下绕不过来. 看了一个stackoverflow答案,才算明白,在此贴出翻译,以供大家参考. .csharpcode, .csh ...

  4. Vue.js自定义标签属性并获取属性,及绑定img的src属性的坑

    一.定义属性: 一般定义属性都是为了动态的去获取属性的值,或者动态的设置属性的值,如果想仅仅是设置一个普通的属性,直接在便签上设置属性即可,就像使用html的title.name等属性一样,如< ...

  5. html自定义标签属性

    <a href="#" _asd="xxxx" onclick="test(event)">test</a> < ...

  6. HTML自定义标签与标签自定义属性

    大部分浏览器支持自定义HTML标签和为标准标签自定义属性,而且很多浏览器对这两种自定义行为的支持都很直接了当. 自定义HTML标签 在firefox.chrome这种现代浏览器里,自定义标签很简单,就 ...

  7. Java精选笔记_自定义标签

    自定义标签 自定义标签入门 什么是自定义标签 自定义标签可以有效地将HTML代码与Java代码分离,从而使不懂Java编程的HTML设计人员也可以编写出功能强大的JSP页面 JSP规范中定义了多个用于 ...

  8. JSP-Runoob:JSP 自定义标签

    ylbtech-JSP-Runoob:JSP 自定义标签 1.返回顶部 1. JSP 自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转 ...

  9. thymeleaf教程-springboot项目中实现thymeleaf自定义标签

    转载: http://www.9191boke.com/466119140.html    91博客网 开始: 在使用thymeleaf的过程中有时候需要公共部分渲染页面,这个时候使用自定义标签实现自 ...

随机推荐

  1. CSS 随记

    伪类选择符的顺序:L-V-H-A CSS提供了四种元素设置链接的颜色,包括:link.:visited.:hover.:active,它们的声明是有一定顺序的,我们简称这种顺序为L-V-H-A,即li ...

  2. Anaconda详细安装及使用教程(带图文)

    https://blog.csdn.net/ITLearnHall/article/details/81708148

  3. JS对象中属性的增删改查

    对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性 对象的分类:           1.内建对象                 -在ES标准中定义的对象,在任何的ES的实现中都可以 ...

  4. shell 从函数文件中调用函数的方法

    你可以把所有的函数存储在一个函数文件中 你可以把所有的文件函数加载到当前脚本或命令行 加载函数文件中所有函数的方法: source xxx.sh

  5. 记录以下mysql5.7在win使用Navicat无法链接的问题

    1.前提 系统:win1o0 局域网服务器:ubuntu18.04 mysql版本:5.7 问题描述: 在ubuntu18.04下的shell 中使用mysql -uroot  -p  是可以登陆的, ...

  6. 13.JMeter 参数化、检查点、集合点

    参数化:简单的来理解一下,我们录制了一个脚本,这个脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密码进 ...

  7. compareTo冒泡比较时间字符串

    public static void main(String[] args) { List<String> dates = new ArrayList<String>(); d ...

  8. Sqlplus常用指令

    一.ORACLE的启动和关闭1.在单机环境下2.在双机环境下二.Oracle数据库有哪几种启动方式1.startup nomount 非安装启动,这种方式启动下可执行:重建控制文件.重建数据库2.st ...

  9. 10个艰难的Java面试题与答案

    10个最难回答的Java面试题 这是我收集的10个较难回答的 Java 面试题.这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题.这些问题都是容易在各种 Java 面试中被问到 ...

  10. hbase报错: hbase.PleaseHoldException: Master is initializing

    查看hbase服务状态报错:   hbase(main)::> status ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master ...