jsp2自定义标签+属性
前面说过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自定义标签+属性的更多相关文章
- JSP2 自定义标签
实现步骤 实现自定义标签的处理类继承javax.servlet.jsp.tagext.SimpleTagSupport,并重写doTag方法 建立标签库配置文件 在jsp中使用自定义标签 一个简单的标 ...
- jsp2自定义标签开篇
在JSP2中开发标签库需要以下几个步骤: 1.开发自定义标签处理类: 2.建立一个*.tld文件,每个*.tld文件对应一个标签库,每个标签库可包含多个标签: 3.在JSP文件中使用自定义标签. 第一 ...
- Angular JS中自定义标签 属性绑定的解释
看到自定义标签的文档时,文档作者解释的能力实在太弱,也可能是本人太笨,一下绕不过来. 看了一个stackoverflow答案,才算明白,在此贴出翻译,以供大家参考. .csharpcode, .csh ...
- Vue.js自定义标签属性并获取属性,及绑定img的src属性的坑
一.定义属性: 一般定义属性都是为了动态的去获取属性的值,或者动态的设置属性的值,如果想仅仅是设置一个普通的属性,直接在便签上设置属性即可,就像使用html的title.name等属性一样,如< ...
- html自定义标签属性
<a href="#" _asd="xxxx" onclick="test(event)">test</a> < ...
- HTML自定义标签与标签自定义属性
大部分浏览器支持自定义HTML标签和为标准标签自定义属性,而且很多浏览器对这两种自定义行为的支持都很直接了当. 自定义HTML标签 在firefox.chrome这种现代浏览器里,自定义标签很简单,就 ...
- Java精选笔记_自定义标签
自定义标签 自定义标签入门 什么是自定义标签 自定义标签可以有效地将HTML代码与Java代码分离,从而使不懂Java编程的HTML设计人员也可以编写出功能强大的JSP页面 JSP规范中定义了多个用于 ...
- JSP-Runoob:JSP 自定义标签
ylbtech-JSP-Runoob:JSP 自定义标签 1.返回顶部 1. JSP 自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转 ...
- thymeleaf教程-springboot项目中实现thymeleaf自定义标签
转载: http://www.9191boke.com/466119140.html 91博客网 开始: 在使用thymeleaf的过程中有时候需要公共部分渲染页面,这个时候使用自定义标签实现自 ...
随机推荐
- leetcode上的一些动态规划
70-爬楼梯 思路:该问题可以理解为经典的“斐波那契数列”问题,但这里需要用动规实现,递归会超时 class Solution { public: int climbStairs(int n) { v ...
- 【扩展lucas定理】
洛谷模板题面:https://www.luogu.org/problemnew/show/P4720 扩展卢卡斯被用于解决模数为合数情形下的组合数问题. 首先我们把模数mod质因数分解,解决模每个素数 ...
- vue-cesium中经纬度写反了,报错
vue-cesium中经纬度写反了,报错 [Vue warn]: Invalid prop: custom validator check failed for prop "position ...
- SpringMVC_HandlerMethodArgumentResolver 实践
HandlerMethodArgumentResolver 是什么? 就是用于解析参数的一个接口,springMVC(4.1)会直接调用这个接口的方法,对参数进行一定的解析.比如会在 Invocab ...
- Java中的集合和线程安全
通过Java指南我们知道Java集合框架(Collection Framework)如何为并发服务,我们应该如何在单线程和多线程中使用集合(Collection). 话题有点高端,我们不是很好理解.所 ...
- Linux的各个发行版本(一)
三大流派 1.Slackware SUSE Linux Enterprise Server (SLES) OpenSuse桌面 2.debian 迄今为止最遵循GNU规范的Linux系统 Ubuntu ...
- 1、eureka注册中心单机
Spring Cloud 2.x系列之 eureka注册中心单机 一.简介 Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块.而Spring Clo ...
- .net EntityFramework dbContext 如何实例化
1 .DbContext怎么在Asp.mvc中使如何实例化 public class Repository { //实例化EF容器:有弊端.一个线程里可能会创建多个DbContext //DbCont ...
- 微信小程序のwxs语言
一.wxs介绍 wxs是微信小程序自身的脚本语言,用来过滤和计算.wxs可以通过文件可模块标签来定义 文件需要.wxs后缀文件 二.实例 <wxs module="test1" ...
- Docker部署web环境之总结篇
3. 问题总结 问题总结1: 数据库容器时区问题以及环境变量的安全控制 docker-compose.yml文件中的环境变量,可以配置的变量方法有两种: 方法一:docker-compose.yml文 ...