JSTL标签库

jstl:JavaServer Pages Standard Tag Library
 由JCP(Java Community Process)指定标准
提供给 Java Web 开发人员一个标准通用的标签函数库
和 EL 配合来取代传统直接在页面上嵌入 Java 程序(Scripting)的做法,以提高程序可读性、维护性和方便性


JSTL标签库
核心标签库 (core)  --- c
国际化标签 fmt
数据库标签 sql --Servlet
XML标签  xml
JSTL函数(EL函数) el


核心标签库 (core)  --- c
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


<c:out>标签

标签用于输出一段文本内容到pageContext对象当前保存的“out”对象中。


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  
  <body>
  <hr/><h1>html转义输出</h1>
    <c:out value="<a href='#'>xxx</a>" escapeXml="true"></c:out>
    ${fn:escapeXml("<a href='#'>xxx</a>") }
    <hr/><h1>输出默认值</h1>
    <%
    	String age = "99";
    	pageContext.setAttribute("age", age);
     %>
    <c:out value="${age }" default="100"></c:out>
    ${empty age ?100 :age }
    <hr/><h1>输出变量</h1>
    <%
    	String name = "牛牛";
    	pageContext.setAttribute("name", name);
     %>
     <c:out value="${name }"></c:out>
     ${name }
     <hr><h1>输出常量</h1>
  	<c:out value="itheima1"></c:out>
  	itheima1
  	${"itheima1" }
  </body>
</html>

<c:set>标签

标签用于把某一个对象存在指定的域范围内,或者设置Web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的 属性。  


<%@page import="com.itheima.domain.Person"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head></head>
  <body>
  <hr/><h1>用来设置javabean属性</h1>
  
   	<%
  		Person p = new Person();
  		p.setName("天一");
  		p.setAge(18);
  		pageContext.setAttribute("p", p); 		
   	 %>
   	 
   	 <c:set target="${p }" property="age" value="19"></c:set>
   	 ${p.age }<!-- 19 -->
   	 
   	 <hr><h1>用来设置map的属性</h1>
   	 <%
   	 	Map<String,String> map = new HashMap<String,String>();
   	 	map.put("name","小明");
   	 	map.put("age","100");
   	 	pageContext.setAttribute("map", map);
   	  %>
   	  <c:set target="${map }" property="age" value="30"></c:set>
   	  ${map.age }<!-- 30 -->
   	  <c:set target="${map }" property="sex" value="女"/>
   	  ${map.sex }<!-- 女 -->
   	  
   	  <hr/><h1>用来将指定的对象存入指定的域中</h1>
   	  <c:set var="sss" scope="page" value="333"></c:set>
   	  ${sss }<!-- 333 -->
   	 
  </body>
</html>

<c:remove>标签
用于删除各种Web域中的属性。
其语法格式如下:
<c:remove var="varName"  [scope="{page|request|session|application}"] /> 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head></head>
  
  <body>
    <hr><h1>删除域中的属性,如果明确指定域则删除指定域中指定名称的属性,如果不明确指定域则删除所有域中指定名称的属性</h1>
    <%
    	pageContext.setAttribute("name", "周芷若");
    	request.setAttribute("name", "小明");
    	session.setAttribute("name", "克林顿");
    	application.setAttribute("name", "灭绝师太");
     %>
     <c:remove var="name" scope="page"/>
     ${name }<!-- 小明 -->
  </body>
</html>

<c:catch>标签
标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:<c:catch [var="varName"]>nested actions</c:catch>
var属性用于标识<c:catch>标签捕获的异常对象,它将保存在page这个Web域中。
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    

  </head>
  
  <body>
    <c:catch var="e">
    	<%
    		int i = 1/0;
    	 %>
    </c:catch>
    ${e.message }<!-- / by zero -->
  </body>
</html>

<c:if>标签

<c:if test=“”>标签可以构造简单的“if-then”结构的条件表达


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head></head>
  <body>
    <%
    	int i = 0;
    	if(i>9){
    		System.out.println("10>9");
    	}
     %>
     <c:if test="${10>9 }" var = "flag" scope="page">
     	10确实大于9
     </c:if>
     ${flag }<!-- true -->
     <!--else 就条件取反  -->
     <c:if test="${10<=9 }">
     	你确定吗?
     </c:if>
  </body>
</html>

<c:choose>标签 
<c:choose>标签用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起使用。使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head></head>
  
  <body>
    <c:set scope="page" var="i" value="100"></c:set>
    <c:choose>
    	<c:when test="${i==100 }">
    		100
    	</c:when>
    	<c:when test="${i==90 }">
    		90
    	</c:when>
    	<c:when test="${i==80 }">
    		80
    	</c:when>
    	<c:otherwise>
    		otherwise
    	</c:otherwise>
    </c:choose>
  </body>
