JSP的标签技术
1. 背景
- Sun公司推出了自定义标签技术,用于替代JSP中的Java代码
- apche推出了一套标准标签
- Sun公司在JSP的更新中引入标准标签
2. EL和JSTL
- EL表达式语言,替代JSP表达式 <%= %>
- JSTL(JSP标准标签库),替代 <% %>
2. EL(表达式语言,EL表达式)
-
用于替代JSP中的JSP表达式 <%= java表达式 %>
-
语法: ${ 表达式 }
-
功能:用于查询数据,并在页面上输出数据
-
可以输出常量,简单运算
-
可以输出变量
- 输出的变量必须保存在Scope(作用域中)
- 从小到大从Scope中搜索目标变量,找到则直接显示,都找不到则什么都不显示(request,session,application)
- 可以在变量前通过 requestScope/sessionScope/applicationScope来指定 仅从对应的作用域中查找该变量,找到则显示,找不到则什么都不显示
- 可以在变量前添加 param. 来限定从request的请求参数中获取变量
-
可以输出数组中的数据
- 语法 ${arr[0]}
- 如果下标越界,则什么都不输出,也没有异常
- EL表达式不能遍历数组
-
可以输出集合中的数据
- 语法 ${list[0]}
- 如果下标越界,则什么都不输出,也没有异常
-
可以输出Map集合中的数据
- 语法:
- ${map.key}
- ${map[“key”]}
- 两种语法都可以,第2种更为安全
- 语法:
-
可以输出Java对象中的数据
- 语法:
- ${user.name}
- 实际上是调用 User对象的 getName()
- 因此必须保证User有对应的get方法
- 语法:
-
-
记忆:想要JSP页面上动态输出数据,优先考虑EL表达式
3. 作用域的概念
4. JSTL(JSP Standard Tag Library)
可以在JSP中使用的标准标签库,用于替代JSP中所有的Java代码
1. 如何使用JSTL?
-
导包:jstl-1.2.jar
-
在jsp文件中使用 <%@ taglib … %> 引入jstl标签库
- uri="" 指定引入哪个具体的标签库
- core:核心库,包含了最常用的一些标签
- fmt: 和格式化相关的库
- functions:是EL可以使用的一些标签
- sql:JSP访问数据库的标签
- xml:JSP解析xml文件的标签
- prefix=“c”,标签的前缀,使用<c: 代表使用当前标签库的标签
- uri="" 指定引入哪个具体的标签库
-
在JSP中根据需求,使用具体的标签
-
<c:if > 判断 ->if
- test=“布尔值”
- true -> <c:if> 中间的内容会被执行 </c:if>
- false -> <c:if> 中间的内容不执行 </c:if>
- var=“变量名”
- scope=“作用域”
- c:if标签会自动将test判断的值以 var为变量名,存入scope对应的作用域中
- test=“布尔值”
-
<c:choose > 判断 ->switch
- <c:when test=“布尔表达式” >
- 可以有多组
- <c:otherwise> ->相当于default
- <c:when test=“布尔表达式” >
-
<c:forEach > 循环
- 实现普通for循环
- begin 开始值
- end 终止值
- step 步长
- var 循环变量
- 实现增强for循环
- items 指定遍历哪个数组/集合
- var 循环变量
- 循环状态 varStatus
- 代表当前循环状态的对象
- count:当前循环的次数,从1开始统计
- first:boolean,当前是否是循环的第一次
- last: boolean,当前是否是循环的最后一次
- 代表当前循环状态的对象
- 实现普通for循环
-
<fmt:formatNumber >
- pattern: 指定数字的显示样式 pattern="###,###.##"
- value: 指定显示的变量 value="${price}"
-
5. JSP的九大内置对象
在JSP中写Java代码,可以直接使用9个对象
1. request
2. response
3. session
4. application : ServletContext
5. config : ServletConfig
6. page : Object :代表当前Servlet实例
7. out : JspWriter:用于输出html的内容
8. pageContext : PageContext :页面上下文,当前JSP的运行环境
9. exception:Throwable : 代表上一个页面产生的异常信息
1. pageContext
- 代表当前jsp运行环境的对象
- 当一个请求到达当前JSP时,会创建一个pageContext对象,代表本次jsp的运行环境
- 当该请求离开JSP时,pageContext会被销毁