前言:

本文内容:JSP内置对象及作用域、JSP JSTL标签 EL表达式

推荐免费JavaWeb入门到实战视频:【狂神说Java】JavaWeb入门到实战_哔哩哔哩_bilibili

JSP内置对象及作用域

JSP 9大内置对象

  • PageContext
  • Request
  • Response
  • Session
  • Application(ServletContext)
  • config(ServletConfig)
  • out
  • page
  • exception

页面取值得关系图

122

常用内置对象及作用域

1
2
3
4
5
6
7
8
9
<%
// scope:作用域
// 双亲委派机制
// 从底层到高层(作用域) page->request->session->application
pageContext.setAttribute("name1","张三"); // 在一个页面中有效
request.setAttribute("name2","张三2"); // 在一次请求中有效
session.setAttribute("name3","张三3"); // 在一次会话中有效
application.setAttribute("name4","张三4"); // 在服务器中有效
%>

JSP、JSTL标签、EL表达式

EL表达式

表达式: ${value}

  • 获取数据
  • 执行运算
  • 获取web开发的常用对象

JSP标签

1
2
3
4
5
6
7
8
<%--JSP标签--%>
<%--<jsp:include page="header.jsp"></jsp:include>--%>
<%--请求转发 携带参数--%>
<%--jsp标签中间不要写注释--%>
<jsp:forward page="/jspTag2.jsp">
<jsp:param name="person1" value="person1"/>
<jsp:param name="person2" value="person2"/>
</jsp:forward>

JSTL表达式

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

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

分为以下五大类:

  • 核心标签(掌握)
  • 格式化标签
  • SQL 标签
  • XML 标签
  • JSTL 函数

核心标签

最常用的 JSTL标签。

1
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
标签 描述
<c:out> 用于在JSP中显示数据,就像<%= … >
<c:set> 用于保存数据
<c:remove> 用于删除数据
<c:catch> 用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if> 与我们在一般程序中用的if一样
<c:choose> 本身只当做<c:when><c:otherwise>的父标签
<c:when> <c:choose>的子标签,用来判断条件是否成立
<c:otherwise> <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import> 检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach> 基础迭代标签,接受多种集合类型
<c:forTokens> 根据指定的分隔符来分隔内容并迭代输出
<c:param> 用来给包含或重定向的页面传递参数
<c:redirect> 重定向至一个新的URL
<c:url> 使用可选的查询参数来创造一个URL

JSTL标签库使用步骤

  • 引入对应的taglib
  • 使用其中的方法
  • 在Tomcat也需要引入jstl的包

核心标签练习

<c:if> <c:out>练习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入JSTL核心标签库--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>if</title>
</head>
<body>
<h1>if测试</h1>
<hr>
<%--${param.参数名} 表达式获取表单中的数据--%>
<form action="jstl.jsp" method="get">
姓名:<input type="text" name="username" value="${param.username}">
<input type="submit" value="提交">
</form>
<%--如果提交的用户名是管理员 则登录成功--%>
<c:if test="${param.username=='admin'}" var="isadmin" >
<c:out value="管理员登录"/>
</c:if>
<c:out value="${isadmin}"/>
</body>
</html>

<c:choose> <c:when> <c:set>练习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入JSTL核心标签库--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Choose</title>
</head>
<body>

<%--定义一个变量--%>
<c:set var="score" value="90"></c:set>
<%--通过choose判断--%>
<c:choose>
<c:when test="${score>=85}">
你的成绩优秀
</c:when>
<c:when test="${score>=60}">
你的成绩一般
</c:when>
<c:when test="${score>=0}">
你的还需要努力
</c:when>
</c:choose>
</body>
</html>

<c:forEach>练习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入JSTL核心标签库--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
<title>forEach</title>
</head>
<body>

<%--定义一个数组--%>
<%
ArrayList<String> list=new ArrayList<String>();
list.add(0,"张三");
list.add(1,"李四");
list.add(2,"王五");
list.add(3,"赵六");
list.add(4,"小王");
request.setAttribute("list",list);
%>
<%--使用forEach遍历数组--%>
<%--var:遍历出的值 item:便利的数组--%>
<h2>用户信息:</h2>
<c:forEach var="li" items="${list}">
<c:out value="${li}"/><br>
</c:forEach>
<hr>
<%--begin:起始序列 end:结束序列 step:步长--%>
<h2>用户信息:</h2>
<c:forEach var="li" items="${list}" begin="1" end="3" step="2">
<c:out value="${li}"/><br>
</c:forEach>

</body>
</html>

格式化标签

用来格式化并输出文本、日期、时间、数字。

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

SQL 标签

提供了与关系型数据库(Oracle,MySQL,SQL Server等等)进行交互的标签

1
2
<%@ taglib prefix="sql" 
uri="http://java.sun.com/jsp/jstl/sql" %>

XML 标签

提供了创建和操作XML文档的标签。

1
2
<%@ taglib prefix="x" 
uri="http://java.sun.com/jsp/jstl/xml" %>

在使用xml标签前,你必须将XML 和 XPath 的相关包拷贝至你的Tomcat 安装目录的lib下:

JSTL 函数

包含一系列标准函数,大部分是通用的字符串处理函数

1
2
<%@ taglib prefix="fn" 
uri="http://java.sun.com/jsp/jstl/functions" %>