JavaWeb——JSTL
二、核心标签库的使用
- 核心标签库可以划分为表达式标签、URL 相关标签、流程控制标签和循环标签。
1、表达式标签
- 表达式标签共有 4 个,分别为:<c:out>、<c:set>、<c:remove> 和 <c:catch>。
1.1、<c:cout> 标签
- 该标签的功能,类似于 JSP 的 <%=expression%>;该标签有两种语法格式,分别如下:
<c:out="expression"[escapeXml="true|false"][default="defaultValue"]/> <c:out value="expression"[escapeXml="true|false"]> defaultValue </c:out>
- value:用于指定将要输出的变量或表达式。
- escapeXml:可选属性,用于指定是否转换特殊字符,默认值为 true;被转换的字符如下:
字符 字符实体代码 < < ’ ' & & > > " " - 使用示例:
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>JSTL 应用</title> <style type="text/css"> body{ align-items: center; text-align: center; } </style> </head> <body> <h2>应用<c:out></h2> escapeXml 为 true 时: <c:out value="水平标记线<hr>" escapeXml="true"></c:out> <br> escapeXml 为 false: <c:out value="水平标记线<hr>" escapeXml="false"></c:out> </body> </html>
- 页面效果如下:
1.2、<c:set>
- 该标签用于在指定的page、request、session 或 application 范围中定义保存某个值的变量,或为指定的对象设置属性值。
- 该标签的使用语法有如下:
<c:set var="name" value="value" [scope="范围"]/> <c:set var="name"[scope="范围"]> 标签体 </c:set> <c:set value="value" target="object" property="propName"/> <c:set target="object" property="propName"> 标签体 </c:set>
- var:用于指定变量名;
- value:用于指定变量值;
- scope:用于指定变量的作用域,默认为 page。
- target:用于指定存储变量值或者标签体的目标对象。
- property:用于指定目标对象储存数据的属性名。
- 示例如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title><c:set></title> <style type="text/css"> body{ align-items: center; text-align: center; } </style> </head> <body> <ul> <li>定义 request 范围内的变量 agentname <c:set var="agentname" value="吴雅男" scope="request"/> <c:out value="agentname的值:"/>${requestScope.agentname} </li> <li> 利用Jsp:useBean 为 Info 的 str 赋值: <jsp:useBean id="t" class="com.lyq.JSTLFunctionSet.Info"> <jsp:setProperty name="t" property="str" value="我在测试"/> </jsp:useBean> ${t.str} </li> <li> 利用<c:set> 为 Info 的 str 赋值: <c:set target="${t}" property="str">trying</c:set> <c:out value="${t.str}"></c:out> </li> <li> 利用<c:set> 为 StudentInfo 的 name 和 ID 赋值: <jsp:useBean id="stu" class="com.lyq.bean.StudentInfo"/> <c:set target="${stu}" property="name">吴雅男</c:set> <c:set value="201703300544" target="${stu}" property="ID"/> <c:out value="name 值:${stu.name} ID: ${stu.ID}"></c:out> </li> </ul> </body> </html>
- 结果如下:
1.3、<c:remove>
- <c:remove> 标签用于移除指定的 JSP 范围内的变量,使用格式如下:
<c:remove var="name"[scope="范围“]/>
1.4、<c:catch>
- 该标签用于捕获页面出现的异常,并可以将捕获的异常信息保存到指定的变量中,其用法格式如下:
<c:catch [var="exception"]> .... </c:catch>
- 标签首尾之间为可能出现异常的代码,总之与 Java、C/C++ 等编程语言的 try…catch 结构相似。
1.5、示例
- <c:remove> 和 <c:catch> 的示例代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>表达式标签</title> </head> <body> <h2>1、<c_remove></h2> <ul> <li> 声明一个作用域在 request 范围内的变量 temp, <c:set var="temp" value="若道天涯有回路,漫漫黄沙掩枯骨!" scope="request"/> 其值为:<c:out value="${temp}"/> </li> <li> 使用 <c:remove> 移除变量 temp, <c:remove var="temp" scope="request"/> 此时 temp 的值为:<c:out value="${temp}" default="空"/> </li> </ul> <h2>2、<c:catch></h2> <c:catch var="error"> <jsp:useBean id="stu" class="com.lyq.bean.StudentInfo"/> <c:set target="${stu}" property="grade">85</c:set> </c:catch> <c:out value="捕获的异常信息为:${error}"/> </body> </html>
- 效果如下: