不见的对岸花(05)

一、JSTL简介:

12月3日

JSTL全名为JavaServer Pages Standard Tag
Library,中文名称为JSP标准标签函数库,近来新星的本子为1.2。JSTL是由JCP(Java
Community Process)所钦命的正统条件,它最主要提需要Java
Web开发职员三个正式通用的标签函数库。

刘陵的室友元霜过生日,凑了七个女子一起吃饭。吃到八分之四的时候,八个汉子敲门进去。

Web 程序开发职员能够运用JSTL和EL来支付Web程序,取代古板一贯在页面上嵌入Java程序(Scripting)的做法,以抓牢程序可读性、维护性和方便性。

三个说,“能请你们帮个忙啊?笔者和她打赌,说要是本人能请你们中的一个身故喝杯酒,他就要把桌上的六瓶都喝掉,倘若自笔者做不到,这饮酒的正是自身了。”

既然是库文件,那我们就要先下载咯。下载链接:http://tomcat.apache.org/

多少个女子面面相觑,不知怎么做。唯有刘陵在一面独力默默地笑,她暗笑那八个男子无聊的一手和技俩。

葡京注册送88 1

“没关系的,就过去转手就好,帮帮助吗。”趁着大家研商着,他又催促道。

点击上海教室中红框部分的Taglibs,进入如下界面:

女人们也起头起哄了,“去呢去呢,元霜要不就你去吧,反正你过生日啊!帮帮人家不也挺好的么?”

葡京注册送88 2

元霜无奈也不可能太扫了豪门的兴,就应承了随后过去。

点击上航海用体育地方中的红框部分,进入如下界面:

过了一阵子他回到,说,“一堆的都以男生,也没怎么,就喝了一杯酒,望着万分输了的男子灌完那六瓶。”

葡京注册送88 3

随之那么些女孩子也起初不安分起来了。“要不我们也叫她们过来啊,正好让她们给你祝寿啊!!”

上海体育场地中,点击最新版本举办下载。

“对对,那样好,那样好玩啊!”

下载完之后,将jar包复制到JavaWeb工程的/WebContent/WEB-INF/lib目录下即可使用

“那何人去叫他们吧?元霜,要不依然您去啊,你熟习地型!”

 

“这要命啊,我已经去过二遍了,此次得换个人。”

JSTL所提供的标签函数库首要分为五大类:

