jstl表达式

一、jstl表达式的定义

jstl即JavaServer Pages Standard Tag Library,JSP标准标签库。

二.为什么使用jstl表达式

其实不使用jst也可以实现相应的功能,但是如果不使用的话就需要写大量java程序到jsp中,这使得jsp异常的复杂,令人抓狂。因此使用jstl可以使得jsp代码变得简洁美观,使得代码维护起来更加容易。

三、如何使用jstl

1.jstl的配置

(1)导入standard.jar和jstl.jar。

(2)在JSP页面上引入 JSTL 的引用,即:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

2.常用标签解析(核心标签)
 

编号标签描述
1<c:out

类似<%= ...>,但仅对于表达式使用。

2<c:set在“范围”中设置表达式求值的结果
3<c:remove

删除范围变量(从指定的特定范围中)

4<c:catch

捕捉发生在其主体中的任何可抛出对象,并可选地暴露它。

5<c:if

简单的条件标签,如果提供的条件为真,则对其主体进行评估

6<c:choose

 简单的条件标签,用于建立互斥条件操作的上下文,标记为<when>和<otherwise>。

7<c:when

如果条件评估为true,则包含<choose>的子标签。

8<c:otherwise

 <when>标签之后的<choose>子标签,只有当所有先前条件都被评估为false时才运行。

9<c:import

 检索绝对或相对URL,并将其内容公开到页面,"var"中的字符串或"varReader"中的"Reader"。

10<c:forEach

基本的迭代标签,接受许多不同的集合类型,并支持子集和其他功能。

11<c:forTokens

迭代令牌,由指定的分隔符来分隔。

12<c:param

将参数添加到包含“import”标签的URL。

13<c:redirect

重定向到新的URL

14<c:url

创建可选查询参数的URL

 

 基本语法:<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>(1)<c:out>:用于在JSP中显示数据,和<%= ... >功能相似

(2)<c:set>:用于保存数据

基本语法:<c:set var="<string>" value="<string>" target="<string>" property="<string>" scope="<string>"/>

(3)<c:remove>:标签用于移除一个变量

基本语法:<c:remove var="<string>" scope="<string>"/>

(4)<c:catch> 标签:捕获其主体中发生的任何Throwable异常,并可选地公开它。它用于错误处理,并更加优雅地处理该问题。

基本语法:<c:catch var="<string>">... </c:catch>

属性

<c:catch>标签具有以下属性 -

属性描述必需默认
var要保存java.lang.Throwable变量的名称,如果由主体中的元素抛出。None

(5)<c:if>标签:判断表达式的值,如果表达式的值为 true 则执行其主体内容

基本语法:<c:if test="<boolean>" var="<string>" scope="<string>">...</c:if>

(6)<c:choose>、<c:when>、<c:otherwise>:

<c:choose>标记的作用就像一个Java的switch语句,它允许在多个替代方案之间进行选择。 在switch语句中有case语句,而<c:choose>标签具有<c:when>标签,作用效果一样。 就像switch语句中的default子句指定一个默认动作一样,<c:choose><c:otherwise>作为默认子句。

属性

  • <c:choose>标签没有任何属性。
  • <c:when>标签具有以下列出的一个属性。
  • <c:otherwise>标签没有任何属性。

<c:when>标签具有以下属性 -

属性描述必需默认
test评估条件None

这三个标签一般是配合使用,类似if{...}else if{...}else{....}

语法格式:

​​​​<c:choose>
    <c:when test="<boolean>">
        ...
    </c:when>
    <c:when test="<boolean>">
        ...
    </c:when>
    ...
    ...
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>

(7)<c:import>标签:检索一个绝对或相对 URL,然后将其内容暴露给页面,和<jsp:include>功能相似。

语法格式:

<c:import
   url="<string>"
   var="<string>"
   scope="<string>"
   varReader="<string>"
   context="<string>"
   charEncoding="<string>"/>

 

(8) <c:forEach>:基础迭代标签,接受多种集合类型。它封装了Java中的for,while,do-while循环。

这个标签是通过脚本嵌入Java实现forwhile循环的一个好的选择。 <c:forEach>标签是一个常用的标签,使用它来迭代一组对象。 <c:forTokens>标签用于将字符串分割成令牌,并遍历每个令牌。

属性

<c:foreach>标签具有以下属性 -

属性描述必需默认
delims用作分隔符的字符None

基本语法:

