javaweb之标准标签库(JSTL)

本文详细介绍Java标准标签库(JSTL)的功能与使用方法,包括核心标签库、I18N标签库、SQL标签库、XML标签库及函数标签库。通过示例展示如何利用JSTL简化JSP页面的开发工作。

首先我们先来通过一段代码来看看标签库到底是干什么用的。

使用java脚本实现对集合的遍历

<% 
		List<Book> bookList = (List<Book>) session.getAttribute("bookList");
	if(bookList!==null){
		for(Book book : bookList){
			out.println(book.getBookName());
		}
	}
	%>

使用JSTL实现对集合的遍历

<c:forEach items="${seesionScope.bookList}" var ="book">
		${book.bookName}
</c:forEach>c:forEach>

从上面的代码中我们明显能看出使用JSTL实现集合的遍历,代码量明显的减少,更加简洁,这就是JSTL的好处,下面我们就来详细的介绍一下JSTL的使用。

JSTL函数库分类

标签库前置名称URL示例
核心标签库chttp://java.sun.com/jsp/jstl/core<c:out>
I18N标签库fmthttp://java.sun.com/jsp/jstl/fmtfmt:formatDate
SQL标签库sqlhttp://java.sun.com/jsp/jstl/sqlsql:query
XML标签库xhttp://java.sun.com/jsp/jstl/xml<x:forBach>
函数标签库fnhttp://java.sun.com/jsp/jstl/functionsfn:split
(1)核心标签库

语法

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

核心表签库按功能又分为4类

  1. 通用标签,用于操作变量
  2. 条件标签,用于流程控制
  3. 迭代标签,用于循环遍历集合
  4. URL标签,用于针对URL相关的操作。
1.1 通用标签

①<c:out>标签
<c:out>标签用于输出数据,等同于<%= 表达式%>
语法

<c:out value="value" [ escapeXml="{true|false}"]  [default="defailtValue"]/>
  • value 表示要输出的数据,可以是jsp表达式,EL表达式或者静态值。
  • escapeXml 表示是否将>,<,&等字符进行HTML字符实体转换后在进行输出,默认值是true。
  • default 表示如果value属性的值为null时所输出的默认值。
    实例
 <c:out value="${sessionScope.userName}" [ escapeXml="{true}"]  [default="输出默认值"]/>

②<c:set>标签
<c:set>标签用于设置各种范围域的属性值
语法

<c:set var="varName" value="value" [scope="{page|request|session|application}"]/>
  • var表示要设置的范围域的属性名
  • value 指定var属性的属性值
  • scope 指定var属性所属的范围域,默认是page
    实例
	<c:set var="username" value="哼哼的博客" scope="session}"/>

③<c:remove>标签
<c:remove>标签用于删除各种范围域的属性
语法

<c:remove var="varName"  [scope="{page|request|session|application}"]/>
  • var表示要删除的范围域的属性名
  • scope 指定要删除的属性所属的范围域

实例

<c:remove var="username"  scope="session"/>

④<c:catch>标签
<c:catch>标签用于捕获嵌套在标签体中的内容抛出的异常。
语法

<c:catch [var="varName"]>
		nested actions
</c:catch>
  • var属性用于标识捕获的异常对象的名称,并将异常对象保存在page域中。
  • 若未指定var属性,则仅捕获异常而不在page域中保存对象。
    实例
<c:catch var ="myException">
  	<%=5/0 %>
  </c:catch>
  <c:out value="${myException}"></c:out><br>
  <c:out value="${myException.message}"></c:out>
1.2 条件标签

①<c:if>标签
<c:if>标签用于进行条件判断

<c:if test="condition" [var="varName"] [scope="{page|request|session|application}"]>
		//conditon为true时的代码
</c:if>
  • test用于指定条件表达式,返回boolean类型值
  • var用于指定将test属性执行结果保存到某个范围作用域的属性名称
  • scope 用于指定范围

实例

<c:if test="${not empty sessionScope.username}" var="username" scope="session">
  	欢迎你,${username}
  </c:if>

②<c:choose>标签
用于指定多个条件选择,必须与<c:when>和<c:otherwise>标签一块使用。
语法

<c:choose>
		//<c:when>或<otherwise>子标签
</c:choose>
  • <c:choose>标签没有属性
    实例
<c:choose>
		<c:when test="${not empty sessionScope.username}">
			欢迎你,${username}
		</c:when>
		<c:otherwise>
			欢迎游客
		</c:otherwise>
	</c:choose>

③<c:when>标签
<c:when>标签是一个条件的分支,必须以<c:choose>为父标签,且必须在<c:otherwise>标签之前。
语法

 <c:when test="condition" >
    		//conditon为true时的代码
    </c:when>