</html>

<c:forEach>标签

标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容。


varstatus 用来存放现在指到之成员的相关信息


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head></head>
  
  <body>
    <hr/><h1> 实验:遍历10到100的偶数,如果数字所在的位置是3的倍数,显示成红色</h1>
    <c:forEach begin="10" end="100" step="2" var="i" varStatus="status">
    	<c:if test="${status.first }">
    		${i }第一个成员
    	</c:if>
    	
    	<c:if test="${status.count%3==0 }">
			<font color="red">${i }</font>
		</c:if>
    	<c:if test="${status.count%3!=0 }">
			<font color="blue">${i }</font>
		</c:if>
		
		<!-- status.index 现在指到成员的索引 -->
    	<%-- <c:if test="${status.index%3==0 }">
			<font color="red">${i }</font>
		</c:if>
    	<c:if test="${status.index%3!=0 }">
			<font color="blue">${i }</font>
		</c:if> --%>
    	<c:if test="${status.last }">
    		${i }最后一个成员
    	</c:if>
    </c:forEach>
    
    <hr/><h1>指定的次数重复迭代执行标签体中的内容</h1>
    <c:forEach begin="10" end = "20" step="2" var = "i">
    	${i }
    </c:forEach>
    <hr/><h1>迭代map中的元素</h1>
    <%
    	Map<String,String> map = new HashMap<String,String>();
    	map.put("name", "邹七");
    	map.put("age", "21");
    	pageContext.setAttribute("map", map);
     %>
    
    <c:forEach items="${map }" var="entry">
    	${entry.key }:${entry.value }
    </c:forEach>
    
    <hr/><h1>迭代List中的数据</h1>
    <%
    	List<String> list = new ArrayList<String>();
    	list.add("xxx");
    	list.add("yyy");
    	list.add("zzz");
    	pageContext.setAttribute("list", list);
     %>
     <c:forEach items="${list }" var="value">
     	${value }
     </c:forEach>
     
     <hr/><h1>迭代数组中的数据 </h1>
     <%
     	String [] strs = {"aaa","bbb","ccc"};
     	pageContext.setAttribute("strs", strs);
      %>
    <c:forEach items="${strs }" var="name">
    	${name }
    </c:forEach>
  </body>
</html>

<c:froTokens>标签

用来浏览一字符串中所有的成员,其成员是由定义符号所分隔的


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  
  <body>
    <c:forTokens items="www.baidu.com" delims="." var="str" begin="1" end = "3">
    	${str }<br/>
    </c:forTokens>
  </body>
</html>

<c:param>标签 
在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。<c:param>标签可以嵌套在<c:import>、<c:url>或<c:redirect>标签内,为这些标签所使用的URL地址附加参数。
<c:param>标签在为一个URL地址附加参数时,将自动对参数值进行URL编码,例如,如果传递的参数值为“中国”,则将其转换为“%d6%d0%b9%fa”后再附加到URL地址后面,这也就是使用<c:param>标签的最大好处。 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head></head>
  <body>
    <h1>用cparam增加参数的好处:自动进行URL编码转换操作</h1>
    <c:redirect url="/index.jsp" context="/Test7">
    	<c:param name="name" value="张三"></c:param>
    	<c:param name="age" value="19"></c:param>
    </c:redirect>
  </body>
</html>

<c:import>标签


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head></head>
  
  <body>
  befor include
    <c:import url="/index.jsp" var="p" scope="page"></c:import>
    ${p }
    after include
    <!-- 
    befor include This is my JSP page. 
after include
     -->
  </body>
</html>

<c:url>标签

用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。URL重写就是将会话标识号以参数形式附加在URL地址后面 


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head></head>
  <body>
    <%
    	String url = "/Test7/index.jsp";
    	url = response.encodeUrl(url);
    	pageContext.setAttribute("url", url);
     %>
     ${url }<!--禁用cookie会把seesionid拼接地址后面 /Test7/index.jsp;jsessionid=C8C5FA3967D2C12D31A28A2516351F73  -->
     <br/>
     <c:url value="/index.jsp" context="/Test7" var="newURL" scope="page"></c:url>
     ${newURL }<!-- /Test7/index.jsp;jsessionid=C8C5FA3967D2C12D31A28A2516351F73  -->
     
     <br>==================================== <br>
  	 <a href="${pageContext.request.contextPath}/index.jsp">XXX</a>
  	 <a href='<c:url value="/index.jsp" context="${pageContext.request.contextPath}" />'>XXX</a>
  </body>
</html>

<c:redirect>标签

用于实现请求重定向


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head></head>
  
  <body>
    <c:redirect url="/index.jsp" context="${pageContext.request.contextPath }"></c:redirect>
  </body>
</html>















评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值