JavaWeb——EL和JSTL

1.EL表达式

1.1.EL概念

  • EL:Expression Language,表达式语言
  • 作用:替换和简化JSP页面中Java代码的编写

1.2.EL语法

${表达式}
在这里插入图片描述


!!!注意:JSP默认支持EL,那么假如要输出“3 > 4”字符串样式怎么办呢?有两种方法:

  • 使用isELIgnore,但是这个方法会是这个页面的所有EL表达式都被忽略
    在这里插入图片描述
  • 使用“\”忽略个别
    在这里插入图片描述

1.3.EL使用

1.3.1.运算

运算符:

  • 算数运算符:+、-、*、/(div)、%(mod)
  • 比较运算符:>、<、=、>=、<=、==、!=
  • 逻辑运算符:&&(and)、||(or)、|(not)
    在这里插入图片描述
  • 空运算符:empty
  • ${empty list}:用于判断字符串、集合、数组对象是否为null或者长度是否为0
  • ${not empty str}:表示判断字符串、集合、数组对象是否不为null并且长度大于0

1.3.2.获取值

!!!注意:EL表达式只能从域对象中获取值
语法:

  • 1.${域名城.键名}:从指定域中获取指定的键值

域名城:

  • pageContext:pageScope
  • request:requestScope
  • session:sessionScope
  • application(ServletContext):applicationScope
    在这里插入图片描述
  • 2.${键名}:表示一次从最小的域中去查找是否有该键对应的值,直到找到为止
  • 3.获取对象、List集合、Map集合的值
  • 对象:${域名城.键名.属性名}

本质上会去调用对象的getter方法

  • List集合:${域名城.键名[索引]}
  • Map集合:${域名.键名.key名}或者${域名.键名[“key名”]}

java.class

package xpu.edu.web.servlet.EL;

import java.util.Date;

public class User {
    private String name;
    private int age;
    private Date birthday;

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

JSP页面(Markdown貌似并不支持JSP代码高亮,所有有点丑,将就一下)

<%@ page import="xpu.edu.web.servlet.EL.User" %>
<%@ page import="java.util.*" %><%--
 Created by IntelliJ IDEA.
 User: 15291
 Date: 2019/6/4
 Time: 21:27
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>获取数据</title>
</head>
<body>

<%
   User user = new User();
   user.setAge(18);
   user.setName("邹鸡儿");
   user.setBirthday(new Date());

   request.setAttribute("u",user);

   List list = new ArrayList();
   list.add("邹鸡儿");
   list.add("邹大炮");

   request.setAttribute("list",list);

   Map hashMap = new HashMap();
   hashMap.put("name","邹鸡儿");
   hashMap.put("age","19");

   request.setAttribute("hashMap",hashMap);
%>

<h3>获取对象中的值</h3>
${requestScope.u}<br/>

<%--
   通过对象的属性来获取
   * setter或getter方法,去掉set或get,在剩余部分首字母变小写
   * setName——>Name——>name
--%>

${requestScope.u.name}<br/>
${requestScope.u.age}<br/>
${requestScope.u.birthday}<br/>

<h3>获取List的值</h3>
${requestScope.list}<br/>
${requestScope.list[0]}
${requestScope.list[1]}
<%--
   越界时会输出空字符串""
--%>
${requestScope.list[10]}

<h3>获取Map的值</h3>
${requestScope.hashMap.name}<br/>
${requestScope.hashMap["name"]}

</body>
</html>

在这里插入图片描述

1.4.EL的隐式对象

EL表达式有11个隐式对象,着重了解pageContext:可以获取JSP其他八个内置对象
${pageContext.request.contextPath}:动态获取虚拟目录
在这里插入图片描述

2.JSTL

2.1.JSTL概念

  • JSTL:JavaServer Pages Tag Library,JSP标准标签库,是由Apache组织提供的开源的免费JSP标签
  • 作用:用于简化和替换JSP页面的Java代码

2.2.JSTL使用步骤

  • 1.导入相关jar包
  • 2.引入标签库:taglib指令:<% taglib %>
  • 3.使用标签

2.3.常用的JSTL标签

  • if:相当于Java代码的if语句
  • 属性:test为必须属性,接收boolean表达式,如果表达式为true,就显示if标签体内容,如果为false,则不显示标签体内容
  • 注意:一般test属性会结合EL表达式一起使用
    在这里插入图片描述
  • choose:相当于Java代码的switch语句
  • 使用choose标签声明:相当于switch声明
  • 使用when标签做判断:相当于case
  • 使用otherwise标签做其他情况声明:相当于d
    在这里插入图片描述
  • foreach:相当于Java代码的for语句

1.完成重复操作

属性:
1.begin:开始值
2.end:结束值
3.var:临时变量
4.step:步长
5.varStatus:循环状态对象

index:容器中元素索引,从0开始
count:循环次数,从1开始

2.遍历容器

属性:
1.item:容器对象
2.var:容器中元素临时变量
3.varStatus:循环状态对象

index:容器中元素索引,从0开始
count:循环次数,从1开始

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/LiLiLiLaLa/article/details/90815272
今日推荐