JSP 自定义标签查询数据

1. 写一个 Dao 层方法 查询数据方法要写成静态 以便直接调用

    public static List<Category> findAllCategories() throws SQLException{
        String sql = "select * from category";
        QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
        return qr.query(sql, new BeanListHandler<Category>(Category.class));
    }

2. 创建一个.tld 文件

<?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>JSTL 1.1 functions library</description>
  <display-name>JSTL functions</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>myfn</short-name>
  <uri>http://www.zhangshaocui.cn</uri>   <!-- 找不到文件时所访问的路径 -->

  <function>
    <description>
      Tests if an input string contains the specified substring.
    </description>
    <name>findAllCategories</name>     <!-- 所调用的方法名 -->
    <function-class>com.yinhe.dao.CategoryDao</function-class>  <!--  所调用的方法的全路径 -->
    <function-signature>java.util.List findAllCategories()</function-signature>  <!-- 返回值类型与方法名 -->
  </function>
  </taglib>

3. 在前台用 c 标签 循环出来所有数据


<%@taglib prefix="myfn" uri="http://www.zhangshaocui.cn"%>

    <c:forEach var="category" items="${myfn:findAllCategories()}">                                            
        <a href="product_list.jsp">${category.cname}<span class="sr-only">(current)</span></a>
    </c:forEach>