自定义标签的开发与应用

来源:互联网 发布:la域名收录怎么样 编辑:程序博客网 时间:2024/05/17 21:40
在JSTL提供了四个标签库(核心标签库、国际化标签库、数据库标签库和XML标签库),涉及到了 几十个标签。虽然这些标签可以完成比较复杂的工作,但它们仍然无法满足程序中的特殊需求。因此,就 需要用户根据自己的需要来定制JSP标签,这种由用户自己实现的JSP标签被称为自定义标签。

自定义标签和JSTL中的标签从技术上看没有任何区别,可以将这些标签统称为JSP标签。JSP标签在  JSP页面中通过XML语法格式被调用,当JSP引擎将JSP页面翻译成Servlet时,就将这些调用转换成执  行相应的Java代码。也就是说,JSP标签实际上就是调用了某些Java代码,只是在JSP页面中以另外一种  形式(XML语法格式)表现出来。

以下是博主自己的小实例希望能帮到你们

写一个查询商品类别方法 前台通过自定义标签调用此方法即可显示

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));}

在WEB-INF下创建以.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.yinheedu.com</uri><function><description>     select all categories   </description><name>findAllCategories</name><function-class>com.yinhe.dao.CategoryDao</function-class><function-signature>java.util.List findAllCategories()</function-signature></function></taglib>

前台页面代码<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@taglib prefix="myfn" uri="http://www.yinheedu.com"%><!DOCTYPE html><script>$(function() {$.ajax({url : "${pageContext.request.contextPath}/category?method=findAllCategory",type : "post",dataType : "json",success : function(data) {var str = "";/*for (var i = 0;i <data.length;i++){str += "<li><a href='product_list.jsp'>"+data[i].cname+"</a></li>";$("#ul").html(str);} */$.each(data, function(i, n) {str += "<li><a href='${pageContext.request.contextPath}/product?method=findCategoryProduct&&cid="+n.cid+"'>"+ n.cname + "</a></li>";$("#ul").html(str);});},error : function(error) {alert(status.status);}});});</script><!-- 登录 注册 购物车... --><div class="container-fluid"><div class="col-md-4"><img src="img/logo2.png" /></div><div class="col-md-5"><img src="img/header.png" /></div><div class="col-md-3" style="padding-top:20px"><ol class="list-inline"><c:choose><c:when test="${empty sessionScope.user}"><li><a href="login.jsp">登录</a></li><li><a href="register.jsp">注册</a></li></c:when><c:otherwise><li>欢迎!${sessionScope.user.username}</li><li><a href="${pageContext.request.contextPath}/user?method=logout">退出</a></li></c:otherwise></c:choose><li><a href="cart.jsp">购物车</a></li><li><a href="${pageContext.request.contextPath}/mlogin/order?method=list&&uid=${sessionScope.user.uid}">我的订单</a></li></ol></div></div><!-- 导航条 --><div class="container-fluid"><nav class="navbar navbar-inverse"><div class="container-fluid"><!-- Brand and toggle get grouped for better mobile display --><div class="navbar-header"><button type="button" class="navbar-toggle collapsed"data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"aria-expanded="false"><span class="sr-only">Toggle navigation</span> <spanclass="icon-bar"></span> <span class="icon-bar"></span> <spanclass="icon-bar"></span></button><a class="navbar-brand" href="${pageContext.request.contextPath}/">首页</a></div><div class="collapse navbar-collapse"id="bs-example-navbar-collapse-1"><ul class="nav navbar-nav" id="ul"><%-- <c:forEach var="category" items="${myfn:findAllCategories()}"varStatus="status"><c:choose><c:when test="${status.first}"><li class="active"><a href="product_list.jsp">${category.cname}<spanclass="sr-only">(current)</span></a></li></c:when><c:otherwise><li><a href="product_list.jsp">${category.cname}</a></li></c:otherwise></c:choose></c:forEach> --%></ul><form class="navbar-form navbar-right" role="search"><div class="form-group"><input type="text" class="form-control" placeholder="Search"></div><button type="submit" class="btn btn-default">Submit</button></form></div></div></nav></div>