首页 > 代码库 > JSTL
JSTL
JSTL标签库,在javaee4.0需要导入JSTL相关的jar包,在javaee5.0开始,默认已经包含了此jar包。还要需要用<%@ taglib%>指令引入标签库
3.1 介绍
JavaServer Pages Standard Tag Library
由JCP(Java Community Process)指定标准
提供给 Java Web 开发人员一个标准通用的标签函数库
和 EL 配合来取代传统直接在页面上嵌入 Java 程序(Scripting)的做法,以提高程序可读性、维护性和方便性
一般我们使用JSTL1.1以上的版本,应为从这个版本开始支持EL表达式
JSTL1.0默认不支持el表达式,不建议使用
3.2 JSTL标签库
****核心标签库 (core) --- c
国际化标签 fmt
数据库标签 sql --Servlet
XML标签 xml
JSTL函数(EL函数) el
3.3 JSTL核心标签库
<c:out> 标签用于输出一段文本内容到pageContext对象当前保存的“out”对象中。
1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 5 <html> 6 <head> 7 </head> 8 <body> 9 <h1>HTML转义输出</h1><hr> 10 <a href="#">xxx</a> 11 <c:out value="<a href=http://www.mamicode.com/‘#‘>xxx" ></c:out> 12 ${fn:escapeXml(‘<a href="#">xxx</a>‘) } 13 14 <h1>输出默认值</h1><hr> 15 <% 16 String addr = "西二旗"; 17 //pageContext.setAttribute("addr",addr); 18 %> 19 <c:out value="${addr}" default="北京"></c:out> 20 ${addr == null?"北京" : addr } 21 22 <h1>输出变量</h1><hr> 23 <% 24 String name = "无双"; 25 pageContext.setAttribute("name",name); 26 %> 27 <c:out value="${name}"></c:out> 28 ${name } 29 <h1>输出常量</h1><hr> 30 <c:out value="阿斯蒂芬"></c:out> 31 ${"啦啦啦啦" } 32 </body> 33 </html>
<c:set>标签用于把某一个对象存在指定的域范围内,或者设置Web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的 属性。
1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <%@page import="com.itheima.domain.Person"%> 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 5 <html> 6 <head> 7 </head> 8 <body> 9 <h1>修改域中的JavaBean的属性的值</h1><hr> 10 <% 11 Person p = new Person(); 12 pageContext.setAttribute("p",p); 13 %> 14 <c:set target="${p}" property="name" value="克林顿"></c:set> 15 ${p.name } 16 17 18 <h1>设置或修改域中的Map的值</h1><hr> 19 <% 20 Map map = new HashMap(); 21 pageContext.setAttribute("map",map); 22 %> 23 <c:set target="${map}" property="cellphone" value="10010"></c:set> 24 <c:set target="${map}" property="cellphone" value="10086"></c:set> 25 ${map.cellphone } 26 27 <h1>设置或修改域中的属性值</h1><hr> 28 <c:set var="name" value="韦小宝"></c:set> 29 <c:set var="name" value="阿珂"></c:set> 30 ${name } 31 </body> 32 </html>
<c:remove>标签用于删除各种Web域中的属性
1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 4 <html> 5 <head> 6 </head> 7 <body> 8 <% 9 pageContext.setAttribute("name","蓝精灵"); 10 request.setAttribute("name","伏地魔"); 11 session.setAttribute("name","机器猫"); 12 application.setAttribute("name","蜡笔小新"); 13 %> 14 <c:remove var="name"/> 15 ${name } 16 </body> 17 </html>
<c:catch>标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:<c:catch [var="varName"]>nested actions</c:catch>
1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 4 <html> 5 <head> 6 </head> 7 <body> 8 <c:catch var="e"> 9 <% 10 int i = 1/0; 11 %> 12 </c:catch> 13 14 ${e.message } 15 16 </body> 17 </html>
<c:if test=“”>标签可以构造简单的“if-then”结构的条件表达式
<c:choose>标签用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起使用。使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。
<c:forEach>标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容。
<c:forTokens>用来浏览一字符串中所有的成员,其成员是由定义符号所分隔的
<c:param>标签 在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。<c:param>标签可以嵌套在<c:import>、<c:url>或<c:redirect>标签内,为这些标签所使用的URL地址附加参数。
<c:import> 标签,实现include操作
<c:url>标签用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。URL重写就是将会话标识号以参数形式附加在URL地址后面
<c:redirect>标签用于实现请求重定向
JSTL