正七嘴八舌地说着,服务员从门前走过,1个人赫然说,要不大家让服务生去把她们找来吧。哈哈。那几个建议同样通过了。

  • (1)主干标签库 (Core tag library)
  • (2)I18N 格式标签库 (I18N-capable formatting tag library)
  • (3)SQL 标签库 (SQL tag library)
  • (4)XML 标签库 (XML tag library)
  • (5)函数标签库 (Functions tag library

随即那三个男人就进入了。他们熟习地自笔者介绍,作者叫万欣,是其一学校的国防生……你们能看出来大家大几的呢?

最常用的是第二个,别的多少个不是很常用。

此时又繁杂了,有人喊大学一年级有人喊大二,唯有刘陵目光没有毛病自顾自地说,大四。

主干标签库 (Core tag
library)
重在有以下三种:

“你怎么了解?”

① 、表明式标签:

“因为看你们很沧桑了。”(刘陵)“因为我们望着沧桑了?”(万欣)

  • <c:out>:首要用于显示数据的剧情,就像<%= scripting-language %> 一样
  • <c:set>:首要用以将变量储存至JSP范围中恐怕JavaBean的性质中
  • <c:remove>:主要用来移除变量
  • <c:catch>:首要用于处理发生错误的越发现象,并且将错误音信储存起来(用的少)

刘陵和万欣差不离是同时说。若有似无的笑始终挂在刘陵的脸孔,不明白有没有哪个人会映入眼帘。混乱中山高校家七嘴八舌。极力地想要掏出语言中的全部幽默。不过心里却特别没底,不晓得那多个说的话终究能够在哪落脚。反正一概而论,说出的话并不会有什么人要认真的放在心上,那便是大家怎么可以在外人前面罗里吧嗦。

贰 、流程序控制制:

随机应变之下,万欣说,要不我们都留个号码吧。

  • <c:if>:用途和大家一般在先后中用的if
    一样
  • <c
    :choose>
    :自身只看做 <c:when> 和
    <c:otherwise> 的父标签
  • <c :when>/<c
    :otherwise>
    :使用<c:when>和<c:otherwise>来做流程序控制制时,两者都无法不为<c:choose>的子标签(类似于switch···case···)

在外这么多年,那种工作一般,可是哪个人会把那1个留下的号码确实当叁次事,大多数情景下,依旧把它搁置在妹夫大中,最后翻看手提式无线电话机时却想不起来那毕竟是什么人而删掉。那种毫无意义的事情做与不做都以三个样的。当我们都说完的时候,刘陵认为就像此过了,更何况他连名字都不清楚,想她从此会怎么来对号落座,把那个号码的持有者都认得一次。可如故有人问了,刘陵只能断断续续地说了出去。她连连不习惯大家一块儿听着她一人谈话。她习惯了活在低低的地方。

葡京注册送88,三 、迭代操作:

万欣要了她们的编号,和刘陵的眼神交错而过的时候,刘陵问他:“你是国防生?那您认识李园海吗?他是本人同乡啊。”

  • <c
    :forEach>
    :循环遍历,它能够将汇集(Collection)中的成员循序浏览1遍。运作方式为当规则相符时,就会没完没了重复执行<c:forEach>的本体内容。
  • <c
    :forTokens>:用来浏览一字符串中拥有的积极分子,其成员是由定义符号(delimiters)所相隔的。

万欣:“认识啊!”

下边来详细介绍一下那些标签。

刘陵一向觉得第二回主动和人说是或不是认识某人那种行为有套近乎的思疑,可却有种鬼使神差的觉得,就像是是从心里就想接近。

二 、大旨标签库:

散了之后刘陵去上他的吉他课。

带有Web应用的大规人体模特工作, 比如:循环、说明式赋值、 基本输入输出等。

在回到的中途,收到了不熟悉的短信,号码和以后给他发短信的不太雷同。她总上能注意到那个毫无意义的细节并记在心上。

① 、表明式标签:

“作者叫万欣,那你吗?”

  • <c:out>:主要用于展现数据的内容,就好像 <%=
    scripting-language %> 一样
  • <c:set>:首要用来将变量储存至JSP范围中恐怕JavaBean的属性中
  • <c:remove>:首要用来移除变量
  • <c:catch>:首要用于处理产生错误的老大现象,并且将错误信息储存起来(用的少)

“刘陵。”

代码举例:

好直接的开场啊,那样少见的轻率竟然让刘陵有个别奇怪了。可是他不甘于企及一个毫不相干的人,不愿说太多,于是一切题材差不多用了单音节来回应。那多少个早晨还说了一部分怎么样他不再记得了。那多少个深夜,刘陵记住的仅仅正是其一名字,却不曾预想它对他的重庆大学。

  • <c:out>标签

12月4日

新建JavaWeb工程Test08,index.jsp代码如下:

早晨,刘陵在篮球馆打羽球。电话响了,依然要命号码。男子二个劲在夜晚的时候特别的落寞,并且变得不安分。刘陵接了电话,可是球场太吵,刘陵也不愿多说什么样,直接敷衍几句便挂断了。

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3     <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 <%
10     request.setAttribute("name", "smyhvae");
11 %>
12 </head>
13 <body>
14     <c:out value="${requestScope.name} "></c:out>
15  
16 </body>
17 </html>

挂了后她用短信要了刘陵QQ。

第03行、10行、14行是自己添加的代码。

“到了寝室就告知自个儿,小编想给您通话。小编意识三个很想获得的事要告诉你,你想不想精通?”

03行(固定代码):使用JSTL不要忘记引入标签库。prefix=”c”是前缀,“c”代表的是“<c:out>”那个表明式。uri中是填入命名空间,可以经过代码提醒选拔http://java.sun.com/jsp/jstl/core。可以通过下面的方式找到这个uri:在Java
Reasources/Libraries/Web App
Libraries/jstl.jar/META-INF目录下众多tld格式的文书,那几个tld文件指的是标签库的申明文件:

“无所谓,你想说就会说的。”

葡京注册送88 4

“行吗,大家同一天华诞。”

上海体育场地中的c.tld文件表示的正是core那么些标签库,打开它,能够见到uri:

“嗯
。”刘陵显得很无所谓,她认识他才一天而已,本来就从未有过供给表现得那般热情。

葡京注册送88 5

“你是自作者境遇的第二个。”

实在第03行代码是稳定写死了的,添加即可,能够不用深究。

实则,要找一个和团结同一天生日的人,并不是怎么样很艰辛的事,世界如此大,三百六十1/5的票房价值并不算小。

假若引入core标签库,此时在body标签中,只要输入”<c”,就足以经过代码提醒看到习以为常标签。

只是爱好上1个人的时候,他们才会刻意地从对方身上找到某种相似。喜欢同一首歌,同一部影视,同一本书,甚至是千篇一律种说话的办法,走路的架势,思考的状态……把这个都位列出来的时候,异想天开地发现本人和对方差不离是天生一对。

葡京注册送88 6

又或许,为了让对方喜欢上团结,于是便刻意找出五个人的有的貌似,企图使对方确认。那种便宜的做法未免显得有个别孩子气和劣质,只是因为那都以出于单纯而急于的爱,就怎么都得以原谅了。

作者们在第玖行给request添加几本性能,然后就足以在第叁4行通过out输出标签输出那么些值了(当然,也得以用EL表达式来输出),运营程序,效果如下:

实则,有过几个人都忘了,这么些世界上,把随便三个拉过来,也能找到很多一般的,跟所谓的“缘分”和“天意”毫无干系。

葡京注册送88 7

归来后,刘陵并从未找他,一方面是由于女人的拘谨,另一方面就是在高等高校那种张扬的条件里,每一个男士都像野兽觅食一样,像她那样有才化险为夷又略显娇弱的女人,自是有诸五人追的,她一向就不在乎多一个追随者。

  • <c:set>标签

    1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%>
    3 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    4 http://www.w3.org/TR/html4/loose.dtd">
    5
    6
    7
    8 Insert title here
    9 <% 10 request.setAttribute("name", "smyhvae"); 11 %>
    12
    13
    14 <%--输出标签 --%>
    15
    16
    17 <%--定义变量标签 --%>
    18
    19 ${age }
    20
    21
    22

不过万欣依旧发短信过来了。

见18、19行代码。

“到卧室了吗?”

职能如下:

“嗯 。”

葡京注册送88 8

继之,他通电话过来。

 

万欣:“你的声响很和善”

贰 、流程控制:

刘陵:“嗯。”

  • <c:if>:用途和我们一般在先后中用的if
    一样
  • <c
    :choose>
    :自身只当做 <c:when> 和
    <c:otherwise> 的父标签
  • <c :when>/<c
    :otherwise>
    :使用<c:when>和<c:otherwise>来做流程序控制制时,两者都必须为<c:choose>的子标签(类似于switch···case···)

……

新建index2.sp文书。代码如下:

“小编能否再见你2只?”

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 <%
10     request.setAttribute("name", "smyhvae");
11 %>
12 </head>
13 <body>
14 
15     <%--流程控制标签if --%>
16     <c:if test="${not empty requestScope.name }">
17     欢迎你,${requestScope.name }
18     </c:if>
19 
20     <c:if test="${empty requestScope.name }">
21     请登录后操作
22     </c:if>
23     <br />
24 
25     <%--流程控制标签choose --%>
26     <c:set var="age" value="22"></c:set>
27 
28     <c:choose>
29         <c:when test="${age<18 }">
30             未成年,不许进。
31         </c:when>
32         <c:when test="${age>=18 && age<50 }">
33             欢迎光临。
34         </c:when>
35         <c:otherwise>
36             老年人请注意身体。
37         </c:otherwise>
38     </c:choose>
39 
40 </body>
41 </html>

“没要求吗!只是偶遇。你火速就会忘了自家的。”

15至22表现if标签(和if语句的功效是相同的),16行中test里面包车型客车内容必须为boolean值:我们在第玖行添加了name的值,然后在16行、20行判断name的值是或不是为空,进而做出判断。

刘陵完全没有想法去认识一个没有其余印象的人,那一个寂寞的高等学校里每一天都有像样的故事发生,而真的的天荒地老并不是一回偶然的会面和几条一相情愿的短信能够演绎的。她也做白日梦,可只是梦而已,她从不会搅乱。

25行至38行为choose标签(和switch···case···的效能是一致的)。

(未完待续……)

运行程序,效果如下:

葡京注册送88 9

 

叁 、迭代操作:

  • <c
    :forEach>
    :循环遍历,它可以将聚集(Collection)中的成员循序浏览一次。运作格局为当规则适合时,就会处处重复执行<c:forEach>的本体内容。
  • <c
    :forTokens>:用来浏览一字符串中有着的积极分子,其成员是由定义符号(delimiters)所相隔的。

代码举例:

  • <c :forEach>

新建类User,作为遍历的靶子。User.java代码如下:

 1 package com.vae.bean;
 2 
 3 public class User {
 4     private String name;
 5     private String sex;
 6     private int age;
 7     public User() {
 8         super();
 9     }
10     public User(String name, String sex, int age) {
11         super();
12         this.name = name;
13         this.sex = sex;
14         this.age = age;
15     }
16     public String getName() {
17         return name;
18     }
19     public void setName(String name) {
20         this.name = name;
21     }
22     public String getSex() {
23         return sex;
24     }
25     public void setSex(String sex) {
26         this.sex = sex;
27     }
28     public int getAge() {
29         return age;
30     }
31     public void setAge(int age) {
32         this.age = age;
33     }
34     @Override
35     public String toString() {
36         return "User [name=" + name + ", sex=" + sex + ", age=" + age + "]";
37     }
38 
39     
40 }

新建文件index3.jsp,代码如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@page import="com.vae.bean.User,java.util.*"%>
 4 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 6 <html>
 7 <head>
 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 9 <title>Insert title here</title>
10 
11 <%
12     List<User> users = new ArrayList<User>();
13     User u1 = new User("生命壹号", "男", 22);
14     User u2 = new User("生命二号", "男", 23);
15     User u3 = new User("vae", "女", 24);
16     users.add(u1);
17     users.add(u2);
18     users.add(u3);
19     request.setAttribute("users", users);
20 %>
21 </head>
22 
23 <body>
24     <table border="1">
25         <tr>
26             <th>name</th>
27             <th>sex</th>
28             <th>age</th>
29         </tr>
30 
31         <c:forEach items="${requestScope.users }" var="user">
32             <tr>
33                 <td>${user.name}</td>
34                 <td>${user.sex}</td>
35                 <td>${user.age}</td>
36             </tr>
37         </c:forEach>
38 </body>
39 </html>

基本代码是31行至37行。

咱俩在12至19行里,往List中出席多少个user对象的值,并放入request中。然后在第壹4行参与1个报表,在报表里通过<c
:forEach>遍历User对象中的内容,那里运用了<c
:forEach>中的两日性格:31行的”items”表示须要迭代的聚集,”var”表示每便一取,定义的变量。

运作程序,效果如下:

葡京注册送88 10

<c :forEach>中的属性:

咱俩在地点的代码中的31行用到了过<c
:forEach>中的七个属性:items和var。接下来来学习一下别样的天性:

  • begin:表示从第几个开首索引,一般不写;
  • end:表示甘休的地点。要是急需遍历十行,在那里写10即可。
  • step:增量。

上边的四个属性用的可比少。

  • varStatus:当前的情况。它的境况有以下多少个:

            index  索引 从0开始

            count  从1发端 当前遍历次数

            current 当前正在迭代的对象

            first  是不是是第③个

            last   是不是是最终一个        

我们给varStatus举个例证。大家在上头的index3.jsp代码中愈发助长:

index3.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@page import="com.vae.bean.User,java.util.*"%>
 4 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 6 <html>
 7 <head>
 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 9 <title>Insert title here</title>
10 
11 <%
12     List<User> users = new ArrayList<User>();
13     User u1 = new User("生命壹号", "男", 22);
14     User u2 = new User("生命二号", "男", 23);
15     User u3 = new User("vae", "女", 24);
16     users.add(u1);
17     users.add(u2);
18     users.add(u3);
19     request.setAttribute("users", users);
20 %>
21 </head>
22 
23 <body>
24 
25     <table border="1">
26         <tr>
27             <th>name</th>
28             <th>sex</th>
29             <th>age</th>
30             <th>状态值</th>
31         </tr>
32 
33         <c:forEach items="${requestScope.users }" var="user" varStatus="status">
34             <tr>
35                 <td>${user.name}</td>            
36                 <td>${user.sex}</td>            
37                 <td>${user.age}</td>            
38                 <td>
39                 index :${status.index }<br/>
40                 count :${status.count }<br/>
41                 current :${status.current }<br/>
42                 first :${status.first }<br/>
43                 last :${status.last }<br/>
44                 </td>            
45             </tr>
46         </c:forEach>
47     </table>
48 </body>
49 </html>

加粗部分的30行、33行中的varStatus属性、38行至44行是笔者更是丰硕的代码。运转程序,效果如下:

葡京注册送88 11

由此地点的图形,再来回想一下varStatus的各样境况,就一目明白了:

  • index  索引 从0开始
  • count  从1起来 当前遍历次数
  • current 当前正值迭代的对象
  • first  是不是是第三个
  • last   是不是是最终叁个 

代码举例:

  • <c :forTokens>

新建index4.jsp文件,代码如下:

index4.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 </head>
10 <body>
11 
12     <c:set var="likes" value="羽毛球,摄影,音乐"></c:set>
13     <c:forTokens items="${likes }" delims="," var="myValue">
14         ${myValue }<br/>
15     </c:forTokens>
16 </body>
17 </html>

12行:字符串的键为likes,值为”羽球,壁画,音乐”。

13行:遍历items中的字符串,delims中的逗号是分隔符。

运作程序,效果如下:

葡京注册送88 12

【工程文件】

链接:http://pan.baidu.com/s/1qWNU6Xe

密码:itqn