jsp2自定义标签+属性

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

 1 public class GetParam extends SimpleTagSupport {
 2     private String driver;
 3     private String url;
 4     private String user;
 5     private String pwd;
 6     private String sql;
 7     private Connection conn = null;;
 8     private Statement stm = null;;
 9     private ResultSet rs = null;
10
11     public void setDriver(String driver) {
12         this.driver = driver;
13     }
14
15     public String getDriver() {
16         return this.driver;
17     }
18
19     public String getUrl() {
20         return url;
21     }
22
23     public void setUrl(String url) {
24         this.url = url;
25     }
26
27     public String getUser() {
28         return user;
29     }
30
31     public void setUser(String user) {
32         this.user = user;
33     }
34
35     public String getPwd() {
36         return pwd;
37     }
38
39     public void setPwd(String pwd) {
40         this.pwd = pwd;
41     }
42
43     public String getSql() {
44         return sql;
45     }
46
47     public void setSql(String sql) {
48         this.sql = sql;
49     }
50
51     @Override
52     public void doTag() throws JspException, IOException {
53         // TODO Auto-generated method stub
54         try {
55             // 注册驱动
56             Class.forName(driver);
57             // 建立连接
58             conn = DriverManager.getConnection(url, user, pwd);
59             stm = conn.createStatement();
60             rs = stm.executeQuery(sql);
61             // 获取页面输出流
62             Writer out = getJspContext().getOut();
63             // 设置表格
64             out.write("<table border=‘1‘ width=‘300‘>");
65             // 遍历
66             while (rs.next()) {
67                 out.write("<tr>");
68                 for (int i = 1; i < rs.getMetaData().getColumnCount(); i++) {
69                     out.write("<td>");
70                     out.write(rs.getString(i));
71                     out.write("</td>");
72                 }
73                 out.write("</tr>");
74             }
75             out.write("</table>");
76
77         } catch (SQLException | ClassNotFoundException ex) {
78
79             // TODO: handle exception
80             ex.printStackTrace();
81             throw new JspException("自定义标签错误" + ex.getMessage());
82         } finally {
83             try {
84                 if (rs != null) {
85                     rs.close();
86                 }
87                 if (stm != null) {
88                     stm.close();
89                 }
90                 if (conn != null) {
91                     conn.close();
92                 }
93             } catch (SQLException e) {
94                 // TODO: handle exception
95                 e.printStackTrace();
96             }
97         }
98     }
99 }

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

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

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

 1 <?xml version="1.0" encoding="GBK" ?>
 2 <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
 4     version="2.0">
 5     <!-- 描述 -->
 6     <description>A tag library exercising SimpleTag handlers.</description>
 7     <!-- 版本 -->
 8     <tlib-version>1.0</tlib-version>
 9     <!-- 短名 -->
10     <short-name>gotparam</short-name>
11     <!-- 指定标签库URI -->
12     <uri>http://tomcat.apache.org/gotparam</uri>
13     <tag>
14         <description>Outputs Hello, World</description>
15         <!-- 标签库名字 -->
16         <name>GetParam</name>
17         <!-- 标签处理类 -->
18         <tag-class>lee.GetParam</tag-class>
19         <!-- 标签体内容 -->
20         <body-content>empty</body-content>
21         <!-- 标签属性:driver -->
22         <attribute>
23             <name>driver</name>
24             <required>true</required>
25             <fragment>true</fragment>
26         </attribute>
27         <!-- 标签属性:url -->
28         <attribute>
29             <name>url</name>
30             <required>true</required>
31             <fragment>true</fragment>
32         </attribute>
33         <!-- 标签属性:user -->
34         <attribute>
35             <name>user</name>
36             <required>true</required>
37             <fragment>true</fragment>
38         </attribute>
39         <!-- 标签属性:pwd -->
40         <attribute>
41             <name>pwd</name>
42             <required>true</required>
43             <fragment>true</fragment>
44         </attribute>
45         <!-- 标签属性:sql -->
46         <attribute>
47             <name>sql</name>
48             <required>true</required>
49             <fragment>true</fragment>
50         </attribute>
51     </tag>
52 </taglib>

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

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib uri="http://tomcat.apache.org/gotparam" prefix="gotparam"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 </head>
10 <body>
11     <gotparam:GetParam user="root" url="jdbc:mysql://localhost:3306/house"
12         driver="com.mysql.jdbc.Driver" pwd="123456" sql="select * from house" />
13 </body>
14 </html>
时间: 2024-10-08 22:38:52

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

