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='#'>xxx</a>" ></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”结构的条件表达式

 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:if test="${2>1}">
 9           确实是这样的....
10       </c:if>
11       <c:if test="${2<=1}">
12         你确定吗?
13       </c:if>
14   </body>
15 </html>

 

<c:choose>标签用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起使用。使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。

 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       int day = 7;
10       pageContext.setAttribute("day",day);
11    %>
12       <c:choose>
13           <c:when test="${day == 1}">
14               星期一
15           </c:when>
16           <c:when test="${day == 2}">
17               星期二
18           </c:when>
19           <c:when test="${day == 3}">
20               星期三
21           </c:when>
22           <c:when test="${day == 4}">
23               星期四
24           </c:when>
25           <c:when test="${day == 5}">
26               星期五
27           </c:when>
28         <c:otherwise>
29             休息日!
30         </c:otherwise>
31       </c:choose>
32   </body>
33 </html>

 


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

 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       <h1>实验:遍历10到100的偶数,如果数字所在的位置是3的倍数,显示成红色</h1><hr>
 9       <c:forEach begin="10" end="100" step="2" var="i" varStatus="stat">
10           <c:if test="${stat.count % 3 == 0}">
11               <font color="red">
12                   ${i }
13               </font>
14           </c:if>
15           <c:if test="${stat.count % 3 != 0}">
16               <font color="blue">
17                   ${i }
18               </font>
19           </c:if>
20       </c:forEach>
21   
22       <h1>循环执行指定的内容若干次</h1><hr>
23       <c:forEach begin="0" end="10" step="2" var="i" >
24           ${i },
25       </c:forEach>
26       <h1>遍历Map中的数据</h1><hr>
27       <%
28           Map map = new LinkedHashMap();
29           map.put("name","曹操");
30           map.put("age","59");
31           map.put("wife","小乔");
32           map.put("gender","");
33           pageContext.setAttribute("map",map);
34        %>
35       <c:forEach items="${map}" var="entry" >
36           ${entry.key }:${entry.value }<br>
37       </c:forEach>
38       
39       <h1>遍历集合中的数据</h1><hr>
40       <%
41         List list = new ArrayList();
42         list.add("美国");
43         list.add("中国");
44         list.add("俄罗斯");
45         list.add("印度");
46         list.add("巴西");
47           pageContext.setAttribute("list",list);
48        %>
49        <c:forEach items="${list}" var="c">
50        ${c }<br>
51        </c:forEach>
52        
53       <h1>遍历数组中的数据</h1><hr>
54       <%
55           String []  city = {"北京","上海","广州","铁岭","葫芦岛"};
56           pageContext.setAttribute("city",city);
57        %>
58        <c:forEach items="${city}" var="c">
59            ${c }<br>
60        </c:forEach>
61   </body>
62 </html>

 


<c:forTokens>用来浏览一字符串中所有的成员,其成员是由定义符号所分隔的,用来切割字符串

 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:forTokens items="www.itheima.com" delims="." var="str">
 9           ${str }<br>
10       </c:forTokens>
11   </body>
12 </html>

 

<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>标签用于实现请求重定向


 

posted @ 2017-07-02 12:09  代码改变心态  阅读(183)  评论(0)    收藏  举报