el和jstl

一.El表达式

1.El概述

Expression Language:表达式语言,jsp2.0之后内置在jsp里面

目的:为了使JSP写起来更加简单。(代替脚本 <% %>)

2. .EL语法

${el表达式}

3.EL表达式的用途

1.获取数据. 获取的是域对象中存储的数据
2.EL执行运算

4.获取简单数据类型数据

语法:${requestScope|sessionScope|applicationScope.属性名}; 

快捷写法:${属性名},  属性名就是存在域对象里面的key
<body>
    <%
        request.setAttribute("rKey","rrr");
        session.setAttribute("sKey","sss");
        /*application就是Servlet里面的ServletContext*/
        application.setAttribute("aKey","aaa");

    %>

    获得request里面存的数据:<br/>
    老方式:<%=request.getAttribute("rKey")%><br/>
    el方式: ${requestScope.rKey}<br/>
    <hr/>

    获得session里面存的数据:<br/>
    老方式:<%=session.getAttribute("sKey")%><br/>
    el方式: ${sessionScope.sKey}<br/>
    <hr/>

    获得application里面存的数据:<br/>
    老方式:<%=application.getAttribute("aKey")%><br/>
    el方式:${applicationScope.aKey}
    <hr/>

    简单方式的写法:<br/>
    <%--${rKey}: 依次的从最小的域往最大的域找,能找到就返回--%>
    获得request里面的数据:${rKey}<br/>
    获得session里面的数据:${sKey}<br/>
    获得servletContext里面的数据:${aKey}<br/>

</body>

5.获取数组

语法:${数组属性名[index]};
数组属性名就是存入域对象里面的key

6. 获取list

语法:${list属性名[index]}或者${list属性名.get(index)};
list属性名就是存入域对象里面的key

7. 获取Map

 语法:${map属性名.键}或者${map属性名.get("键")
 map属性名就是存入域对象里面的key
    <%
        String[] array = {"aaa","bbb","ccc"};
        request.setAttribute("a",array);


        List<String> list = new ArrayList<String>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        session.setAttribute("l",list);




        Map<String,String> map = new HashMap<String,String>();
        map.put("akey","aaa");
        map.put("bkey","bbb");
        map.put("ckey","ccc");
        request.setAttribute("m",map);

    %>

    获得数组里面的第2个值:<br/>
    老方式:<%=((String[])request.getAttribute("a"))[1]%><br/>
    el方式: ${a[1]} <br/>
    <hr/>
    获得list里面的第1个值:<br/>
    老方式:<%=((List<String>)session.getAttribute("l")).get(0)%><br/>
    el方式: ${l[0]}  <br/>
    <hr/>
    获得map里面的akey对应值:<br/>
    老方式:<%=((Map<String,String>)request.getAttribute("m")).get("akey")%><br/>
    el方式:${m.akey}   <br/>

8.获取bean

语法:${bean的属性名(也就是存入的key值).javabean属性}

依赖getxxx()方法; eg: getPassword()---去掉get-->Password()----首字母小写--->password
   <%
        User user = new User("zs", "123456", 18);
        request.setAttribute("u",user);
    %>

    获得密码:<br/>
    老方式:<%=((User)request.getAttribute("u")).getPassword()%><br/>
    el方式:${u.password}  <br/>
    <hr/>

[ ]和.方式的区别

只要是能用.的都可以使用[]

带下标(数组,list)要用[]

有特殊字符的要用[]
  • 获取的是三个域范围的值,存入三个域中
  • 能获取到则获取,获取不到返回" "字符串 ,不是返回null
  • ${域中属性名}:依次从requestScope|sessionScope|applicationScope中查找指定的属性
    若找到,立即返回,且结束该次查找
    若找不到返回""
  • 若属性名中出现了".""+""-"等特殊的符号的时候,快捷获取的方式不好使,必须使用以下方式:
    ${xxxScope[“属性名”]}

特殊情况:

 <%
        request.setAttribute("a.b.c.d","rrr");


        Map<String,String> map = new HashMap<String,String>();
        map.put("a.akey","aaa");
        map.put("bkey","bbb");
        map.put("ckey","ccc");
        request.setAttribute("m",map);

    %>

    ${a.b.c.d}
    ${requestScope['a.b.c.d']}<br/>

    #{m['a.akey']}

    <br/>

9.EL执行运算

在这里插入图片描述
算数运算

+,-,*,/

+不能拼接字符串.

逻辑运算

< >= <= != ==

关系运算

&& || !

非空判断

empty,判断一个对象是否为null,判断集合长度是否为0,  判断一个字符串是否为""

not empty

语法: ${empyt 属性名};属性名 就是域对象里面的key值
<body>
    <%
        //request.setAttribute("a",10);
        User user = null;
        request.setAttribute("u",user);

        User user1 = new User();
        request.setAttribute("u1",user1);

        List list = new ArrayList();
        request.setAttribute("l",list);

        List list02 = null;
        request.setAttribute("l2",list02);

    %>

    <%--a就是从域里面获得的a
        ${a+19}
        ${a>20}
    --%>
    <%--1.判断对象(user是)否为null--%>
    ${empty u} <%--true--%>
    ${empty u1} <%--false--%>

    ${not empty u}<%--false--%>
    <hr/>
    <%--2.判断一个集合的长度是否为0--%>
    ${empty l} <%--true--%>
    ${empty l2} <%--true--%>


</body>

二.JSTL标签库

1.JSTL概述

JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的

目的: 为了简化在jsp页面上展示数据 遍历数据 判断数据

2.JSTL五大标签库

在这里插入图片描述

2.1 核心标签库

  • 导入jar包
    在这里插入图片描述
  • 在页面上导入核心标签库 <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

1. if标签在这里插入图片描述

  • 语法
<c:if test="el表达式${..}" [var="给之前的表达式的结果起个名字"] [scope="将结果保存在那个域中 默认page"]>
</c:if>
	<%request.setAttribute("a", 3); %>

	<c:if test="${a>1}" var="i" scope="page">
		a大于1
	</c:if>
	
	<c:if test="${a<=1}">
		a不大于1
	</c:if>
	
	${i }
  1. choose标签
<%
    request.setAttribute("a","前端");

%>

<c:choose>
    <c:when test="${a=='java'}">
        java
    </c:when>
    <c:when test="${a=='Android'}">
        Android
    </c:when>
    <c:when test="${a=='ios'}">
        ios
    </c:when>
    <a:otherwise>
        其他
    </a:otherwise>
</c:choose>
  1. foreach标签
    在这里插入图片描述
<body>
<h1>老方式,脚本</h1>
<%
    for (int i = 0; i < 10; i++) {
        out.print(i);
%>
<hr/>
<%
    }
%>
<h1>基本使用</h1>
<c:forEach var="i" begin="2" end="10" step="2">
    ${i}
    <hr/>
</c:forEach>

<%--<h1>复杂的使用</h1>--%>
<c:forEach items="${list}" var="n">
    ${n}
</c:forEach>

<h1>forEach练习</h1>
<table width="500px" border="1px">
    <tr>
        <td>索引</td>
        <td>第几个</td>
        <td></td>
        <td>是否是第一个</td>
        <td>是否是最后一个</td>
    </tr>
    <c:forEach items="${list}" var="x" varStatus="vs">
        <tr>
            <td>${vs.index}</td>
            <td>${vs.count}</td>
            <td>${x}</td>
            <td>${vs.first}</td>
            <td>${vs.last}</td>
        </tr>
    </c:forEach>
</table>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值