在大型项目开发中,系统架构师会使用分层的思想设计项目,处于表示层的JSP页面的功能就是显示数据。如果嵌入大量java代码,对于不熟悉java编程的网页设计师来说是件麻烦事,不利于项目的开发。
JSTL,中文为JSP标准标签库。可以应用于基本输入输出,流程控制等等。JSTL提供的标签库主要分为五大类,如下:
名称 | 推荐前缀 | URI | 范例 |
---|---|---|---|
核心标签库 | c | http://java.sun.com/jsp/jstl/core | |
I18N标签库 | fmt | http://java.sun.com/jsp/jstl/fmt | fmt:formatDate |
SQL标签库 | sql | http://java.sun.com/jsp/jstl/sql | sql:query |
XML标签库 | x | http://java.sun.com/jsp/jstl/xml | |
函数标签库 | fn | http://java/sun.com/jsp/jstl/functions | fn:split |
使用JSTL标签库,必须使用taglib指令,以core标签库为例,语法如下:
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
taglib是指令,prefix是前缀,该代码是引入core标签库,并指定标签的前缀。
核心标签库,又称core标签库,该库包括与变量,控制流以及访问基于URL的资源相关的标签。
作用是显示内容,语法如下:
<c:out value = "显示的内容"></c:out>
例子:
outExample.java
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>outExample</title>
</head>
<body>
<%
session.setAttribute("msg", "hello world!");
%>
<c:out value = "${msg}">
</c:out>
</body>
</html>
作用是对变量或者JavaBean中的变量属性赋值。语法如下:
<c:set></c:set>
例子:
sexExample.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>setExample</title>
</head>
<body>
<c:set value = "这是示例" scope = "session" var = "msg"><!-- 将这是示例添加到session里面,命名为msg -->
</c:set>
<c:out value = "${msg}">
</c:out>
</body>
</html>
作用是删除scope中的变量
<c:remove></c:remove>
例子:
removeExample.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>removeExample</title>
</head>
<body>
<%
session.setAttribute("msg", "这是示例");
%>
<c:remove var = "msg" scope = "session">
</c:remove>
<c:out value = "${msg}">
</c:out>
</body>
</html>
基本语法是:
<c:if test = "${判断条件}">
...
</c:if>
该标签里面还有var和scope属性,代表判断结果的变量名,以及变量所在的范围。
例子:
ifExample.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>ifExample</title>
</head>
<body>
<%
session.setAttribute("score", 95);
%>
<c:if test = "${score >= 80 }">优秀</c:if>
<c:if test = "${score <80 }">不优秀</c:if>
</body>
</html>
这三个标签通常一起用,类似于“if。。。else if”语句,基本语法如下:
<c:choose>
<c:when test = "${条件1}">体</c:when>
<c:when test = "${条件2}">体</c:when>
<c:when test = "${条件N}">体</c:when>
<c:otherwise>体</c:otherwise>
</c:choose>
功能是将集合中的成员顺序浏览一遍,基本语法如下:
<c:forEach var = "元素名" items = "集合名" begin = "起始" end = "结束" step = "步长">
体
</c:forEach>
例子:
<c:forEach var = "stu" items = "${stus}">
${stu}
</c:forEach>
表示将stus集合进行遍历,每个元素起名为stu,显示出来。
例子:
forEachExample
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import = "java.util.*" %>
<html>
<head>
<title>forEachExample</title>
</head>
<body>
<%
ArrayList al = new ArrayList();
al.add("张三");
al.add("张四");
al.add("李四");
session.setAttribute("stus", al);
%>
<a href = "forEachExample2.jsp">到达forEachExample2.jsp</a>
</body>
</html>
forEachExample2.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>forEachExample2</title>
</head>
<body>
打印ArrayList中的内容:<hr>
<c:forEach items = "${stus}" var = "stu">
${stu }
</c:forEach>
</body>
</html>
其他标签库使用的较少,此处不作详述。
摘自《Java Web 开发与应用》,主编郭克华,副主编宋虹,清华大学出版社。