知识准备:
1.jstl需要的jar包
jstl-x.y.z.jar
2.标签库的声明
再jsp标签中:
(1)核心标签库声明:
@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"
(2)I18N格式标签库
@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/xml"
(3)SQL标签库声明
@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"
(4)XML标签库声明
@taglib prefix="xml" uri="http://java.sun.com/jsp/jstl/xml"
(5)函数标签库声明
@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"
对jstl的使用举例:
一、核心标签库(core)的操作:
第一:c:out表达式操作:
使用c:out标签直接输出结果:Hello jstl 其中属性value可以使用el标签对javabean的get方法进行调用(注意:调用成员就是方法)
第二:c:set标签设定某个特定对象的一个属性
c:set value="" var="" scope="可以写page/request/session/application"
例如:c:set value="zhou" var="uname"
相当于在jsp中:pageContent.setAttribute("uname","zhou");
也相当于:c:set value="zhou" var="uname" scope="session"
第三:删除某个变量或者属性:c:remove
第四:为bean属性赋值:
jsp:useBean id="user" class="zhou.User"
c:set target="美元符号{user}" property="uname" value="admin"
二、流程控制catch、if、choose、when、otherwise
第一:抛出嵌套在该标签内的异常c:catch
c:catch var="error"捕捉,c:out value="美元符号{error}"输出异常
第二:c:if用作条件判断:
c:set var="score" value="81"
/set
c:if test="美元符号{score>=80&&score<=90}"
表达式
/c:if
第三、迭代操作forEach、forTokens
page128
三、URL标签的使用:
1.c:import导入一个url相当于jsp:include page=""
2.c:redirect相当于转发:
c:url var="loginurl" value="login.jsp" scope="page"
c:param name="uid" value="zhou"/
/c:url a href="美元{loginurl}" 带参数的url /a
JSTL+EL+Hibernate实现查询网页显示示例:
由于此例是根据前面的示例来的,所以这里只写jsp文件【记得导包】
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!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>测试</title> </head> <body> <jsp:useBean id="dao" class="bean.CustomerDao"></jsp:useBean> <% pageContext.setAttribute("cuslist", dao.queryAllCustomer()); %> <table border="1"> <tr><td>id</td><td>name</td><td>phone</td></tr> <c:forEach var="cus" items="cuslist" varStatus="item"> <tr> <td>${cuslist[0].name}</td><td>${cuslist[0].phone}</td><td>${cuslist[0].customerID}</td> </tr> <tr> <td>${cuslist[1].name}</td><td>${cuslist[1].phone}</td><td>${cuslist[1].customerID}</td> </tr> </c:forEach> </table> </body> </html>
由于使用jstl标签时cus.属性会报错,暂时不知道什么原因,所以使用el标签:
${cuslist[1].name}
本来猜想会出现四条记录【循环,原本我就两条记录】,结果没有,虽然如此可以使用,但大量数据时,这里的下标就没法表示了。
这个问题先留着,做个标记。
结果: