JDBC+Servlet+JSP整合开发之27.JSP自定义标签

简介:
–简介 
–标签接口和类 
–标签的分类 
–标签实例
 
? HelloWorld 简单标签 
?有属性的标签 
?有标签体,有属性的标签 
?嵌套标签 
?循环标签
----------------------------------------------------------------------------
? 简介 
–标签在JSP页面中被调用 
–标签对应一个Java 处理类,来处理标签逻辑 
–好处是,是页面中尽量少写代码
? 标签接口和类 
–JSP所有标签都实现了javax.servlet.jsp.JspTag接口 
?这个接口有两个之间接口: 
? SimpleTag 
–JSP 2.0 中新增的接口 
? Tag 
–是一个经典的必须实现的接口 
–它有一个直接接口是IterationTag
image
? 标签的分类 
–不带属性和标签体的简单标签 
–不带标签体,但是有属性的标签 
–带标签体,且有属性的标签
? 标签实例 
–HelloWorld 简单标签 
–有属性的标签 
–有标签体,有属性的标签 
–嵌套标签 
–循环标签
先来看下如何实现简单的标签哈~
MyTag.java
此类实现了Tag接口
image 
MyTag.tld
image
MyTag.jsp
image
测试:
image
下面我们继承TagSupport抽象类,这样更简单一些哈~
MyTag2.java
image
MyTag.tld
image
MyTag2.jsp
image
测试:
image
下面我们输出一个下拉列表哈~
MyTag3.java
image
MyTag.tld
image
MyTag.jsp
image
测试:
image 
下面从数据库取出下拉列表内容,并将其定义为标签。
  image
MyTag.tld
image
MyTag.jsp
image
MyTag4.java
image
PositionService.java
image
ConnectionUtil.java
package com.michael.tag;    

import java.sql.Connection;    
import java.sql.DriverManager;    
import java.util.Properties;    

public  class ConnectionUtil {    

         /**    
         * @param args    
         */
    
         public  static  void main(String[] args) {    
                ConnectionUtil cu =  new ConnectionUtil();    
                System.out.println(cu.openConnection());    
        }    
         public Connection openConnection() {    
                String url = "";    
                String driver = "";    
                String user = "";    
                String password = "";    
                Properties prop =  new Properties();    
                 try {    
                        prop.load( this.getClass().getClassLoader().getResourceAsStream( "DBConfig.properties"));    
                        driver = prop.getProperty( "driver");    
                        url = prop.getProperty( "url");    
                        user = prop.getProperty( "user");    
                        password = prop.getProperty( "password");    
                        Class.forName(driver);    
                        Connection conn = DriverManager.getConnection(    
                                        url, user, password);    
                         return conn;    
                }  catch (Exception e) {    
                        e.printStackTrace();    
                }    
                 return  null;    
        }    
         public Connection getConnection(String driver, String url, String user,    
                        String password) {    
                 // Class.forName()    
                 try {    
                        Class.forName(driver);    
                         // DriverManager get connection    
                        Connection conn = DriverManager.getConnection(url, user, password);    
                         return conn;    
                }  catch (Exception e) {    
                        e.printStackTrace();    
                }    
                 return  null;    
        }    

         public Connection getConnection() {    
                 // Class.forName()    
                 try {    
                        Class.forName( "com.mysql.jdbc.Driver");    
                         // DriverManager get connection    
                        Connection conn = DriverManager.getConnection(    
                                         "jdbc:mysql://localhost:3306/jsp_db", "root", "963963");    
                        return conn;    
                } catch (Exception e) {    
                        e.printStackTrace();    
                }    
                return null;    
        }    

}
Position.java
image
DBConfig.properties
image
测试:
image
数据库中有四条记录,我们看下能不能取出来哈~
image
下面我们在数据库中增加一条记录测试一下哈~
  image
  image
以上四个标签都是没有属性的,下面我们测试有属性的标签,传递一个参数,循环的输出哈~
MyTag5.java
image
MyTag.tld
image
MyTag.jsp
image
测试:
image
下面测试有标签体的标签,我们可以实现一个接口或者继承一个类哈~
先看实现接口的方法
MyTag6.java
package com.michael.tag;    

