2018蓝旭暑期培训之JSTL、EL表达式

前言:由于通常情况下jstl和el表达式配合使用,因此将jstl和EL表达式放在一起讲解

一.jstl和EL定义

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

表达式语言(EL)是 JSP 2.0 引入的一种计算和输出 Java 对象的简单语言。

二.为什么使用jstl和EL表达式

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

三.如何使用EL表达式?

1.配置el表达式

(1)导入standard.jar

(2)在需要使用 EL 语音的页面加上<%@ page isELIgnored="false" %>

         注意 <%@ page isELIgnored="true" %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用 EL  语言。

注:目前大多使用的高版本Tomcat都是支持el表达式的,没必要去修改web.xml

2.el表达式的内置对象(重要)

pageScope、requestScope、sessionScope、applicationScope

假设在获取值是没有指定内置对象,那么默认从 pageScope 到 applicationScope依次扩大范围查找属性名。举例:

${requestScope.username}

在上边的一行代码中我制定了作用于requestScope,则此时他会直接去request数据域中查找username的值,但是当我不去指定时,此时程序会先去 page中找,找不到的话再去request中找。

3.el表达式的‘[ ]’和' . '运算符

(1)‘  . ’运算符最为常用,他等作用是获取相应的值如上边的案例是获取request数据域中的username值.

(2)‘[]’运算式当需要当要存取的属性名称中包含一些特殊字符时,必须使用‘[]’而不能使用‘.’

如:

${requestScope.user?name}(错误)
${requestScope["user?name"]}(正确)

 (3)如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值

 4.pageContext的作用

pageContextJSP 页的上下文。它可以用于访问 JSP 隐式对象,如请求、响应、会话、输出、servletContext 等

举例:得到jsp所在项目名称

${pageContext.request.contextPath}

注:这在请求路径中使用绝对路径时经常用到

5.EL表达式的操作符

 四.如何使用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>:用于在JSP中显示数据,和<%= ... >功能相似

 基本语法:<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>

(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> 标签:主要用来处理产生错误的异常状况,并且将错误信息储存起来。

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

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

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

(6)<c:choose>、<c:when>、<c:otherwise>:这三个标签一般是配合使用,类似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循环。

基本语法:

<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.

语法:<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" %>)

六.实例代码 (根据体重判断你是不是胖子)

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2018/7/26
  Time: 10:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<table>
<c:forEach items="${requestScope.uwList}" var="uw">
    <c:set var="weight" value="${uw.weight}"/>
    <c:choose>
        <c:when test="${weight<=100}">
            <tr><td>${uw.username}</td><td>${uw.weight}</td><td>瘦子</td></tr>
        </c:when>
        <c:when test="${weight>100&&weight<=150}">
            <tr><td>${uw.username}</td><td>${uw.weight}</td><td>正常</td></tr>
        </c:when>
        <c:when test="${weight>150&&weight<=200}">
            <tr><td>${uw.username}</td><td>${uw.weight}</td><td>胖子</td></tr>
        </c:when>
        <c:when test="${weight>200}">
            <tr><td>${uw.username}</td><td>${uw.weight}</td><td>大胖子</td></tr>
        </c:when>
        <c:otherwise>
            <tr><td>${uw.username}</td><td>${uw.weight}</td><td>体重不合理</td></tr>
        </c:otherwise>
    </c:choose>
</c:forEach>
</table>
</body>
</html>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪舟子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值