文章目录
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>