El和JSTL

El和JSTL:

EL:

出现问题:

使用传统方式获得request对象中的值有以下缺点:

1.必须导入包

2.进行类型的强制转化

3.层次结构比较复杂

EL表达式的好处:

使用EL表达式获取请求数据一获取用户请求数据

获取请求头数据获取cookie数据

使用EL表达式获取作用域数据-获取作用域数据

作用域查找顺序

获取指定作用域中的数据使用EL表达式进行运算算术运算

关系运算-逻辑运算

el表达式简化

name:${param.name}
<%--
  Created by IntelliJ IDEA.
  User: 17612
  Date: 2021/6/23
  Time: 7:42
  To change this template use File | Settings | File Templates.
  El表达式:
  Experssion Language:一种表达式语言,语法简答
       语法规则:${experssion},可以使用.或者中括号来获取属性值或者指定索引位置的对象
       获取值的时候,直接使用作用域中的key即可,然后使用.来引用属性,使用[]来获取指定索引位置的对象
   作用域:
        pageContext--->request----->session---->applicaiton
    获取作用域的数据的顺序:
        从小的作用域开始查询,如果找到则返回对应的值,不接着向大范围寻找数据
     当四种作用域中存在相同key的属性的时候,可以通过pageScop,requestScop,sessionScop获取指定作用域的数据

    El表达式可以进行算数运算和关系运算
    直接在表达式中写入算法操作即可,如果是关系运算,返回true或者false
    注意:在el表达式中的+表示加法操作而不是字符串连接符

        获取Cookie数据
        //获取请求头
        逻辑运算

--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--     使用传统方式获取作用域中的值--%>
    name:<%=request.getParameter("name")%>
    pwd:<%=request.getParameter("pwd")%>

    name:${param.name}
<%--    EL表达式可以进行算数运算和关系运算--%>

<%--    使用el表达式进行运算--%>
    ${1+2}
    ${1-2}
    ${1*2}
    ${1>2?"男":"女"}

<%--    //获取请求头--%>
    ${header}
    ${header["host"]}
    ${headerValues["accept-language"]}

<%--    获取Cookie数据--%>
    ${cookie}
    ${cookie.JSESSIONID}
    ${true || fasle}

</body>
</html>

JSTL标签库:

JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL)JSTL是标签语言!JSTL 标签使用以来非常方便,它与JSP动作标签一样,只不过它不是JSP内置的标签,需要我

们自己导包,以及指定标签库而已!

如果你使用MyEclipse开发JavaWeb,那么在把项目发布到Tomcat时,你会发现,MyEclipse会在lib目录下存放jstl的Jar包!如果你没有使用MyEclipse开发那么需要

自己来导入这个JSTL的Jar包:jstl-1.2.jar.

代码以及说明:

<%@ page import="java.util.HashMap" %><%--
  Created by IntelliJ IDEA.
  User: 17612
  Date: 2021/6/23
  Time: 11:22
  To change this template use File | Settings | File Templates.
  JSTL:
    帮助我们在jsp页面中添加复杂的逻辑判断,避免逻辑代码和页面标签混为一谈
    JSTL是EL的扩展,同时,JSTL依赖于EL。为了方便的从作用域中获取值
    JSTL的导入:
        <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
    标签分类:

    核心标签库:
    函数标签库:
    xml标签库:
    SQL标签库:
    标签学习:
    输出标签:<c:out value="哈哈"></c:out>
    value 填写要输出的值
    default:默认值

    <c:set var="java" value="pageContext"></c:set> 向作用域设置属性值
        var:表示参数的key
        value:表示参数的值
        scop:表示向哪个作用域设置属性值
        注意:当只配置这两个属性的时候,默认是想pageContext作用域中设置属性,可以通过参数来做选择向哪个作用域设置
   <c:remove var="java"></c:remove> 删除作用域中的数据
       var:表示参数的key
        scop:删除指定作用域的数据
       注意:如果没有指定scope属性,默认就会把所有作用域中的参数删除
    <c:if test="${a>5}">
       逻辑判断标签 if判断
       test:填写逻辑判断表达式
       var:条件表达式的结果存储变量
       scope:结果变量存储的作用域
    <c:choose><c:when test="${age>10}">进行多重逻辑判断,类似于switch
    <c:forEach begin="0" end="3" step="2" varStatus="sta" items="${map}">
        begin:起始值
        end:结束值
        step:步长
        varStatus:循环状态的变量值名称
        var:集合数据的每条记录的迭代值
        items:从作用域中获取的数据
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<c:out value="哈哈"></c:out>
<c:out value="hehei"></c:out>
<c:out value="request"></c:out>
<%--向作用域设置属性值--%>
    <c:set var="java" value="pageContext"></c:set>
    <c:set var="java" value="request"></c:set>
    <c:set var="java" value="session"></c:set>

<%--删除作用域的数据--%>
    <c:remove var="java"></c:remove>
    <c:out value="${java}"></c:out>

<%--逻辑判断--%>
<c:set var="a" value="6"></c:set>
    <c:if test="${a>5}">
        <h1>jstl 0s easy</h1>
    </c:if>
<c:set var="age" value="30"></c:set>
<c:choose>
    <c:when test="${age>10}">
        <h1>小孩</h1>
    </c:when>
    <c:when test="${age>20}">
        <h1>少年</h1>
    </c:when>
    <c:when test="${age>30}">
        <h1>青年</h1>
    </c:when>
    <c:otherwise>
        <h1>i dont`t know</h1>
    </c:otherwise>
</c:choose>
<%--    循环标签--%>

    <c:forEach begin="0" end="3" step="2" varStatus="sta">
        ${sta.index}---${sta.count}---${sta.first}---${sta.last}
        当前循环的状态
    </c:forEach>
<%
    HashMap<String,String> map = new HashMap<>();
    map.put("1","111");
    map.put("2","222");
    map.put("3","333");
%>
<c:forEach begin="0" end="3" step="2" varStatus="sta" items="${map}">
    ${i.key}
    ${i.value}
</c:forEach>
</body>
</html>
posted @ 2021-06-23 22:21  IT小五  阅读(222)  评论(0)    收藏  举报