JSP的EL/JSTL表达式

JSP 标准标签库(JSTL)

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

安装

  • 从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
  • 下载jakarta-taglibs-standard-1.1.1.zip 包并解压,将jakarta-taglibs-standard-1.1.1/lib/下的两个jar文件:standard.jar和jstl.jar文件拷贝到/WEB-INF/lib/下。
  • 在所有使用JSTL的文件中都加入taglib标签:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

EL表达式

1、语法结构
${expression}
2、[ ]与.运算符
EL 提供“.“和“[ ]“两种运算符来存取数据。
EL 提供 . 和 [ ] 两种运算符来导航数据。下列两者所代表的意思是一样的:
${sessionScope.user.sex}等于${sessionScope.user[“sex”]}
和 [ ] 也可以同时混合使用,如下:
${sessionScope.shoppingCart[0].price}
当要存取的属性名称中包含一些特殊字符,如 . 或 – 等并非字母或数字的符号,就一定要使用“[ ]“。例如:
${ user. My-Name}应当改为${user[“My-Name”]}
如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:
${sessionScope.user[data]}中data 是一个变量
3、变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传””,若为空会直接不显示。
我们也可以指定要取出哪一个范围的变量:

范例

说明

${pageScope.username}

取出Page范围的username变量

${requestScope.username}

取出Request范围的username变量

${sessionScope.username}

取出Session范围的username变量

${applicationScope.username}

取出Application范围的username变量

其中,pageScope、requestScope、sessionScope和applicationScope都是EL 的隐含对象。

${sessionScope.username}

等价于

String username =(String) session.getAttribute(“username”);


JSTL

JSTL核心标签

援引自  https://www.w3cschool.cn/jsp/jsp-jstl.html 点击标签可以定向过去

标签 描述
<c:out> 用于在JSP中显示数据,就像<%= … >
<c:set> 用于保存数据
<c:remove> 用于删除数据
<c:catch> 用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if> 与我们在一般程序中用的if一样
<c:choose> 本身只当做<c:when>和<c:otherwise>的父标签
<c:when> <c:choose>的子标签,用来判断条件是否成立
<c:otherwise> <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import> 检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach> 基础迭代标签,接受多种集合类型
<c:forTokens> 根据指定的分隔符来分隔内容并迭代输出
<c:param> 用来给包含或重定向的页面传递参数
<c:redirect> 重定向至一个新的URL.
<c:url> 使用可选的查询参数来创造一个URL

应用举例

使用JSTL标签进行判断

<c:if test="${sum!=null}">
<h1 align="center">${requestScope.d1}+${requestScope.d2}的值是:${requestScope.sum}</h1>
</c:if>

使用JSTL标签进行循环

示例程序:https://yuheng.tech:8080/test12/index.html

<h1 align="center">学生信息</h1>
   <table border="1" cellpadding="5" >
   <caption>EL/JSTL实现</caption>
   <tbody><tr><th>学号</th><th>姓名</th><th>性别</th><th>修改</th><th>删除</th></tr>
  <c:forEach var="stu" items="${requestScope.all}">
  <tr>
    <td>${stu.getUserid()}</td>
    <td>${stu.getUsername()}</td>
    <td>${stu.getSex()}</td>
    <td><a href="javascript:update('${stu.getUserid()}','${stu.getUsername()}','${stu.getSex()}')">修改</a></td>
    <td><a href="delete.jsp?userid=${stu.getUserid()} %>" onclick="return confirm('确定删除?')">删除</a></td>
  </tr>
  </c:forEach>
  </table>

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

13 − 5 =