④<c:otherwise>标签
<c:otherwise>标签在<c:choose>标签中前面所有的<c:when>标签都不符合条件时才会执行<c:otherwise>标签。
语法

<c:otherwise>
			//执行的代码
</c:otherwise>
1.3迭代标签
①标签 标签用于遍历标签或者指定的迭代次数 语法
<c:forEach [var="varName"] items="collection" 
	[varStatus="varStatusName"] [begin="begin"] [end = "end"] [step="step"]>
		//标签体内容
</c:forEach>
  • var表示保存到page域中的属性名
  • itens要迭代的集合对象
  • varStatus表示当前被迭代的对象状态
  • begin表示遍历的起始值
  • end 表示遍历的结束值
  • step表示迭代的步长
    实例
    迭代数组对象
<% 
		String arrays[] = new String[5];
		arrays[0]="这里是";
		arrays[0]="哼哼的博客";
		arrays[0]="希望对你";
		arrays[0]="有帮助";
		arrays[0]="你也可以关注一下,后续会有更好的博客推出";
		request.setAttribute("arrays", arrays);
	%>
	<c:forEach var="str" items="${arrays}">
		${str}
	</c:forEach>

迭代集合对象

<%
	List<Book> bookList = new ArrayList<>();
	bookList.add(new Book("javaWeb应用与开发"));
	bookList.add(new Book("java开发基础"));
	request.setAttribute("book", bookList);
	%>
	
	<c:forEach var ="book" items="${request.bookList} varStatus="vst">
		<p>序号: ${vst.index+1},书名:${${book.BookName}</p>
	</c:forEach>

迭代Map对象

<%
	Map<String,Book> map = new HashMap<>();
	map.put("javaWeb",new Book("javaWeb开发与应用"));
	map.put("javase",new Book("java开发基础"));
	request.setAttribute("map", map);
	%>
	
	<c:forEach var ="bookMap" items="${request.map}">
		<p>${bookMap.key}*****${bookMap.value.bookName}</p>
	</c:forEach>
1.4URL相关的标签

①<c:url>标签

<c:url>标签用于在jsp页面中构造一个URL地址
语法

<c:url value="value" [var="varName"] [scope="{page|request|session|application}"]
	[context="context"] [<c:param name="paramName" value="value"/>]>

</c:url>
  • value要构造的URL地址
  • var属性名称
  • 指定URL地址所属同意容器下的web应用的上下文
  • <c:param/>指定传递的参数
    在这里插入图片描述
    <c:param>标签
    语法1:將属性值指定給value属性
     <c:param name="name" value="value"/>

语法2:將属性值指定給本体內容

<c:param name="name">
parameter value
</c:param>
<c:param>标签放在<c:url>本体內容当中,可用来设定连接所要传递的参数內容:
<c:url value=urlstring >
<c:param name="firstPara" value="123456" />
</c:url>

②<c:import>标签
载入外部文件
语法1:载入数据内容直接嵌入标签或是输出成为String对象

<c:import url="url" [context="context"]
[var="varName"] [scope="{page|request|session|application}"]
[charEncoding="charEncoding"]>
optional body content for <c:param> subtags
</c:import>
<c:import url="http://www.baidu.com"/>

③<c:redirect>标签
重新定向网页
语法1:无主体(body)内容

<c:redirect url="value" [context="context"]/>

语法2:指定搜寻字符串参数的主体内容 ,带参数

<c:redirect url="value" [context="context"]/>
<c:param> subtags
</c:redirect>
(2)I18N标签库
实现国际化 语法
   <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
2.1格式化标签

①<fmt:formateDate>标签
日期格式化标签
语法:

<fmt:formatDate value="date" [type="{time|date|both}"]
[dateStyle="{default|short|medium|long|full}"]
[timeStyle="{default|short|medium|long|full}"]
[pattern="customPattern"]
[timeZone="timeZone"]
[var="varName"]
[scope="{page|request|session|application}"]/>
  • value要格式化的日期或者时间
  • type指定是输出日期不分还是时间部分,还是两者都输出
  • dateType指定日期的输出格式
    -timeType指定时间输出的格式
  • pattern指定一个自定义的日期或者时间的输出格式
  • var 属性名称
  • scope指定作用域范围
  • timeZone指定时区
    代码演示
	
	<fmt:formatDate value="<%=new Date()%>"/><br>
	<fmt:formatDate value="<%=new Date()%>" pattern="yyyy-MM-dd HH:mm:ss" /><br>
	<fmt:formatDate value="<%=new Date()%>" type="both" dateStyle="full" /><br>
	<fmt:formatDate value="<%=new Date()%>" type="both" timeStyle="medium" />

输出结果
在这里插入图片描述

(3)函数库标签

语法

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

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值