JSP-常用的标签(JSTL+EL)

一、含义

1.1 JSTL含义

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>	

1.2 JSTL环境搭建

第一步:确定服务器的版本。
原因: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.3 四大类标签

(1)核心标签
(2)格式化标签
(3)SQL标签
(4)XML标签

1.4 EL表达式

1.4.1 含义

EL:Expression Language。
EL表达式访问作用域的顺序是从小到大的:
pageScope→requestScope→sessionScope→applicationScope

1.4.2 作用

解决JSTL标签中属性“value = 变量”的问题。常与JSTL标签配合使用,使得JSP页面更直观、写法更简单。

1.4.3 语法

${表达式}
普通写法:

<%=session.getValue("name") %>

(JSTL + EL表达式)写法:

<c:out value="${sessionScope.name}" />

1.4.4 “.”与“[]”运算符

(1)通常情况下,在EL表达式中,二者可通用。

${user.sex} <=> ${user["sex"]}

(2)集合元素定位。使用[]

${booklist[0].price}

(3)包含特殊字符。使用[]。

${user["frist_nme"]}

(4)通过变量动态取值。使用[]。

${user[param]} <=> ${user.name} or ${user.sex}..........

1.4.5 EL变量

JSP内置对象 EL名称
page pageScope
request requestScope
session sessionScope
application applicationScope

限定搜索范围时:

用户名:${sessionScope.username}

未设置范围是时:
从小到大查找(page →request→session →application)。

用户名:${username}
用户名:<c:out value="${username}"></c:out>

1.4.6 EL自动类型转换

问题:获取文本框输入的数字。
普通方法:

<%
	String str = request.getParameter("id");
	int id1 = Integer.parseInt(str);
	id1 = id1 + 1;
%>

EL表达式方法:

<c:out value="${param.id + 1}"/>

1.4.7 EL隐式对象

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类)

1.4.8 EL运算符

类别 运算符
算术运算符 +、-、*、/(或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>
<!-- 结果:false。-->
<!-- 为""或null时,结果才为true。-->
<!-- 使用转义字符时,escapeXml = "false" -->
<c:out value="小于号:&lt。大于号:&gt" escapeXml="false"/>

二、核心标签

标签 含义
<c:out> 用于在JSP中显示数据,就像<%= … >
<c:set> 用于保存数据。
<c:remove> 用于删除数据
<c:catch> 用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if> 与我们在一般程序中用的if一样
<c:choose> 本身只当做<c:when>和<c:otherwise>的父标签
<c:when> <c:choose>的子标签,用来判断条件是否成立
<c:otherwise> <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import> 检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach> 遍历集合
<c:forTokens> 字符串截取
<c:param> 用来给包含或重定向的页面传递参数
<c:redirect> 重定向至一个新的URL.
<c:url> 使用可选的查询参数来创造一个URL
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

2.1 set标签

2.1.1 存值到scope(四种作用域对象)中。

语法1:

<c:set var="varName" scope="scopeName">var_value</c:set>

2.1.2 存值到JavaBean中。

<jsp:useBean id="objectName" class="packageName.className"/>
<c:set target="${objectName}" property="objectAttribute" value="objectAattributeValue"/>

2.2 remove标签

<c:remove var="waitDeletVarName"/>

2.3 catch标签

<c:catch var="errorName"/>
	<c:set target="aa" property="bb">此对象未创建,会出错!</c:set>
</c:catch>
<!-- 查看出错信息 -->
<c:out value="${errorName}"/>

2.4 if标签

<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标签

标签 含义
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" %>

五、XML标签

标签 含义
<x:out> 与<%= … >,类似,不过只用于XPath表达式
<x:parse> 解析 XML 数据
<x:set> 设置XPath表达式
<x:if> 判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体
<x:forEach> 迭代XML文档中的节点
<x:choose> <x:when>和<x:otherwise>的父标签
<x:when> <x:choose>的子标签,用来进行条件判断
<x:otherwise> <x:choose>的子标签,当<x:when>判断为false时被执行
<x:transform> 将XSL转换应用在XML文档中
<x:param> 与<x:transform>共同使用,用于设置XSL样式表

5.1 导包

<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>

5.2 注意

在使用xml标签前,你必须将XML 和 XPath 的相关包拷贝至你的<Tomcat 安装目录>\lib下:
XercesImpl.jar下载地址: http://www.apache.org/dist/xerces/j/

xalan.jar下载地址: http://xml.apache.org/xalan-j/index.html

六、JSTL函数

标签 含义
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() 移除首位的空白符

6.1 导包

<%@ taglib prefix="fn"  uri="http://java.sun.com/jsp/jstl/functions" %>

6.2 示例

<c:out value="${fn:contains('ASDSFG','S')}"/>

猜你喜欢

转载自blog.csdn.net/lizengbao/article/details/87932325