目录
域对象
在 JSP 九大内置对象中,包含四个域对象,它们分别是:pageContext(page 域对象)、request(request 域对象)、session(session 域对象)、以及 application(application 域对象)。
JSP 中的 4 个域对象都能通过以下 3 个方法,对属性进行保存、获取和移除操作。
返回值类型 | 方法 | 作用 |
---|---|---|
void | setAttribute(String name, Object o) | 将属性保存到域对象中 |
Object | getAttribute(String name) | 获取域对象中的属性值 |
void | removeAttribute(String name) | 将属性从域对象中移除 |
JSP 中的 4 个域对象的作用域各不相同,如下表。
作用域 | 描述 | 作用范围 |
---|---|---|
page | 如果把属性保存到 pageContext 中,则它的作用域是 page。 | 该作用域中的属性只在当前 JSP 页面有效,跳转页面后失效。 |
request | 如果把属性保存到 request 中,则它的作用域是 request。 | 该作用域中的属性只在当前请求范围内有效。
|
session | 如果把属性保存到 session 中,则它的作用域是 session。 | 该作用域中的属性只在当前会话范围内有效,网页关闭后失效。 |
application | 如果把属性保存到 application 中,则它的作用域是 application。 | 该作用域中的属性在整个应用范围内有效,服务器重启后失效。 |
EL表达式
EL 表达式语法如下:
${EL表达式}
EL 表达式语法以${
开头,以}
结束,中间为合法的表达式。
示例
${param.name}
表示获取参数 name 的值,它等同于 <%=request.getParameter('name') %>
。从形式和语法上可以看出,EL 表达式简化了 JSP 原有的表达式。在实际开发中,EL 表达式也是经常使用的方式。
EL 表达式定义了许多运算符,如算术运算符、比较运算符、逻辑运算符等,使用这些运算符,可以使 JSP 页面更加简洁。
EL比较运算符
比较运算符用来实现两个表达式的比较,进行比较的表达式可以是数值型或字符串。EL 表达式比较运算符如下:
EL比较运算符 | 说明 | 范例 | 结果 |
---|---|---|---|
== 或 eq | 等于 | ${6==6} 或 ${6 eq 6} ${"A"="a"} 或 ${"A" eq "a"} | true false |
!= 或 ne | 不等于 | ${6!=6} 或 ${6 ne 6} ${“A"!=“a”} 或 ${“A” ne “a”} | false true |
< 或 lt | 小于 | ${3<8} 或 ${3 lt 8} ${"A"<"a"} 或 ${"A" lt "a"} | true true |
> 或 gt | 大于 | ${3>8} 或 ${3 gt 8} ${"A">"a"} 或 ${"A" gt "a"} | false false |
<= 或 le | 小于等于 | ${3<=8} 或 ${3 le 8} ${"A"<="a"} 或 ${"A" le "a"} | true true |
>= 或 ge | 大于等于 | ${3>=8} 或 ${3 ge 8} ${"A">="a"} 或 ${"A" ge "a"} | false false |
条件运算符
EL 表达式中,条件运算符的语法和 Java 的完全一致,如下:
${条件表达式?表达式1:表达式2}
empty
empty 用来判断 EL 表达式中的对象或者变量是否为空。若为空或者 null,返回 true,否则返回 false
其中,条件表达式用于指定一个判定条件,该表达式的结果为 boolean 类型。如果该表达式的运算结果为 true,则返回表达式 1 的值;反之,返回表达式 2 的值。
JSTL
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签
JSTL标准标签库内的标签
通用标签的使用
条件标签的使用
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
判断条件表达式 变量名 指定var变量的作用域
<c:if test="codition" var="name" scope="application" >
</c:if>
迭代标签
items指定要遍
历的集合对象 变量名 end指定迭代到集合的第几位结束
<c:forEach items=collection var=name begin=start end=end step=count>
begin指定从集合的第几位开始 Step指定迭代的增量
循环体代码
</forEach>