JSP2 自定义标签

实现步骤 实现自定义标签的处理类继承javax.servlet.jsp.tagext.SimpleTagSupport,并重写doTag方法 建立标签库配置文件 在jsp中使用自定义标签 一个简单的标签 文件目录结构 src/main/java |---- cn.ljl.javaweb.demo.jsp2taglib.servlet |---- HelloWorldServlet.java |---- cn.ljl.javaweb.demo.jsp2taglib |---- HelloWordT

jsp2自定义标签开篇

在JSP2中开发标签库需要以下几个步骤: 1.开发自定义标签处理类: 2.建立一个*.tld文件,每个*.tld文件对应一个标签库,每个标签库可包含多个标签: 3.在JSP文件中使用自定义标签. 第一步骤:开发自定义标签类.标签类需要继承javax.servlet.jsp.SimpleTagSupport:如果标签类包含属性,每个属性都要有getter和setter方法: 重写doTag()方法,这个方法负责生成页码内容. 比如以下代码: 1 package lee; 2 import java

jsp2自定义标签

在jsp中开发自定义标签的步骤: 1·   开发自定义标签处理类 2·   建立一个*.tid文件,每个tld标签对应一个标签库,每个标签库对应了多个标签 3·   在jsp中使用标签 ****开发自定义标签类注意事项: 1·  自定义的标签类应该继承一个父类javax.servlet.jsp.tagext.SimpleTagSupport 2·  如果自定义标签类包含属性,每个属性都应该具有对应的getter/setter方法 3·  重写doTag()方法这个方法负责生成页面的内容 例子:

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

大部分浏览器支持自定义HTML标签和为标准标签自定义属性,而且很多浏览器对这两种自定义行为的支持都很直接了当. 自定义HTML标签 在firefox.chrome这种现代浏览器里,自定义标签很简单,就像标准的标签那样写就可以了,而且CSS和JavaScript存取自定义标签和标准标签并无二致. 1 2 3 4 5 6 7 8 9 <foo id="idFoo" style="color:red" data-bar="bar">foo

JSP2.0自定义标签

---| SimpleTag 接口 定义了标签处理类的生命周期方法.doTag() -----| SimpleTagSupport 类 全部实现了SimpleTag接口的方法,因此后面我们只需要继承并重写该类即可. 实现自己的if-.else标签 目标: 1 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 2 3 <c:choose> 4 5 <c:when

JSP2的自定义标签和方法

Jsp2的自定义标签 Jsp2 开发标签库的几个步骤: 开发自定义标签处理类. 建立一个*.tld文件,每个tld文件对应一个标签库,每个标签库可对应多个标签. 在jsp文件中使用自定义标签 空标签 开发自定义标签类 自定义标签类应该继承一个父类javax.servlet.jsp.tagext.SimpleTagSupport: 如果标签类包含属性,每个属性都有对应的getter    和settter方法: 重写doTag()方法,这个方法负责生成页面内容 建立一个简单的自定义标签,在页面上输

JSP2 的自定义标签

在 JSP 中开发标签库只需如下几个步骤 1.开发自定义标签处理类 2.建立一个 *.tld 文件,每个 *.tld 文件对应一个标签库,每个标签库可包含多个标签 3.在 JSP 文件中使用自定义标签 开发自定义标签类 在 JSP 页面使用一个简单的标签时,底层实际上由标签处理类提供支持,从而可以通过简单的标签来封装复杂的功能. 自定义标签类应该继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport,除此之外,JSP 自定义标签还有如下要求: 1.如果标

Jsp2.0自定义标签(第三天)——EL表达式的使用

1.提出问题: 我们经常会看到这样的jsp页面代码: 浏览器显示: 为什么会在页面输出:Hello World  ,${per}究竟是如何找到“Hello World”的呢? 2.分析问题: 要想解决上述疑问,首先要试试自己能不能自定义出上面的标签. 比如我想定义<myout:demo print="${per}"/>拥有打印出EL表达式值的功能. 同前面几章一样,自定义标签我分为几个部分: 第一部分:定义标签的地方(*.tld). <?xml version=&qu

JSP学习笔记(六):自定义标签-JSP2.x

一.SimpleTag 接口 和 SimpleTagSupport 类 SimpleTag 接口只有一个 doTag()方法,同时支持参数与标签体.一般实现 SimpleTagSupport 类即可. 二.简单实现 <span style="font-family:Arial;">package taglib.jsp_two; import java.io.IOException; import javax.servlet.jsp.JspException; import