Java篇-EL与JSTL

一 : EL简述

在jsp实际开发中,为了获取servlet域对象中存储的数据,经常需要书写很多java代码,这样做法会是jsp页面混乱.为此在JSP2.o规范中提供了EL表达式.

EL->Expression Language 目的是为了使jsp写起来更加的简单明了,它提供了jsp中简化表达式的方法,让jsp的代码更加简化.

二 : EL内置对象

分类内置对象名称描述
域对象pageScopepage域对象
域对象requestScoperequest域对象
域对象sessionScopesession域对象
域对象applicationScopeapplication域对象
请求参数parm获得一个参数
请求参数parmValues获得一组参数
请求头header获得一个请求头
请求头headerValues获得一组请求头
JSP上下文对象pageContextWEB开发中的pageContext.
全局初始化参数initParam获取全局初始化参数
cookiecookieWEB开发中cookie

其中
pageScope,requestScope,sessionScope,applicationScope为获取jsp中域中的数据
param,paramValues为获取参数,相当于
request.getParameter() ,
request.getParameterValues()
header,headerValues为获取请求头信息,相当于request.getHeader(name)
initParam 为获取全局初始化参数,相当于this.getServletContext().getInitParameter(name)
cookie为WEB开发中cookie
相当于request.getCookies()—cookie.getName()—cookie.getValue()
pageContext WEB开发中的pageContext,pageContext获得其他八大对象,${pageContext.request.contextPath}

三 : EL 从域中取出对象

EL 最重要的作用是获取四大域的数据,格式为 : ${EL表达式}

例如 :

EL表达式:${requestScope.name}

① : EL获得PageContext域中的值 : ${pageScope.key};
② : EL获得request域中的值 : ${requestScope.key};
③ : EL获得session域中的值 : ${sessionScope.key};
④ : EL获得application域中的值 : ${applicationScope.key};
: EL域中获得某个值${key}; 依次从pageContext域,request域,session域,application域中​获取属性,在某个域中获取后将不在向后寻找

四 : EL执行表达式

  • empty运算
    <br>${user == null }
    <br>${user != null }
    <br>${empty user  }
    <br>${not empty user  }
  • 三元运算
    <br>${user == null ? true : false  }
  • 算数运算符
${"1"+2 } 将字符串转换成数字,然后进行计算
${a+2 } a将从域中获得数据,如果没有为0

五 : JSTL简述

JSTL->JSP Standard Tag Library,JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑代码,JSTL出现的目的和EL一样,就是要替代jsp页面中的脚本代码

标签库标准库URL前缀
Corehttp://java.sun.com/jsp/jstl/corec
I18Nhttp://java.sun.com/jsp/jstl/fmtfmt
SQLhttp://java.sun.com/jsp/jstl/sqlsql
XMLhttp://java.sun.com/jsp/jstl/xmlx
Functionshttp://java.sun.com/jsp/jstl/functionsfn

六 : JSTL导入

①在Apache的网站下载JSTL的JAR包。http://archive.apache.org/dist/jakarta/taglibs/standard/binaries – > 下载​JSTL的安装包。jakarta-taglibs-standard-1.1.2.zip,然后将下载好的JSTL安装包​进行解压,此时,在lib目录下可以看到两个JAR文件,分别为jstl.jarstandard.jar
②导入 工程 lib中
③导入核心标签库
注意 : prefix 的值可以随便填写,但是几乎通常为上表的前缀.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

七 : forEach与if标签使用

( 一 ) forEach标签使用

  • 模拟for循环
<c:forEach begin="0" end="5" var="i">
        ${i }<br>
    </c:forEach>
  • 获取遍历List
List<String> strList = new ArrayList<String>();
    strList.add("百百");
    strList.add("可可");
    strList.add("思思");
    request.setAttribute("strList", strList);

    <c:forEach items="${strList}" var="str">
        ${str }<br>
    </c:forEach>
  • 获取遍历List<User>
List<User> userList = new ArrayList<User>();
    User user1 = new User();
    user1.setUsername("雪雪");
    user1.setPassword("123");
    
    User user2 = new User();
    user2.setUsername("美美");
    user2.setPassword("456");
    
    userList.add(user1);
    userList.add(user2);
    application.setAttribute("userList", userList);

    <c:forEach items="${userList }" var="item">
        ${item.username}---${item.password }<br>
    </c:forEach>
  • 获取遍历Map

    Map<String,String> strMap = new HashMap<String,String>();
    strMap.put("name", "花花");
    strMap.put("add", "月球");
    strMap.put("sex", "女");
    session.setAttribute("strMap", strMap);


<c:forEach items="${strMap }" var="item">
        ${item.key }-----${item.value }<br>
    </c:forEach>

注意 :
varStatus用于指定当前迭代状态信息的对象保存到page域中的名称
var属性用于指当前迭代到的元素保存到page域中的名称

  • varStatus使用
    count : 表示元素在集合中的序号,从1开始
    index : 表示当前元素在集合中的索引,从0开始
    first : 表示当前元素是否为集合的第一个元素
    last : 表示当前元素是否为集合的最后一个元素
    <c:forEach begin="0" end="5" var="i" varStatus="status">
        ${i }<br>
        ${status.count }<br>
        ${status.index }<br>
        ${status.first }<br>
        ${status.last }<br> <hr>    
    </c:forEach>

(二)if标签使用

<c:if test="${1==1 }">
      我真很帅.
    </c:if> 
    原文作者:TianTianBaby223
    原文地址: https://www.jianshu.com/p/7edf26a81fb6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