JavaWeb 之 EL与JSTL
EL表达式
- 概念:Expression Language 表达式语言
- 作用:替换和简化jsp页面中的java代码的编写
- 语法$
- 注意:
- jsp默认支持el表达式。如果要忽略el表达式
- 设置jsp中page指令中:isELIgnored=“true”忽略当前jsp页面中所有的el表达式
- \${表达式}:忽略当前这个el表达式
- jsp默认支持el表达式。如果要忽略el表达式
- 使用:
-
运算
- 运算符
- 算数运算符:+ - * /(div) %(mod)
- 比较运算符:> < >= <= == !=
- 逻辑运算符:&&(and) ||(or) !(not)
- 空运算符:empty
- 功能:用于判断字符串,集合,数组对象是否为null并且长度是否为0
- ${empty list}:用于判断字符串,集合,数组对象是否为null并且判断长度是否为0
- ${not empty str}:表示判断字符串、集合、数组对象是否不为null,并且长度>0
- 运算符
-
获取值
- el表达式只能从域对象中获取值
- 语法
- ${域名称.键名}:从指定域中获取指定键的值
- 域名称:
- pageScope --> pageContext
- requestScope -->request
- sessionScope -->session
- applicationScope -->application(ServletContext)
- 举例:在request域中存储了name=张三
- 获取:$
- 域名称:
- ${键名}:标识依次从最小的域中查找是否有该键对应的值,直到找到为止
- $
- ${域名称.键名}:从指定域中获取指定键的值
- 获取对象、List集合、Map集合的值
- 对象:$
- 本质上会去调用对象的getter方法
- List集合:$
- Map集合:
- $
- $
- 对象:$
-
隐式对象
-
el表达式中有11个隐式对象
-
pageContext
- 获取jsp其他八个内置对象
- ${pageContext.request.contextPath}:动态获取虚拟目录
- 获取jsp其他八个内置对象
-
-
JSTL
-
概念 :JavaServer Pages Tag Library JSP标准库
- 是由Apache组织提供的开源免费的jsp标签
-
作用:用于简化和替换jsp页面上的java代码
-
使用步骤
- 导入jstl相关的jar包
- 引入标签库:taglib指令:<% taglib %>
- 使用标签
-
常用的JSTL标签
-
if :相当于java代码的if语句
<% taglib prefix="c" uri="http://java.sun.com/jsp/jstl1/core"%> <c:if test="xxx"> <h1>hello</h1> </c:if> /* 1. 属性 * test必须属性,接收boolean表达式,正确则执行,不正确不执行 * 一般情况下,test属性值会结合el表达式一起用 */
-
choose:相当于java代码的switch语句
<% taglib prefix="c" uri="http://java.sun.com/jsp/jstl1/core"%> <%-- 完成数字编号对应星期几案例 1.域中存储一数字 2.使用choose标签取出数字 相当于switch声明 3.使用when标签做数字判断 相当于case 4.otherwise标签做其他情况的声明 相当于default --%> <% request.setAttribute("number",3); %> <c:choose> <C:when test="${number == 1}">星期一</c:when> <C:when test="${number == 2}">星期二</c:when> <C:when test="${number ==3}">星期三</c:when> <C:when test="${number == 4}">星期四</c:when> <C:when test="${number == 5}">星期五</c:when> <C:when test="${number == 6}">星期六</c:when> <C:when test="${number == 7}">星期日</c:when> <c:otherwise>数字输入有误</c:otherwise> </c:choose>
-
foreach:相当于java代码的for语句
<% taglib prefix="c" uri="http://java.sun.com/jsp/jstl1/core"%> <%-- foreach:相当于java代码的for语句 1.完成重复的操作 2.遍历容器 1.完成重复操作 属性: begin:开始值 end:结束值 var:临时变量 step:步长 varstatus:循环状态对象 index:元素中元素的索引,从0开始 count:循环次数,从1开始 2.遍历容器 属性: items:容器对象 var:容器元素中的临时变量 varstatus:循环状态对象 index:元素中元素的索引,从0开始 count:循环次数,从1开始 --%> //完成重复操作 <c:foreach begin = "1" end = "10" var = "i" step = "1"> ${s.index} ${s.count} </c:foreach> //遍历容器 <c:foreach items = "${list}" var="str" varStatus = "s"> ${s.index} ${s.count} ${s.str} </c:foreach>
-