0
点赞
收藏
分享

微信扫一扫

【java初学】EL表达式, JSTL

ZSACH 2022-04-02 阅读 72

文章目录

EL, JSTL和JS

1. 域对象【重点】

1.1 域对象情况分析
application
	整个WEB项目,最大的共享资源,一般不用于保存用户数据,而是整个项目的配置,启动,运行参数内容,也可以记录当前网页的访问量,数据量...
	
session
	使用前提条件
		1. JSP页面开启session操作。默认是开启
		2. 浏览器可以存储Cookie信息
	用户访问当前资源,会默认从服务器中取出对应的session数据,session是一个域对象,但是当前session域对象有明确的用户针对。每一个用户针对会存在一个session对象,当前session对象,可以保存当前用户的核心数据。
	例如:
		用户名,
		用户的ID号 可以获取相关数据 权限操作,内容推荐,数据跳转...
	
request
	一次请求以内的数据,需要通过转发来进行操作,一旦转发数据被处理,作用空间终止。
	域对象。

pageContext
	当前页面以内,用的不多~~~~临时变量,局部变量使用
1.2 域对象同名数据取值顺序
就近原则
	pageContext > request > session > application
	尽量保证数据名字不重复,并且和后台代码名字一直。

pageContext可以取值所有域对象内容
可以指定取值对应域对象数据。

使用最多的域对象内容
	request ==> servlet 从 Dao层取出数据 = 转发 => JSP页面展示
	session ==> 展示用户信息,获取在用户需要操作后台过程中,带有用户的ID属性

2. EL表达式

2.1 EL概述和目标
	表达式语言(Expression Language),或称EL表达式,简称EL,是Java中的一种特殊的通用编程语言,借鉴于JavaScript和XPath。主要作用是在Java Web应用程序嵌入到网页(如JSP)中,用以访问页面的上下文以及不同作用域中的对象 ,取得对象属性的值,或执行简单的运算或判断操作。EL在得到某个数据时,会自动进行数据类型的转换
	
	希望在前端页面中,不再出现任何的Java代码

${数据名}
	${变量名} ${List集合} ${Map} ${数组}
    是从域对象中取出数据,顺序
    	pageContext > request > session > application
    	1. request域
    	2. session域
2.2 EL解析基本变量
<%--
  Created by IntelliJ IDEA.
  User: Anonymous
  Date: 2020/9/9
  Time: 11:56
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>01-el</title>
    <style>
        h1 {
            color: springgreen;
        }
    </style>
</head>
<body>
<%-- EL表达式从域对象中检索数据,找到对应userName内容 --%>
<h1>${userName}</h1>
<hr>
<%-- .id .name 对应实际操作的内容是Getter方法--%>
<h2>${person.id}</h2>
<h2>${person.name}</h2>
</body>
</html>
2.3 EL解析List集合
<%--
  Created by IntelliJ IDEA.
  User: Anonymous
  Date: 2020/9/9
  Time: 12:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>${stringList[0]}</h1>
<h1>${stringList[1]}</h1>
<h1>${stringList[2]}</h1>
<h1>${stringList[3]}</h1>
<h1>${stringList[4]}</h1>
<hr>
<h1>${stringList.get(0)}</h1>
<h1>${stringList.get(1)}</h1>
<h1>${stringList.get(2)}</h1>
<h1>${stringList.get(3)}</h1>
<h1>${stringList.get(4)}</h1>

<hr>
<table width="150" border="1px" align="center">
    <tr>
        <th>ID</th>
        <th>Name</th>
    </tr>
    <tr>
        <td>${personList[0].id}</td>
        <td>${personList[0].name}</td>
    </tr>
    <tr>
        <td>${personList[1].id}</td>
        <td>${personList[1].name}</td>
    </tr>
    <tr>
        <td>${personList[2].id}</td>
        <td>${personList[2].name}</td>
    </tr>
    <tr>
        <td>${personList[3].id}</td>
        <td>${personList[3].name}</td>
    </tr>
    <tr>
        <td>${personList[4].id}</td>
        <td>${personList[4].name}</td>
    </tr>
</table>
</body>
</html>
2.4 EL解析Map双边队列
<%--
  Created by IntelliJ IDEA.
  User: Anonymous
  Date: 2020/9/9
  Time: 16:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>03-el</title>
</head>
<body>
<h1 style="color: red">${map.name}</h1>
  
<%--
    不可以使用
    <h1 style="color: springgreen">${map[name]}</h1>
--%>
<h1 style="color: deepskyblue">${map["name"]}</h1>
<hr>

<h1>${map.name}</h1>
<h1>${map.age}</h1>
<h1>${map.gender}</h1>
<h1>${map.salary}</h1>
</body>
</html>

2.5 EL解析数组
<%--
  Created by IntelliJ IDEA.
  User: Anonymous
  Date: 2020/9/9
  Time: 16:20
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>04-el</title>
</head>
<body>
<h1>${arr[0]}</h1>
<h1>${arr[1]}</h1>
<h1>${arr[2]}</h1>
<h1>${arr[3]}</h1>
<h1>${arr[4]}</h1>
</body>
</html>
2.6 EL表达式操作运算符
<%@ page import="java.util.ArrayList" %><%--
  Created by IntelliJ IDEA.
  User: Anonymous
  Date: 2020/9/9
  Time: 16:30
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>05-el</title>
</head>
<body>
<%
    request.setAttribute("num", 123);
    request.setAttribute("str", null);
    request.setAttribute("list", new ArrayList<String>());
%>
<h1>
    ${num - 10} <br>
    ${num + 10} <br>
    ${num * 10} <br>
    ${num / 10} <br>
    ${num % 10} <br>
    ${num > 10} <br>
    ${num < 10} <br>
    ${num >= 10} <br>
    ${num <= 10} <br>
    ${num == 10} <br>
    ${num != 10} <br><br>
    ${num != 10 && num > 100} <br>
    ${num == 10 || num > 124} <br>
    ${!(num == 10)} <br>
</h1>
<hr>
<h1>
<%--
empty 关键字
    1. 可以判断当前指向是否为null
    2. 可以判断当前数据内容是否为空内容
        例如: String ""
              List list.size() == 0
       从Servlet后台数据中得到一定的内容,内容没有数据可以判断
       列表展示内容
--%>
    ${str == null} <br> <%-- true--%>
    ${str != null} <br> <%-- false --%>
    试一下 ${empty str} <br> <%-- true --%>
    猜一猜 ${not empty str} <br> <%-- false --%>
        <br>
    到底是什么??? ${empty list}

</h1>
</body>
</html>
2.7 EL表示使用内置对象
<%--
  Created by IntelliJ IDEA.
  User: Anonymous
  Date: 2020/9/9
  Time: 16:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>
    <%-- 获取Cookie数据,可以用于获取用户上一次访问时间 IP --%>
    ${cookie.userName.value} <br>
    ${cookie.password.value} <br>
    <%-- 获取用户请求参数 --%>
    ${param.method} <br>
    ${param.name} <br>
    <%-- 项目Application初始化参数 --%>
    ${initParam.aaa}
</h1>
</body>
</html>

3. JSTL

3.1 JSTL概述
	JSP标准标签库(Java Server Page Standard Tag Library)是Java EE网络应用程序开发平台的组成部分。它在JSP规范的基础上,扩充了一个JSP的标签库来完成一些通用任务,比如XML数据处理、条件执行、数据库访问、循环和国际化。
	1. 循环
	2. 判断 
	3. 分支
	
需要JSTL第三方Jar包
	javax.servlet.jsp.jstl.jar
	jstl-impl.jar

在JSP页面中引入JSTL表达式
	<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
3.2 JSTL if 判断
<%--
  Created by IntelliJ IDEA.
  User: Anonymous
  Date: 2020/9/9
  Time: 17:27
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
    <title>JSTL if 判断</title>
</head>
<body>
<%
    request.setAttribute("num", 10);
    request.setAttribute("list", "list内容");
%>
<%--
JSTL表达式 内容中可以直接支持 EL表达式
test 是必要数据条件,if 之后 ()
--%>
<c:if test="${num > 5}">
    <h1>num > 5结果</h1>
</c:if>
<c:if test="${num > 10}">
    <h1>num > 10结果</h1>
</c:if>

<%-- empty在集合性质数据中使用众多!!! --%>
<c:if test="${empty list}">
    <h1>list为空</h1>
</c:if>
<c:if test="${not empty list}">
    <h1>解析List数据</h1>
</c:if>
</body>
</html>
3.3 JSLT 分支条件
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: Anonymous
  Date: 2020/9/9
  Time: 17:38
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>02-jstl</title>
</head>
<body>
<c:set var="num" value="59">
</c:set>
<%--
c:choose 分支结构
c:when 条件内容 必要数据是test
--%>
<c:choose>
    <c:when test="${num >= 90}"><h1>秀儿</h1></c:when>
    <c:when test="${num >= 80}"><h1>良儿</h1></c:when>
    <c:when test="${num >= 70}"><h1>中儿</h1></c:when>
    <c:when test="${num >= 60}"><h1>过儿</h1></c:when>
    <c:when test="${num < 60}"><h1>渣儿</h1></c:when>
</c:choose>
</body>
</html>
3.4 JSTL循环
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.qfedu.a_el.Person" %><%--
  Created by IntelliJ IDEA.
  User: Anonymous
  Date: 2020/9/9
  Time: 17:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>03-jstl</title>
</head>
<body>
<%
    ArrayList<String> list = new ArrayList<>();

    list.add("航海中路");
    list.add("陇海路");
    list.add("长江路");
    list.add("淮海路");
    list.add("金水路");
    list.add("黄河路");
    list.add("汉江路");

    request.setAttribute("list", list);

    ArrayList<Person> personList = new ArrayList<Person>();

    personList.add(new Person(1, "苟磊"));
    personList.add(new Person(2, "骚磊"));
    personList.add(new Person(3, "翻车磊"));
    personList.add(new Person(4, "翘臀"));
    personList.add(new Person(5, "十月光头磊"));
    personList.add(new Person(6, "一定会瘦下来的磊"));

    request.setAttribute("personList", personList);
%>
<%--
var=临时变量
varStatus=下标
items=集合/数组
begin=从哪里开始
end=到哪里结束
step=步进关系
--%>
<c:forEach items="${list}" var="str">
    <h1>${str}</h1>
</c:forEach>
<hr>
<table width="300px" border="1px" align="center">
    <tr>
        <th>ID</th>
        <th>Name</th>
    </tr>

    <c:if test="${not empty personList}">
        <c:forEach items="${personList}" var="person">
            <tr>
                <td>${person.id}</td>
                <td>${person.name}</td>
            </tr>
        </c:forEach>
    </c:if>
</table>
</body>
</html>

举报

相关推荐

0 条评论