<c:forEach
    items="<object>"
    begin="<int>"
    end="<int>"
    step="<int>"
    var="<string>"
    varStatus="<string>">

(9)<c:url>: 使用可选的查询参数来创造一个URL,当某个URL地址依据不同条件修改时,就能体现出<c:url>标签的真正作用了

(10)<c:param>:用来给包含或重定向的页面传递参数

(11)<c:redirect>:通过促进自动URL重写将浏览器重定向到另一个URL,它支持上下文相关URL,并且还支持<c:param>标签。

属性

<c:redirect>标签具有以下属性 -

属性描述必需默认
url将用户浏览器重定向到的URLNone
context/之后是本地Web应用程序的名称当前应用

语法:<c:redirect url="<string>" context="<string>"/>

四、延伸

jstl也提供了格式化标签、SQL标签、xml标签、jstl函数,但这些标签并不常用,这里不一一赘述,当用到时自行查找即可。

格式化标签:(<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>)

SQL标签:(<%@ taglib prefix="sql” uri="http://java.sun.com/jsp/jstl/sql" %>)

jstl函数(<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>)

五、EL概述

JSP表达式语言(EL)使得可以轻松访问存储在JavaBeans组件中的应用程序数据。JSP EL允许用来创建算术逻辑表达式。 在JSP EL表达式中,可以使用整数,浮点数,字符串,布尔值的内置常量为truefalse,以及null值。

JSP EL允许为这些属性值指定一个表达式。JSP EL的简单语法如下 -

${expr}

这里expr指定表达式本身。JSP EL中最常见的操作符是:.[]。 这两个运算符用来访问Java Beans和内置JSP对象的各种属性。

例如,上面的语法<jsp:setProperty>标签可以写成一个表达式,如 -

<jsp:setProperty name = "box" property = "perimeter" 
   value = "${2*box.width+2*box.height}"/>

 

如要停用EL表达式的评估计算,可设置page指令的isELIgnored属性如下:

<%@ page isELIgnored = "true" %>

此属性的有效值为truefalse。 如果设置为true,EL表达式在静态文本或标签属性中显示时将被忽略。 如果为false,EL表达式将由容器进行评估。

EL中的基本运算符

JSP表达式语言(EL)支持Java支持的大多数算术和逻辑运算符。下表列出了最常用的运算符 -

编号运算符描述
1.访问一个bean属性或Map的项
2[]访问数组或List元素
3()组合子表达式以更改评估顺序
4+相加
5-减去或取反一个值
6*乘法
7/div除法
8%mod求模
9==eq测试等于
10!=ne测试不等于
11<lt测试小于
12>gt测试大于
13<=le测试小于或等于
14>=ge测试大于或等于
15&&and测试逻辑与
16or测试逻辑或
17!not一元布尔互补
18empty测试空变量值

JSP EL隐式对象

JSP表达式语言支持以下隐式对象 -

编号隐式对象描述
1pageScope来自页面范围的范围变量
2requestScope来自请求范围的范围变量
3sessionScope会话范围的范围变量
4applicationScope应用范围的范围变量
5param请求参数作为字符串
6paramValues请求参数作为字符串集合
7headerHTTP请求标头作为字符串
8headerValuesHTTP请求标头作为字符串集合
9initParam上下文初始化参数
10cookieCookie值
11pageContext当前页面的JSP PageContext对象

可以在表达式中使用这些对象,就像它们是变量一样。以下示例将帮助了解这些概念 -

pageContext对象

pageContext对象可以访问pageContext JSP对象。 通过pageContext对象,可以访问请求对象。 例如,要访问请求的传入查询字符串,可以使用以下表达式 -

${pageContext.request.queryString}

范围对象

pageScoperequestScopesessionScopeapplicationScope变量提供对存储在每个范围级别的变量的访问。

例如,如果需要显式访问应用程序范围中的变量,则可以通过applicationScope变量 - applicationScope.box来访问它。

param和paramValues对象

可以通过paramparamValues对象的request.getParameterrequest.getParameterValues方法来访问参数值。

例如,要访问order参数,请使用表达式${param.order}${param [“order”]}

param对象返回单个字符串值,而paramValues对象返回字符串数组。

header和headerValues对象

headerheaderValues对象可以访问通过request.getHeaderrequest.getHeaders方法通常可用的头值。

例如,要访问user-agent头,可使用${header.user-agent}${header [“user-agent”]}表达式。

header对象返回单个字符串值,而headerValues对象返回字符串数组。


 

 

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值