JSP常用标签:简称JSTL(JavaServer Pages Standard Tag Library )。JSTL是Java中的一个定制标记库集。是一个JSP标签集合。
定制标记库集:不用自己编写,直接使用。
作用:
(1)实现JSP页面中的代码复用。
代码复用原理:基于标签库原理,重复率较高的代码块支持复用,提高效率。
(2)书写JSP页面时可读性更强。
原因:长得很像XML,方便前端查看和参与开发。
JSP代码的效果:
<%
String role = "";
if(request.getParameter("role") != null){
role = request.getParameter("role");
if("user".equals(role)){
%>
欢迎用户!
<%
}
if("admin".equals(role)){
%>
欢迎管理员!
<%
}
}
%>
JSTL标签的效果:
<c:if test="${param.role == 'user'" var="adminchok">
<c:out value="欢迎用户!">c:out>
c:if>
<c:if test="${param.role == 'admin'" var="adminchok">
<c:out value="欢迎管理员!">c:out>
c:if>
第一步:确定服务器的版本。
原因:JSTL标签和Servlet及JSP页面有着比较严格的版本对应关系。版本不正确,容易抛出异常。
Tomcat7.0(JSTL1.1.2)
第二步:下载对应的jakarta-taglibs-standard-1.1.2。解压。
第三步:找到\jakarta-taglibs-standard-1.1.2\lib\jstl.jar和\jakarta-taglibs-standard-1.1.2\lib\standard.jar两个jar包,并复制。
第六步:粘贴到项目名\WebContent\WEB-INF\lib中。在点击右键—BuildPath—a…。
(1)核心标签
(2)格式化标签
(3)SQL标签
(4)XML标签
EL:Expression Language。
EL表达式访问作用域的顺序是从小到大的:
pageScope→requestScope→sessionScope→applicationScope
解决JSTL标签中属性“value = 变量”的问题。常与JSTL标签配合使用,使得JSP页面更直观、写法更简单。
${表达式}
普通写法:
<%=session.getValue("name") %>
(JSTL + EL表达式)写法:
<c:out value="${sessionScope.name}" />
(1)通常情况下,在EL表达式中,二者可通用。
${user.sex} <=> ${user["sex"]}
(2)集合元素定位。使用[]
${booklist[0].price}
(3)包含特殊字符。使用[]。
${user["frist_nme"]}
(4)通过变量动态取值。使用[]。
${user[param]} <=> ${user.name} or ${user.sex}..........
JSP内置对象 | EL名称 |
---|---|
page | pageScope |
request | requestScope |
session | sessionScope |
application | applicationScope |
限定搜索范围时:
用户名:${sessionScope.username}
未设置范围是时:
从小到大查找(page →request→session →application)。
用户名:${username}
用户名:<c:out value="${username}">c:out>
问题:获取文本框输入的数字。
普通方法:
<%
String str = request.getParameter("id");
int id1 = Integer.parseInt(str);
id1 = id1 + 1;
%>
EL表达式方法:
<c:out value="${param.id + 1}"/>
JSP内置对象 | EL名称 |
---|---|
pageContext | PageConext实例对象。对应于当前页面的处理。 |
pageScope | 页面作用域(Map类) |
requestScope | 请求作用域(Map类) |
sessionScope | 会话作用域(Map类) |
applicationScope | 应用程序作用域(Map类) |
param | 请求参数的主要值(Map类) |
paramValues | 请求参数的所有值作为String数组存储(Map类) |
Header | 请求头的主要值(Map类) |
headerValues | 请求头的所有值(Map类) |
cookie | 请求的cookie值(Map类) |
initParam | Web应用程序初始化参数(Map类) |
类别 | 运算符 |
---|---|
算术运算符 | +、-、*、/(或div)、%(或mod)。 |
关系运算符 | ==(eq)、!=(ne)、<(lt)、>(gt)、<=(le)、>=(ge)。 |
逻辑运算符 | &&(and)、||(or)、!(not)。 |
验证运算符 | empty。 |
<%
String username = "张三";
request.setAttribute("username",username);
%>
<c:out value="${empty.username}"><c:out>
<c:out value="小于号:<。大于号:>" escapeXml="false"/>
标签 | 含义 |
---|---|
用于在JSP中显示数据,就像<%= … > | |
用于保存数据。 | |
用于删除数据 | |
用来处理产生错误的异常状况,并且将错误信息储存起来 | |
与我们在一般程序中用的if一样 | |
本身只当做 |
|
检索一个绝对或相对 URL,然后将其内容暴露给页面 | |
遍历集合 | |
字符串截取 | |
用来给包含或重定向的页面传递参数 | |
重定向至一个新的URL. | |
使用可选的查询参数来创造一个URL |
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
语法1:
<c:set var="varName" scope="scopeName">var_valuec:set>
<jsp:useBean id="objectName" class="packageName.className"/>
<c:set target="${objectName}" property="objectAttribute" value="objectAattributeValue"/>
<c:remove var="waitDeletVarName"/>
<c:catch var="errorName"/>
<c:set target="aa" property="bb">此对象未创建,会出错!c:set>
c:catch>
<c:out value="${errorName}"/>
<form action="firstDemo.jsp" method="post">
<input type="text" name="score" value="${param.score}"/>
<input type="submit"/>
form>
<c:if test="${param.score>=90}" var="result" scope="page" />
<c:out value="优秀"/>
c:if>
<c:out value="${pageScope.result}"/>
标签 | 含义 |
---|---|
fmt:formatNumber | 使用指定的格式或精度格式化数字 |
fmt:parseNumber | 解析一个代表着数字,货币或百分比的字符串 |
fmt:formatDate | 使用指定的风格或模式格式化日期和时间 |
fmt:parseDate | 解析一个代表着日期或时间的字符串 |
fmt:bundle | 绑定资源 |
fmt:setLocale | 指定地区 |
fmt:setBundle | 绑定资源 |
fmt:timeZone | 指定时区 |
fmt:setTimeZone | 指定时区 |
fmt:message | 显示资源配置文件信息 |
fmt:requestEncoding | 设置request的字符编码 |
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
标签 | 含义 |
---|---|
sql:setDataSource | 指定数据源 |
sql:query | 运行SQL查询语句 |
sql:update | 运行SQL更新语句 |
sql:param | 将SQL语句中的参数设为指定值 |
sql:dateParam | 将SQL语句中的日期参数设为指定的java.util.Date 对象值 |
sql:transaction | 在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行 |
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
标签 | 含义 |
---|---|
与<%= … >,类似,不过只用于XPath表达式 | |
解析 XML 数据 | |
设置XPath表达式 | |
判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体 | |
迭代XML文档中的节点 | |
将XSL转换应用在XML文档中 | |
与 |
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
在使用xml标签前,你必须将XML 和 XPath 的相关包拷贝至你的
XercesImpl.jar下载地址: http://www.apache.org/dist/xerces/j/
xalan.jar下载地址: http://xml.apache.org/xalan-j/index.html
标签 | 含义 |
---|---|
fn:contains() | 测试输入的字符串是否包含指定的子串 |
fn:containsIgnoreCase() | 测试输入的字符串是否包含指定的子串,大小写不敏感 |
fn:endsWith() | 测试输入的字符串是否以指定的后缀结尾 |
fn:escapeXml() | 跳过可以作为XML标记的字符 |
fn:indexOf() | 返回指定字符串在输入字符串中出现的位置 |
fn:join() | 将数组中的元素合成一个字符串然后输出 |
fn:length() | 返回字符串长度 |
fn:replace() | 将输入字符串中指定的位置替换为指定的字符串然后返回 |
fn:split() | 将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回 |
fn:startsWith() | 测试输入字符串是否以指定的前缀开始 |
fn:substring() | 返回字符串的子集 |
fn:substringAfter() | 返回字符串在指定子串之后的子集 |
fn:substringBefore() | 返回字符串在指定子串之前的子集 |
fn:toLowerCase() | 将字符串中的字符转为小写 |
fn:toUpperCase() | 将字符串中的字符转为大写 |
fn:trim() | 移除首位的空白符 |
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:out value="${fn:contains('ASDSFG','S')}"/>