JAVA Web基础 EL表达式与JSTL标签库

一.EL表达式语言
1.EL表达式全称expression language,用于在JSP页面获取其内置对象的内容
语法:${...}
在jsp中page指令有一个属性是isELIgnored, 用来标记此页面是否忽略EL表达式, 默认为false,即不忽略
2.用法说明
常规写法举例:<%= request.getAttribute("test")>
EL表达式写法:${test}//当作用域属性名都是唯一时可以这么写
            ${requestScope.test}//表示获取请求作用域中属性名为test的值
            ${requsetScope["test"]}
.与[]的写法多数情况下可以通用,但下列几种情况只能用[]的写法:
当表达式中有特殊字符如test_name则只能用[]的写法;
当需要获取动态属性时则只能用[]的写法,即[]中可以写变量名;
[]也可以用来表示数组或者集合中的索引值,如arr的值为{a,b,c},可以通过${arr[0]}的方式获取a;
3.EL变量
${test}
当前面不指定哪个作用域下面的值的时候, 会默认按照下面的顺序去找, 如果都找不到, 就输出一个空字符串
pageScope --> requestScope --> sessionScope --> applicationScope
4.EL中可以对获取的值自动进行类型转换
如获取的test1和test2中的值为字符串型数值,可以直接进行运算:${test1 + test2}
5.获取请求参数
获取请求参数可通过表单或超链接方式获取
常规写法:<%= request.getParameter("name")>
EL表达式写法:${param.name}
6.EL运算符
算术运算符: +   -   *   /或div   %或mod    例:${5 div 3 } 或${5 / 3 }
关系运算符: ==或eq(equals)   !=或ne(not equals)   <或lt(less than)   >或gt(great then)   <=或le(less equals)   >=或ge(great equals)
逻辑运算符: &&或and   ||或or   !或not
验证运算符: empty(empty 对于 null和"" 的判断都是返回true)
例:使用验证运算符实现当变量test的值为空时,输出"test为空",否则输出test值
${empty test?"test为空":test}
二.JSTL标签库应用
JSTL全称JSP Standard Tag Library(标准标签库),由五个功能不同的标签库组成,分别是核心标签库、格式标签库、SQL标签库、XML标签库、函数标签库。
使用这些标签库必须在JSP页面顶部使用<%@ taglib %>指令定义引用的标签库和访问前缀;由于实际项目开发中一般只应用核心标签库,所以这里主要学习核心标签库的内容。
核心标签库的指令格式为:<%@ taglib uri="http ://java.sun.com/jsp/jstl/core" prefix="c" %> 这里将前缀定义为c是约定俗称的。
核心标签库里主要包括表达式标签、流程控制标签、循环标签。
1.表达式标签
<c: out /> 或<c: out></c:out>;输出标签
格式:
<c: out value="" default="" escapeXml="ture/false"/>
相当于<%= 表达式%>,分为有标签体和没有标签体,功能一样;
value:可以直接赋值常量,也可以赋值EL表达式:value="${test}" ;该标签会将引号里的值输出;
default:默认输出值,当value值为null时输出此值,如果也不定义默认值则输出空字符串;
escapeXml:控制转义字符;默认为true;也就是默认情况下如果值里有标签存在则视为字符串;

<c: set/>或<c: set></c: set>;变量设置标签
格式
<c: set var="" value="" scope="">
var:指定变量名;
value:指定变量值;可以为EL;也可以写在标签体中如:<c:set var="t" value="小明" />或<c:set var="t1">小明</c:set>
scope:指定变量作用域;默认为page,可选值包括:page,request,response,application;

<:c remove/>;变量移除标签
格式:
<c: remove var="" scope=""/>
var:指定要移除的变量名
scope:指定要移除的变量有效范围,当不同范围的变量名有重复的时候, 可以通过这个属性来确定移除的是哪个, 如果不指定, 则全部移除掉,默认值为page;

<c: catch></c: catch>;捕获异常标签
格式:
<c: catch var="">
    可能存在异常的代码:${5 / 0}
</c: catch>
var:指定存储异常信息的变量,如不保存,可省略了;类似于try...catch;上述代码会输出Infinity(无限大),属于EL表达式里的异常;
2.流程控制标签
<c:if></c:if>条件判断标签
格式:
<c:if var ="" test="" scope="">
    标签体
</c:if>
var:指定判断结果的变量名;
test:必选属性,指定条件表达式,可以用EL,返回值为true或false,当为true时,执行标签体,标签体里可以为任何JSP能够使用的元素;
scope:指定变量的有效范围;

<c:choose></c:choose>;条件选择标签
一般与<c:when></c:when>条件测试标签和<c:otherwise></c:otherwise>其他条件标签组合使用,类似于switch...case语句
格式:
<c:choose>
    <c:when test="">
        <c:out value=""></c:out>//或其他标签体
    </c:when>
    <c:otherwise>//可不写
        <c:out value=""></c:out>
    </c:otherwise>
</c:choose>
3.循环标签
<c:forEach></c:forEach>循环标签
用于遍历集合或数组中的所有或部分数据
格式:
<c: forEach  items = "" var = "list" begin="" end="" step="" varStatus="vs" >
    ${list} ${vs.index} ${vs.count} ${vs.first} ${vs.last}
</c:forEach>
items: 指定需要遍历的数组或者集合
var: 设定一个变量名来存储从数组或者集合中遍历出来的值
begin, end: 指定需要遍历的开始, 结束位置,默认全部遍历
step: 每次遍历跳过的个数, 默认值为1
varStatus:指定循环状态变量
index:在原集合中的索引值, 从0开始
count:当前循环计数,从1开始,
first:是否是当前循环第一个
last:是否是当前循环最后一个
注意first和last, 是判断的是否在输出结果中的第一个或者最后一个, 并不是原来的集合中
例:输出1到10之间所有整数
<c:forEach var ="i" begin="1" end= "10">
    ${i},
</c:forEach>

<c: forTokens></c: forTokens>迭代标签
用于使用指定分隔符分割字符串,并遍历分割后的字符串数组;
格式:
<c:forTokens items="" delims="" var=""></c:forTokens>
items:指定要迭代的String对象
delims:指定分隔符,可以同时有多个如:delims=", ; : "
var:指定变量名,保存分割后的字符串
其他属性用法同forEach标签

原文地址:https://www.cnblogs.com/wyc1991/p/9131415.html

时间: 2024-12-21 01:00:40

JAVA Web基础 EL表达式与JSTL标签库的相关文章

JavaWeb基础—EL表达式与JSTL标签库

EL表达式: EL 全名为Expression Language.EL主要作用 获取数据(访问对象,访问数据,遍历集合等) 执行运算 获取JavaWeb常用对象 调用Java方法(EL函数库) 给出一个小案例: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page import="com.jiangbei.domain

D09 Sping Boot 入门 Sping框架--Java Web之El表达式和JSTL标签

El表达式 1.什么是EL表达式,有什么作用 Ⅰ.EL表达式全称Expression Language.表达式语言. Ⅱ.EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据输出. Ⅲ.EL表达式比jsp表达式脚本简洁. 比较 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>a.j

Java实战之04JavaWeb-04JSP、EL表达式、JSTL标签库

一.jsp部分 只要是与页面显示相关的都是重点 1.jsp的脚本 <%java代码%>:被翻译到service方法内部,局部变量,局部的功能 <%=表达式或变量%>:翻译成service方法中out.write(表达式或变量) <%!java代码%>:被翻译成servlet的全局的内容,方法,全局变量 2.jsp的运行原理 jsp在运行时翻译成servlet index.jsp------>work/index_jsp.java----->work/inde

Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

<转载> 我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用   Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的代码复用.Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求.Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供

EL表达式和JSTL标签库使用详解

JavaBean在JSP中的局限 获取JavaBean属性必须要实例化 强制类型转化 <% Employee employee = (Employee)request.getAttribute("employee"); Computer comp = employee.getComputer(); String manufacturer = comp.getManufacturer(); %> 如果页面编写出现逻辑错误,将会导致代码执行错误,并且JSP页面编译页面时也会产生

EL表达式 与 JSTL标签库

EL表达式 什么是el jsp内置的表达式语言 el表达式的作用 代替脚本 el如何获取数据 1.获取域中的数据 简单数据:${域中的key值} 注意:如果多个域中的key值一样 那么取出的顺序? 从范围小的开始查找,查找到以后就返回 如果没有查询到对应的key 返回""(空字符串) 例如: <% pageContext.setAttribute("num", 5); request.setAttribute("num", 1); sess

EL表达式和JSTL标签库

1 EL表达式 1.1 EL的概述 EL,全名为Expression Language. 主要作用: ①EL表达式主要用于替换jsp页面中的脚本表达式,以便于从各种类型的web域中检索java对象(某个web域中的对象),获取数据(访问javabean的属性.访问List集合.访问Map集合.访问数组). ②执行运算. ③利用EL表达式可以在jsp页面中执行一些基本的关系运算.逻辑运算和算数运算,以便于在jsp页面完成一些简单的逻辑运算. ④获取web开发常用的对象. ⑤EL表达式定义了一些隐式

Java web基础总结九之—— jsp标签

Java web基础总结九之-- jsp标签 JSP标签也称之为Jsp Action,在前面讲过,jsp的设计目的就是作为表现层.我们希望JSP页面仅用作数据显示模块,不要嵌套任何java代码引入任何业务逻辑,但在实际开发中不引入一点业务逻辑是不可能的,但引入业务逻辑会导致页面出现难看java代码.jsp的标签就是为了解决这个问题.所以jsp页面中也内置了一些标签(这些标签叫做jsp标签),开发人员使用这些标签可以完成页面的一些业务逻辑.我们也可以开发自定义标签,使jsp页面不出现一行java代

JavaWeb(七)Cookie,EL表达式,标准标签库

Cookie Cookie概述 Cookie译为小型文本文件或小甜饼,Web应用程序利用Cookie在客户端缓存服务器端文件.Cookie是以键值对形式存储在客户端主机硬盘中,由服务器端发送给客户端,客户端再下一次访问服务器端时,服务器端可以获取到客户端Cookie缓存文件. Cookie是由服务器端创建的,然后由服务器端发送给客户端,客户端以键值对形式存储Cookie,并标注Cookie的来源.客户端再次访问服务器端时,存储的Cookie会保存在请求协议中,服务器端可以获取上次存储的缓存文件内