EL表达式和JSTL

什么是EL表达式

Expression Language(表达式语言)

EL的功能

替代JSP页面中访问数据时的复杂编码

执行表达式

EL的特点

自动转换类型 

使用简单 

EL表达式搜索域数据的顺序

El表达式主要是在jsp页面中输出数据。

主要是输出域对象中的数据

当四个域中都有相同的key的数据时,EL表达式或按照四个域的从小到大的顺序进行搜索,找到输出

 <body>
  <%
      pageContext.setAttribute("key","pageContext");
      request.setAttribute("key","request");
      session.setAttribute("key","session");
      application.setAttribute("key","application");
  %>
     <h3>EL表达式输出key的值是:${key}</h3>
  </body>

EL表达式session、List、循环取值

Servlet文件代码
@WebServlet("/test")
public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        List<Dog> list=new ArrayList<>();
        Dog d=new Dog();
        d.setId(1);
        d.setName("小黄");

        Dog d1=new Dog();
        d1.setId(1);
        d1.setName("小白");

        list.add(d);
        list.add(d1);
        req.setAttribute("list",list);
    req.getSession().setAttribute("d",d);
    req.setAttribute("a",10);
    req.getSession().setAttribute("b",20);
    req.getSession().setAttribute("flag","<a href='#'>哈哈哈</a>");
    req.getRequestDispatcher("index.jsp").forward(req,resp);
    }
}

JSP文件代码
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <!--1.美刀符+花括号用于从作用域中取值
  2.可以直接通过.获取对象值,对象不能没有set/get方法,通过.实际上就是调用了方法的set/get方法
  3.取值如果同名的话从四大作用域从小到大的顺序取出,要是没有此变量显示空串
  -->
  ${requestScope.a}<br/>
  ${sessionScope.b}<br/>
  ${sessionScope.d.id}<br/>
  ${sessionScope.d.name}
<!--List只想要其中某个的值可以直接通过下标获取-->
  <!--循环必备条件var对象名 items对象-->
  <table border="2">
  <c:forEach var="ob" items="${list}">
      <tr>
          <td>${ob.id}</td>
          <td>${ob.name}</td>
      </tr>
  </c:forEach>
  </table>
  <c:set var="flag" value="千夫人" scope="session"></c:set>
  <c:out value="${flag}">
  </c:out>
  </body>
</html>

结果: 

EL表达式语法

属性范围

EL表达式中的名称

属性范围

EL表达式中的名称

page

pageScope

session

sessionScope

request

requestScope

application

applicationScope

算术运算

算术运算符

说明

示例

结果

+

${10+5}

15

-

${10-5}

5

*

${10*5}

50

/ div

${10/5}${10 div 5}

2

% mod

取模

${10%5}${10 mod 5}

0

关系运算符

算数运算符

说明

示例

结果

== eq

等于

${23==5}${23 eq 5}

${"a" =="a"}${"a" eq "a"}

false

true

!= ne

不等于

${23!=5}${23 ne 5}

true

< lt

小于

${23<5}${23 lt 5}

false

> gt

大于

${23>5}${23 gt 5}

true

<= le

小于等于

${23<=5}${23 le 5}

false

>= ge

大于等于

${23>=5}${23 ge 5}

true

逻辑运算符和Empty运算符

算数运算符

说明

示例

结果

&& and

逻辑与

如果AtrueBfalse,则${A && B}${A and B}

false

|| or

逻辑或

如果AtrueBfalse,则${A || B}${A or B}

true

! not

逻辑非

如果Atrue,则${!A}${not A}

false

Empty运算符
Empty运算符是一个前缀操作符,用于检测一个变量是否为空Empty运算符,如果为空输出true,不为空输出false

 以下几种情况为空

1. 值为null的时候
2. 值为字符串的时候
3. 值是Object类型数组,长度为零的时候
4. list集合,元素个数为零
5. map集合,元素个数为零

<% 	request.setAttribute("username","张明");    %>
${empty username}       // 返回 false
${not empty username} // 返回 true
${! empty username}     // 返回 true

 

什么是JSTL 

JSP标准标签库(JSP Standard Tag Library)

包含一组开发JSP页面时常见功能的标准标签

优点

①不用嵌入Java代码就可以实现JSP页面逻辑控制

②配合EL表达式,方便的实现JSP页面编码

③代码简洁

<c:remove var="<string>" scope="<string>"/>
    var:待移除的变量名
	scope:变量所在作用域

引入JSTL

语法:
<c:标签名>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    uri:指定要引入的标签库
	prefix:为引入的标签库指定别名,核心标签库一般使用“c”

通用标签库-remove标签

用于移除指定作用域内的指定变量

<c:remove var="<string>" scope="<string>"/>
    var:待移除的变量名
	scope:变量所在作用域

条件标签库-choose标签

<c:choose var="varName" scope="scope">
    //test表达式条件满足时执行标签内的主体内容
    <c:when test="condition1">
        主体内容
    </c:when>
     ……
    <c:otherwise>
        //所有when标签均不满足时执行otherwise标签内容
        主体内容
    </c:otherwise>
</c:choose>

when标签可以有多个

otherwise标签必须是choose标签中的最后一个标签

迭代标签库forEach标签

<c:forEach var="varName" varStatus="varStatusName"
            begin="beginIndex" end="endIndex" step="step">
    主体内容
</c:forEach> 

var :循环过程中,当前元素的引用

varStatus :存放var属性引用元素的相关信息,如索引等

begin :循环的开始位置

end :循环的结束位置

step :循环的步长,可省略,默认为1

JSTL标签库常用标签

 

疏导图 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值