JSP的学习(二)——EL和JSTL表达式

一、EL表达式

①基本概念

EL表达式: expression language表达式语言

EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。把JSP中出现的相关的JAVA代码简化。

格式:${ EL表达式 }   等价于  findAttribute(name)

②EL获取作用域中的值

Ⅰ普通值

例如:${name}

按照 page,request,session,application(ServletContext)的顺序,查找作用域,找 key是name的 value值  。也可以指定查找的范围

     ${pageScope.key}

     ${requestScope.key}

扫描二维码关注公众号,回复: 3460622 查看本文章

     ${sessionScope.key}

     ${applicationScope.key}                 

当不指定查找的范围的时候,默认作用域从小到大的顺序查找。

其与getAttribute的区别:语法不同,当key不存在的时候,getAttribute(key)返回null,${key}返回空字符串""

访问对象的属性

User user = new User(1,"zhangsan",20);

request.setAttribute("user", user);

${user.id}

${user.name}

${user.age}  

user----> 保存在request中时的key值

id,name ,age 对象的属性名

要求: 属性必须有get方法 EL表达式才能访问到

Ⅲ访问集合

<%
         List<String> list = new ArrayList<String>();
         pageContext.setAttribute("list", list);
 %>
		 ${empty list }  判断list中是否有元素
		
 数组  List  Map
		
<%
          String[] ss = {"aaa","bbb","ccc"};
          pageContext.setAttribute("ss", ss);
          List<String>  list = new ArrayList<String>();
          list.add("xxx");
          list.add("yyy");
          list.add("zzz");
          request.setAttribute("list",list);

          List<User> list2 = new ArrayList<User>();
          User u1 = new User(1,"aaa",20);
          User u2 = new User(2,"bbb",20);
          User u3 = new User(3,"ccc",20);
          list2.add(u1);
          list2.add(u2);
          list2.add(u3);
          request.setAttribute("list2",list2);


          Map<String,String> map = new HashMap<String,String>();
          map.put("aaa-a", "111");
          map.put("bbb", "222");
          map.put("ccc", "333");

          pageContext.setAttribute("map", map);

        %>
        ${pageScope.ss[1] }<br>
        ${requestScope.list[2] }<br>
        ${list2[0].name}<br>
        ${map.bbb } <br>
        ${map["aaa-a"] }

EL不能遍历集合结构

二、JSTL表达式

JSTL:JavaServer Pages Standard Tag Library,JSP标准标签库是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。

JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

下载jakarta-taglibs-standard-1.1.2.zip 包并解压,将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文件:standard.jar和jstl.jar文件拷贝到/WEB-INF/lib/下。(1.2版本,只需要jstl.jar即可)

根据JSTL标签所提供的功能,可以将其分为5个类别:

ⅰc(core)核心标签库

ⅱfmt格式化(国际化)

ⅲ函数(JSTL提供的EL函数)

ⅳXML

ⅴSQL

①核心标签

核心标签是最常用的JSTL标签。引用核心标签库的语法如下:

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

常用标签:

通用标签:

set、out、remove

条件标签:

if、choose

迭代标签

for

foreach遍历

<h3>测试list集合遍历获取学生列表</h3>
      <table border="1" width="80%" bordercolor="red" cellspacing="0"
          align="center">
          <tr>
              <th>学号</th>
              <th>姓名</th>
              <th>成绩</th>
              <th>班级</th>
              <th>是否是第一个</th>
              <th>是否是最后一个</th>
              <th>计数count</th>
              <th>索引index</th>
          </tr>
   <!-- varStatus:变量状态:遍历出的每一项内容的状态:
      isFirst()       first
      isLast()        last
      getCount()     count  计数  
      getIndex()     index
       -->
       <!-- var :遍历出的每一项使用变量先存储
            items:集合(使用El表达式)
            -->
          <c:forEach var="stu" items="${students}" varStatus="vs">
              <tr>
                  <td>${stu.id}</td>
                  <td>${stu.name}</td>
                  <td>${stu.score}</td>
                  <td>${stu.classes}</td>
                  <td>${vs.first}</td>
                  <td>${vs.last}</td>
                  <td>${vs.count}</td>
                  <td>${vs.index}</td>
              </tr>
          </c:forEach>
   </table>

②格式化标签

JSTL格式化标签用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下:

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

常用标签

<fmt:formatDate>标签:格式化时间和日期

例如:

<fmt:formatDate value="${current}"/>

通过type格式指定具体的格式形式。

<fmt:formatDatevalue="${d}"type="date"/>只格式成日期

<fmt:formatDatevalue="${d}"type="time"/>只格式成时间

<fmt:formatDatevalue="${d}"type="both"/>格式成日期+时间

通过pattern属性指定具体的格式要求

<fmt:formatDatevalue="${d}"pattern="yyyy-MM-dd"/>

③fn标签库

fn:contains(string, substring)

如果参数string中包含参数substring,返回true

fn:containsIgnoreCase(string, substring)

如果参数string中包含参数substring(忽略大小写),返回true

fn:endsWith(string, suffix)

如果参数 string 以参数suffix结尾,返回true

fn:escapeXml(string)

将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回

fn:indexOf(string, substring)

返回参数substring在参数string中第一次出现的位置

fn:join(array, separator)

将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。

fn:length(item)

返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。

fn:replace(string, before, after)

返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果

fn:split(string, separator)

返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素

fn:startsWith(string, prefix)

如果参数string以参数prefix开头,返回true

fn:substring(string, begin, end)

返回参数string部分字符串, 从参数begin开始到参数end位置,不包括end位置的字符

fn:substringAfter(string, substring)

返回参数substring在参数string中后面的那一部分字符串

fn:substringBefore(string, substring)

返回参数substring在参数string中前面的那一部分字符串

fn:toLowerCase(string)

将参数string所有的字符变为小写,并将其返回

fn:toUpperCase(string)

将参数string所有的字符变为大写,并将其返回

fn:trim(string)

去除参数string 首尾的空格,并将其返回

 

猜你喜欢

转载自blog.csdn.net/qq_41061437/article/details/82940820
今日推荐