JSTL标签库
一、JSTL简介
JSTL的全称:JSP Standard Tag Libary,JSP的标准标签库
JSTL的作用:
提供给Java web开发人员一个标准通用的标签函数库。
和EL来取来传统直接在页面上嵌入Java程序的做法,以提供程序可读性、维护性和方便性。
JSTL的版本:
JSTTL的主要版本是1.0、1.1和1.2。
1.0版本EL表达式还没有纳入官方规范。
1.0和1.2版本EL表达式已经纳入官方规范。
二、<c:out>标签
输出常量和域范围中的变量(value属性,使用EL表达式)。
输出默认值(default属性)。
默认HTML标签不转义(escapeXML)。
属性名是否支持EL属性类型属性描述value√Object指定要输出的内容escapeXML√Boolean指定是否将>、<等特殊字符进行HTML编码转换后再进行输出,默认值是true。default√Object指定如果value属性的值为null时所输出的默认值示例:输出常量
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><c:outvalue="Hello"></c:out></body></html>
示例:输出域中的变量
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><!--输出域中的变量--><%request.setAttribute("name","你好,世界");%><c:outvalue="${name}"></c:out></body></html>
示例:输出默认值
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><!--输出默认值--><c:outvalue="${haha}"default="你好Java"></c:out></body></html>
示例:输出HTML标签
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><c:outvalue="<ahref='#'>超链接</a>"></c:out></body></html>
默认情况下,输出的是字符串,所以要加上escapeXml="false"属性。
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><c:outvalue="<ahref='#'>超链接</a>"escapeXml="false"></c:out></body></html>
三、<c:set>标签
向4个域中存入值(var value scope属性)。
设置web域中java.util.Map类型的属性对象或Javabean类型的属性对象的属性(target prperty value属性)。
属性名是否支持EL属性类型属性描述value√Object用于指定属性值var×String用于指定要设置的web域属性的名称scope×String用于指定属性所在的web域target√Object用于指定要设置属性的对象,这个对象必须是Javabean对象或java.utl.Map对象property√String用于指定当前要为对象设置的属性名称示例:向4个web域对象存入值
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><c:setvar="i"value="哈哈"scope="request"></c:set><c:outvalue="${i}"></c:out></body></html>
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><!--传统方式--><%request.setAttribute("name","呵呵");%><c:outvalue="${name}"></c:out><!--jstl方式--><c:setvar="i"value="哈哈"scope="request"></c:set><c:outvalue="${i}"></c:out></body></html>
示例:修改Javabean对象存入值
<%@pageimport="cn.vo.User"%><%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><%request.setAttribute("user",newUser("你好","世界"));%><c:settarget="${user}"property="username"value="哈哈"></c:set>${user.username}</body></html>
四、<c:remove>标签
<c:remove>标签用于删除各种web域中的值。
其语法格式如下:
<c:removevar="varName"[scope={page|request|session|application}]></c:remove>
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><!--删除属性之前--><c:setvar="i"value="哈哈"scope="page"></c:set>${i}<!--删除属性之后--><c:removevar="i"scope="page"/>${i}</body></html>
五、<c:catch>标签
<c:catch>标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:
<c:catch[var='varName']></c:catch>
var属性用于标识<c:catch>标签捕获的异常对象,它将保存在page这个web域中。
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><c:catchvar="e"><%inti=10/0;%></c:catch>${e.message}</body></html>
六、<c:if>标签
<c:if test="">标签可以构造简单的"if-then"结构的条件表达式。
属性名是否支持EL属性类型属性描述test√boolean决定是否处理标签体中的内容的条件表达式var×String用于指定将test属性的之后定结果保存到某个web域中的某个属性的名称scope×String指定将test属性的执行结果保存到那个web域中<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><c:setvar="i"value="10"scope="page"></c:set><c:iftest="${i==10}">正确</c:if></body></html>
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><c:setvar="i"value="10"scope="page"></c:set><!--var表示判断的结果--><c:iftest="${i==10}"var="x"scope="page">正确</c:if>${x}</body></html>
六、<c:choose>标签
<c:choose>标签用于指定多个条件选择的组合边界,它必须和<c:when>和<c:otherwise>标签一起使用。使用<c:choose>标签、<c:when>和<c:otherwise>这三个标签,可以构造类似“if-else”的复杂条件判断结构
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><c:setvar="i"value="10"scope="page"></c:set><c:choose><c:whentest="${i==10}">i的值是10</c:when><c:otherwise>i的值不等于10</c:otherwise></c:choose></body></html>
七、<c:foreach>标签
<c:foreach>标签用于对一个集合对象中的元素进行循环迭代操作,或者按照指定的次数重复迭代标签体中的内容。
属性名是否支持EL属性类型属性描述var×String指定将当前迭代到的元素保存到page这个web域中的属性名称varstatus×String记住用于保存迭代信息的对象items√任何支持的类型将要迭代的集合对象begin√int如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编码;如果没有指定items属性,就从begin指定的值开始迭代,直到end值结束迭代end√int参看begin属性的描述step√int指定迭代的步长示例:遍历数组
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><!--for(Strings:str[]){}--><%String[]str={"哈哈","呵呵"};request.setAttribute("str",str);%><c:forEachvar="s"items="${str}">${s}</c:forEach></body></html>
示例:遍历List集合
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><!--for(Strings:str[]){}--><%List<String>list=newArrayList<String>();list.add("哈哈");list.add("呵呵");list.add("嘻嘻");request.setAttribute("list",list);%><c:forEachvar="i"items="${list}">${i}</c:forEach></body></html>
示例:遍历Map集合
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><!--for(Strings:str[]){}--><%Map<String,String>map=newHashMap<String,String>();map.put("a","aa");map.put("b","bb");request.setAttribute("map",map);%><c:forEachvar="entry"items="${map}">${entry.key}${entry.value}</c:forEach></body></html>
示例:从1到10遍历
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><c:forEachvar="i"begin="1"end="10"step="1">${i}</c:forEach></body></html>
示例:计算从1加到100的和
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><c:setvar="sum"value="0"scope="page"></c:set><c:forEachvar="i"begin="1"end="100"step="1"><c:setvar="sum"value="${sum+i}"scope="page"></c:set></c:forEach>${sum}</body></html>
varStatus属性
记录迭代相关的信息
属性类型意义indexnumber现在指到成员的索引countnumber总共指到成员的总数firstboolean现在指到的成员是否为第一个成员lastboolean现在指到的成员是否为最后一个成员示例:遍历10到100的偶数,每到第三个数,显示为红色
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><c:forEachvar="i"begin="10"end="100"step="2"varStatus="status"><c:choose><c:whentest="${status.count%3==0}"><fontcolor="red">${i}</font></c:when><c:otherwise>${i}</c:otherwise></c:choose></c:forEach></body></html>
八、<c:param>标签
在jsp页面进行URL的相关操作时,经常需要在URL地址后面附加一些参数。<c:param>标签可以嵌套在<c:import>和<c:url>以及<c:redirect>标签内,为这些标签所使用的URL地址附加参数。
<c:param>标签在为一个URL地址附加参数的时候,会自动对参数值进行URL编码。
<c:paramname=""value=""></c:param>
九、<c:import>标签
名称说明EL类型必须默认值url一文件被包含的地址√String是无context虚拟路径√String否无var存储被包含文件的内容(以String类型存入)×String否无scopevar变量的jsp范围×String否pagecharEncoding被包含文件之内容的编码格式√String否无varReader存储被包含文件的内容(以Reader类型存入)×String否无haha.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>MyJSP'haha.jsp'startingpage</title><metahttp-equiv="pragma"content="no-cache"><metahttp-equiv="cache-control"content="no-cache"><metahttp-equiv="expires"content="0"><metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"><metahttp-equiv="description"content="Thisismypage"><!--<linkrel="stylesheet"type="text/css"href="styles.css">--></head><body>哈哈</body></html>
index.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><!--起到包含的效果--><c:importurl="/haha.jsp"></c:import></body></html>
将页面包含在变量之中
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><!--起到包含的效果--><c:importurl="/haha.jsp"var="i"scope="page"></c:import><!--将页面保存在变量i之中-->${i}</body></html>
传递参数
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>MyJSP'haha.jsp'startingpage</title><metahttp-equiv="pragma"content="no-cache"><metahttp-equiv="cache-control"content="no-cache"><metahttp-equiv="expires"content="0"><metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"><metahttp-equiv="description"content="Thisismypage"><!--<linkrel="stylesheet"type="text/css"href="styles.css">--></head><body>${param.haha}哈哈</body></html>
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><!--起到包含的效果--><c:importurl="/haha.jsp"var="i"scope="page"><c:paramname="haha"value="haha"></c:param></c:import><!--将页面保存在变量i之中-->${i}</body></html>
十、<c:url>标签
<c:url>标签用于在jsp页面中构造一个URL地址,其主要目的在于实现URL重写。URL重写就是将会话标识号以参数形式附加到URL地址的后面。
其实,就是进行session的追踪。
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>JSTL标签库</title></head><body><c:urlvar="i"value="/haha.jsp"></c:url><ahref="${i}">haha.jsp</a></body></html>
十一、<c:redirect>标签
用于实现请求重定向。
属性名是否支持EL属性类型属性描述url√String指定要转发或重定向到的目标资源的URL地址context√String当要使用相对路径重定向到哦同一个服务器下的其他web应用程序中的资源的时候,context属性指定其他web应用程序的名称声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。