JavaWeb_JSTL_表达式操作
JSTL_表达式操作
- 1.JSTL 全名为 JavaServer Pages Standard Tag Library,目前最新的版本为 1.1。JSTL 是由 JCP (Java Community Process)所指定的标准规格,它主要提供给 Java Web 开发人员一个标准通用的标签函数库。
- 2.JavaServer Pages Standard Tag Library (1.1 ),它的中文名称为 JSP 标准标签函数库。
- 3.JSTL 所提供的标签函数库主要分为五大类:
1)核心标签库 (Core tag library)
2)I18N 格式标签库 (I18N-capable formatting tag library)
3)SQL 标签库 (SQL tag library)
4)XML 标签库 (XML tag library)
5)函数标签库 (Functions tag library)
较为常用的是核心标签库,I18N 在学国际化时再讲。另外,JSTL 也支持 EL(Expression Language)语法,例如:在一个标准的 JSP 页面中可能会使
用到如下的写法:
<%= userList.getUser().getPhoneNumber() %>
使用 JSTL 搭配传统写法会变成这样:
<c:out value="<%= userList.getUser( ).getPhoneNumber( ) %>" />
使用 JSTL 搭配 EL,则可以改写成如下的形式:
<c:out value="${userList.user.phoneNumber}" />
- 4.安装和使用
1)把 jstl.jar 和 standard.jar 文件复制到 Web 应用的WebContent下WEB-INF下的lib的目录下即可。
2)在 JSP 页面使用方法如下,先导入:在 JSP 中要使用 JSTL 中的核心标签库时,必须使用< %@ taglib %>指令,并且设定 prefix 和 uri 的值。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- 5.核心标签库
1)< c:out>主要用来显示数据的内容,就像是 < %= scripting-language %> 一样。
说明:一般来说,< c:out>默认会将 <、>、’、” 和 & 转换为 & lt;、& gt;、& #039;、& #034; 和 & amp;。假若不想转换时,只需要设定<c:out>的 escapeXml 属性为 fasle 就可以了。
2)< c:set>主要用来将变量储存至 JSP 范围中或是 JavaBean 的属性中。
语法 1:将 value 的值储存至范围为 scope 的 varName 变量之中。
语法 2:将本体内容的数据储存至范围为 scope 的 varName 变量之中。
语法 3:将 value 的值储存至 target 对象的属性中。
语法 4:将本体内容的数据储存至 target 对象的属性中。
说明:使用< c:set>时,var 主要用来存放表达式的结果;scope 则是用来设定储存的范围,例如:假若 scope=“session”,则将会把数据储存在 session 中。如果<c:set>中没有指定 scope 时,则它会默认存在 Page 范围里。
3)< c:remove>主要用来移除变量。
语法:< c:remove var=“varName” [scope="{ page|request|session|application }"] />
说明:< c:remove>必须要有 var 属性,即要被移除的属性名称,scope 则可有可无。 - 6.示例代码
jstl.jsp
<%@page import="com.xs.javaweb.Customer"%>
<%@ 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>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h4>c:remove :移除指定域对象的指定属性值。</h4>
<c:set value="1997-09-01" var="date" scope="session"></c:set>
date:${sessionScope.date }
<br><br>
<c:remove var="date" scope="session"/>
date:--${sessionScope.date }
<br><br>
<h4>c:set :可以为域对象赋属性值,其中value属性支持EL表达式;还可以为域对象中的JavaBean的属性赋值,target,value都支持EL表达式。</h4>
<c:set var="name" value="XS" scope="page"></c:set>
<%--
pageContext.setAttribute("name", "XS");
--%>
name:${pageScope.name }
<br><br>
<c:set var="subject" value="${param.subject}" scope="session"></c:set>
subject:${sessionScope.subject }
<br><br>
<%
Customer customer = new Customer();
customer.setId(1001);
request.setAttribute("customer", customer);
%>
ID:${requestScope.customer.id }
<c:set target="${requestScope.customer }" property="id" value="${param.id }"></c:set>
<br>
ID:${requestScope.customer.id }
<br><br>
<h4>c:out :可以对特殊字符进行转换。</h4>
<%
request.setAttribute("book", "<<Java>>");
%>
book:${requestScope.book }
<br>
<br>
book:<c:out value="${requestScope.book }" default="booktitle"></c:out>
</body>
</html>