1.为什么要使用JSP标签(JSTL):
- 方便标签复用
- 在展示后端数据时,如,HashMap、List 数据集等,方便操作。
2.JSTL的环境搭建:
- JSTL 标签和 Servlet 及 JSP 页面有着严格的版本对应关系,且版本不对应很容易抛出异常。
- 建议组合:Tomcat7.0 + JSTL1.1.2
3.JSTL 核心标签及 EL 表达式的使用:
- 第一个JSTL 程序:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 导入 jstl 标签库 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 使用标签输出常量或者变量 -->
<c:out value="JSTL 学习第一步!"></c:out>
</body>
</html>
- JSTL 标签的四大分类:
- 核心标签(重点)
- 格式化标签
- SQL 标签
- XML 标签
- JSTL 函数(很常用):
- EL 表达式:
- 什么是EL表达式:Expression Language,经常与JSTL 配合使用,使得 JSP 页面更直观,写法更简单。
- 例子:
“`
<%=session.getValue(“name”) %>
- EL 表达式的格式:用"$"定界,内容包括在花括号”{}“中。
`${}`
- "." 与 "[]" 运算符:通常情况下是通用的。比如,
`${user.sex}` `${user["sex"]}`
- "[]"还可以用来进行集合元素中的定位:`${booklist[0].price}`
- 一下两种情况,两者不通用:
1. 包含特殊字符:
`${user.first-name} //错误写法` `${user["first-name"]} //正确写法`
2. 通过变量动态获取值:`${user[param]}` ,param可以是name或sex等;但是"."的写法是`${user.name}` `${user.sex}` 等等。
- EL 变量:
| JSP内置对象 | EL名称 |
| ------------|
|Page|PageScope|
|Request|RequestScope
|Session|SessionScope
|Application|ApplicationScope
注释:在EL使用与JSP内置对象同样能的EL 变量,如上表中的对应关系。
- EL 自动类型转换:
普通写法:
`String count = request.getParameter("count");
int count = Integer.parseInt(count);
count = count + 2;`
EL写法:
`${param.count + 20}`
- EL隐式对象:除了上表四种常用的之外,还有其他对象。
|序号|隐式对象|意义
|-----
|1|pageContext|PageContext 实例对应于当前页面的处理
|2|pageScope|与页面作用域属性的名称和值相关联的Map类
||requestScope|与请求作用域属性的名称和值相关联的Map类
||sessionScope|与会话作用域属性的名称和值相关联的Map类
||applicationScope|与应用程序作用域属性的名称和值相关联的Map类
||param|按名称存储请求参数的主要值的Map类
||paramValues|将请求参数的所有值作为String数组存储的 Map 类
||Header|按名称存储请求头主要值的 Map 类
||headerValues|将请求头的所有值作为 String 数组存储的 Map 类
||cookie|按名称存储请求附带的 cookie 的 Map 类
|11|initParam|按名称存储 Web 应用程序上下文初始化参数的 Map 类
- EL 运算符:
运算符允许对数据和文字进行组合及比较。如下表,
|类别|运算符
|--
|算术运算符|+、-、*、/、%(mod)
|关系运算符|==、!=、<、>、<=、>=
|逻辑运算符|&&、||、!
|验证运算符|empty
验证运算符(empty):对于验证数据特别有用。可以将empty和表达式配合使用,通过判断结果值(true or false)来判断表达式是否为NULL。如下例子:
`String userName = "";
request.setAttribute("userName", userName);
<c:out value="${empty userName}"></c:out>
`
- JSTL核心标签:
- out标签用法,见例子:
```
<!-- 使用标签输出常量或者变量 -->
<c:out value="JSTL 学习第一步!"></c:out>
<!-- 输出变量 -->
<%
String userName = "xiaoyu";
%>
<c:out value="${userName}"></c:out><br>
<!-- 输出变量时,当变量不存在时,通过 default 属性输出默认值 -->
<c:out value="${userName1}" default="error"></c:out><br>
<!-- 使用转义字符 -->
<c:out value="<out标签>" escapeXml="false"></c:out>
- set标签:
- 循环控制标签: