EL表达式和JSTL标签
1.EL表达式
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<html>
<head><title>EL有效表达式</title></head>
<body>
${true}
<br>
${23+15.28}
<br>
${12>10}
<br>
${(12>10)&&(a!=b)}
</body>
</html>
2.JSTL标签库
JSP标准标记库(JSP Standard Tag Library,JSTL):是一个实现Web应用程序中常用功能的定制标记库集,功能包括输出、程序流程控制、数据格式化、XML操作以及数据库访问等。
JSTL标记库:实现大量服务器端Java应用程序常用的基本功能。通过为典型表示层任务(如数据格式化和迭代或条件内容)提供标准实现,JSTL使JSP作者可以专注与特定应用程序的开发需求,而不是为这些通过操作多次开发
JSTL的功能标记库分类
JSTL的使用步骤
在WEB应用中使用JSTL需要以下步骤:
将JSTL所需的jar添加到WEB工程的类路径---javaEE5之后jstl并入javaee库中
在JSP页面中使用taglib指令引入标记库
使用JSTL标记,完成特定功能。
JSTL举例--- 使用 c标签输出
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello Word</title>
</head>
<body>
<center>JSTL测试<c:out value="${1+1}"/></center>
</body>
</html>
Core标记库
core标记库:用来实现WEB应用中最常用的功能,在JSTL的5个标记库中,core标记库是最基础的标记库,其他标记库都是在core标记库的协同下来实现自身功能。Core标记库内容
通用标记<c:out>标记
<c:out>标记:负责把变量或表达式的计算结果输出,其功能与调用out.println()基本一致
通用标记<c:set>标记
<c:set>标记:用于在某个范围(page、request、session或application)里面设置特定的变量,或者设置某个已经存在的Javabean的属性,其功能类似于<%request.setAttribute("name",value)%>
当不包含标记体内容时,语法如下:
<c:set value="value" var="varName" [scope={page|request|session|application}] />
其中:属性var为设置的变量的名称,value为变量的值,scope为可选属性,表示设置变量的范围,缺省为page.
当标记包含体内容时,<c:set>语法如下:<c:set var="varName" [scope={page|request|session|application}]]>body content</c:set>
由于包含体内容时,将采用体内容作为变量的初始值,因此,此时标记不能带有属性value。
通用标记<c:remove>标记
<c:remove>:删除某个变量,类似于<%session.removeAttribute("name")%>
它的语法格式为:
<c:remove var="varName" [scope="{page|request|session|application}"]/>
其中:属性var为要删除的变量的名称
例:
<%@page contentType=“text/html”%>
<%@page pageEncoding=“UTF-8”%>
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
<html>
<head>
<title>JSTL:使用c:set</title>
</head>
<body bgcolor=“#FFFFFF”>
<!-设置一个属性,然后输出它->
<br>
<c:set var=“maxCount” value=“100”/>
<c:out value=“${maxCount}”/>
<!-设置属性时,把它的值放在标记的body中。->
<br><c:set var=“password” >
123456
</c:set>
<c:out value=“${password}”/>
<!-设置变量,并且指定它们的范围->
<c:set value=“20” var=“sessionAttr” scope=“session”/>
<c:remove var=“sessionAttr”/>
<br><c:out value =“${sessionAttr}”/>
</body>
</html>
通用标记<c:catch>标记
<c:catch>:捕捉嵌套在它内部的标记和脚本所抛出的异常。类似于<%try{}catch{}%>
它的语法格式为:
<c:catch[var ="varName"]>
nested actions
</c:catch>
其中可选属性var用来保存捕捉到的异常信息。
例:
<%@page contentType=“text/html”%>
<%@page pageEncoding=“UTF-8”%>
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
<html>
<head>
<title>JSTL:catch的使用</title>
</head>
<body bgcolor=“#FFFFFF”>
<c:catch var=“error”>
<%
Integer.parseInt(“hello”);
%>
</c:catch>
<hr>异常:
<c:out value=“${error}”/>
<hr>异常 exception.getMessage=
<c:out value=“${error.message}”/>
</body>
</html>
Core条件标记
Core标记中提供了以下四个标记来帮助JSP开发人员实现分支处理,它们是:<c:if>、<c:choose>、<c:when>和<c:otherwise>
<c:if>标记
<c:if>标记:类似于编程语言中的if - else语句。
格式:
<c:if test="$param.role==1" var="user" scope="session">
It is admin.
</c:if>
功能:若参数role的值为1,则显示It is admin,并将判断结果true保存在user中
choose、when、otherwise标记
<c:choose><c:when><c:otherwise>标记:用于实现复杂判断,类似于if-else-if语句
格式举例
<c:choose>
<c:when test="${param.sample==1}">
not 2,it is 1
</c:when>
<c:when test="${param.sample==2}">
not 2
</c:when>
<c:otherwise>
not 1,2
<c:otherwise>
</c:choose>
core迭代标记
Core标记中的迭代标记有两个:<c:forEach>、<c:forTokens>.<c:forEach>标记:作用类似于for循环语句。
格式举例:
<c:forEach var=“i” begin=“1” end=“10” step=“1”>
${i} <br/>
</c:forEach>
<c:forTokens>标记
<c:forTokens>:可以根据某个分隔符来分隔指定的字符串
格式举例
<c:forTokens items=“aa,bb,cc,dd” bengin=“0” end=“2” step=“2” delims=“,” var=“aValue”>
${aValue}
</c:forTokens>
Core的URL操作标记
Core标记包含三个URL操作有关的标记,分别是:
<c:import>和<c:url>、<c:redirect>。
另外还有一个辅助标记<c:param>.
import标记
<c:import>:包含另一个jsp页面到本页面来。格式举例:
<c:import url=“/MyHtml.html” var=“thisPage”>
<c:import url=“www.aa.com/MyHtml.html” var=“thisPage”>
url标记
<c:url>:用于得到一个URL地址
格式举例
<c:url value=“/MyHtml.html” var=“urlPage”/>
<a href=“${urlPage}”>链接</a>
<c:redirect>标记
<c:redirect>:用于页面的重定向
格式举例:
<c:redirect url=“/MyHtml.html” />
param标记
<c:param>:用来为包含或重定向的页面传递参数,一般和<c:import>和<c:redirect>配合使用
格式举例
<c:redirect url=“/MyHtml.jsp” />
<c:param name=“username” value=“Tom”/>
</c:redirect>
Fomat标记库
说明:Fomat标记库用于实现程序的国际化和本地化。
国际化:是指应用程序所具有的一种功能特性,具有国际化特性的应用程序能够支持不同的语言以及不同格式的日期、时间、货币等信息,而无需软件修改。
本地化:是针对某一本地特性,如语言、文化、习俗等特殊需求来设计和改造软件的过程、和特殊的市场需求制造或改造产品的过程,用户在使用得当地本地化的产品时,可以使用其自己的语言和文化习惯与产品互动。
国际化的应用程序不需要任何改动即可实现本地化支持。