import java.io.IOException;    

import javax.servlet.jsp.JspException;    
import javax.servlet.jsp.PageContext;    
import javax.servlet.jsp.tagext.BodyContent;    
import javax.servlet.jsp.tagext.BodyTag;    
import javax.servlet.jsp.tagext.Tag;    

public  class MyTag6  implements BodyTag{    
         private  int count;    
         private BodyContent bodyContent;    
         public  void setCount( int count) {    
                 this.count = count;    
        }    
         public  void doInitBody()  throws JspException {    
        }    

         public  void setBodyContent(BodyContent bodyContent) {    
                 this.bodyContent = bodyContent;    
        }    

         public  int doAfterBody()  throws JspException {    
                 if(count>1){    
                        count--;    
                         return  this.EVAL_BODY_AGAIN;    
                }    
                 return  this.SKIP_BODY;    
        }    

         public  int doEndTag()  throws JspException {    
                 try {    
                         if(bodyContent!= null)    
                        bodyContent.print(bodyContent.getEnclosingWriter());    
                }  catch (IOException e) {    
                        e.printStackTrace();    
                }    
                 return  this.EVAL_PAGE;    
        }    

         public  int doStartTag()  throws JspException {    
                 if(count>0){    
                         return  this.EVAL_BODY_INCLUDE;    
                }    
                 return  this.SKIP_BODY;    
        }    

         public Tag getParent() {    
                 return  null;    
        }    

         public  void release() {    
        }    

         public  void setPageContext(PageContext pageContext) {    
        }    

         public  void setParent(Tag tag) {    
        }    
}
MyTag.tld
image
MyTag.jsp
image
测试:
image
下面我们实现抽象类来测试有标签体的标签哈~
MyTag7.java
image
MyTag.tld
image
MyTag.jsp
image
测试:
image
在JSP2.0中还有一个新特征,具有SimpleTag接口,还有针对这个接口的实现类,如果使用这个接口就更方法了哈~
MyTag8.java
image
MyTag.tld
image
MyTag.jsp
image
测试:
image
下面我们实现针对这个接口的抽象类
MyTag9.java
image
MyTag.tld
image
MyTag.jsp
image
测试:
  image




本文转自redking51CTO博客,原文链接:http://blog.51cto.com/redking/305932 ,如需转载请自行联系原作者
相关文章
|
2月前
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
81 0
|
1月前
|
前端开发 Oracle 关系型数据库
关于使用SSM+JSP开发时setter、getter隐式调用问题的小结
本文主要分享了在使用SSM+JSP进行网站开发时,因忽视setter、getter的隐式调用问题而导致的常见bug及其解决方法。详细介绍了setter和getter的隐式调用时机,并给出了具体示例,帮助开发者避免类似问题。
42 11
|
4月前
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
|
4月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
40 3
|
4月前
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
38 1
|
4月前
|
SQL Java 数据库连接
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。通过映射机制,它可以自动处理对象与数据库表之间的转换,支持主流数据库,提高了代码的可移植性和可维护性。其核心接口包括 SessionFactory、Session 和 Transaction 等,通过它们可以执行数据库的 CRUD 操作。配置方面,需在项目中引入 Hibernate 及数据库驱动依赖,并创建 `hibernate.cfg.xml` 配置文件来设置数据库连接和 Hibernate 行为参数。
58 1
|
4月前
|
供应链 前端开发 Java
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
这篇文章通过一个服装库存管理系统的实例,展示了在Spring Boot项目中使用Ajax、JSON、layui、MVC架构和iframe等技术,涵盖了注册登录、权限管理、用户管理、库存管理等功能,并提供了系统运行环境和技术要求的详细说明。
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
|
4月前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
基于Servlet和JSP的Java Web应用开发指南
79 0
|
4月前
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
31 0
|
5月前
|
XML Java 数据格式
jsp和servlet有什么区别?
总的来说,JSP和Servlet都是创建动态Web应用程序的重要工具,但它们的使用依赖于特定的需求和上下文。
45 0