java引入core标签库_JavaWeb学习笔记11--JSTL标签库

本文介绍了JSTL(JSP标准标签库)的核心功能,包括表达式标签如`<c:out>`、`<c:set>`、`<c:remove>`,流程控制标签如`<c:if>`、`<c:choose>`,以及迭代标签`<c:forEach>`。通过实例展示了如何在JSP中使用这些标签进行数据展示、条件判断和循环遍历,提高代码可读性和维护性。
摘要由CSDN通过智能技术生成

一、JSTL简介:

JSTL全名为JavaServer Pages Standard Tag Library,中文名称为JSP标准标签函数库,目前最新的版本为1.2。JSTL是由JCP(Java Community Process)所指定的标准规格,它主要提供给Java Web开发人员一个标准通用的标签函数库。

Web 程序开发人员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入Java程序(Scripting)的做法,以提高程序可读性、维护性和方便性。

下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

4c93613ee2a83e247cbb49aa4354c9c9.png

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

aa355a7182bf8a3f8af6ea54a1869310.png

点击上图中的红框部分,进入如下界面:

cd15766f3c50756cf6f803557031d1be.png

上图中,点击最新版本进行下载。

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

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

(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)主要有以下几种:

1、表达式标签:

:主要用来显示数据的内容,就像是 一样

:主要用来将变量储存至JSP范围中或是JavaBean的属性中

:主要用来移除变量

:主要用来处理产生错误的异常状况,并且将错误信息储存起来(用的少)

2、流程控制:

:用途和我们一般在程序中用的if 一样

:本身只当做 和 的父标签

/:使用和来做流程控制时,两者都必须为的子标签(类似于switch···case···)

3、迭代操作:

:循环遍历,它可以将集合(Collection)中的成员循序浏览一遍。运作方式为当条件符合时,就会持续重复执行的本体内容。

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

下面来详细介绍一下这些标签。

二、核心标签库:

包含Web应用的常见工作, 比如:循环、表达式赋值、 基本输入输出等。

1、表达式标签:

:主要用来显示数据的内容,就像是 一样

:主要用来将变量储存至JSP范围中或是JavaBean的属性中

:主要用来移除变量

:主要用来处理产生错误的异常状况,并且将错误信息储存起来(用的少)

代码举例:

标签

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

1

2 pageEncoding="UTF-8"%>

3

4

5

6

7

8

Insert title here

9

10 request.setAttribute("name", "smyhvae");11 %>

12

13

14

15

16

17

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

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

a965dc54ae842b81332fa109691acb58.png

上图中的c.tld文件代表的就是core这个标签库,打开它,能够看到uri:

764e376fe7674f43d7b921b1e3aa29c3.png

其实第03行代码是固定写死了的,添加即可,可以不用深究。

一旦引入core标签库,此时在body标签中,只要输入"

57432d1256591c572dae4c5679e37b38.png

我们在第10行给request添加一个属性,然后就可以在第14行通过out输出标签输出这个值了(当然,也可以用EL表达式来输出),运行程序,效果如下:

a9d55baef8a272610bd8719c0294a3af.png

标签

1

2 pageEncoding="UTF-8"%>

3

4

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行代码。

效果如下:

58147200626809b91fd360b7ec5dfbf8.png

2、流程控制:

:用途和我们一般在程序中用的if 一样

:本身只当做 和 的父标签

/:使用和来做流程控制时,两者都必须为的子标签(类似于switch···case···)

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

1

2 pageEncoding="UTF-8"%>

3

4

5

6

7

8

Insert title here

9

10 request.setAttribute("name", "smyhvae");

11 %>

12

13

14

15

16

17 欢迎你,${requestScope.name }

18

19

20

21 请登录后操作

22

23

24

25

26

27

28

29

30 未成年,不许进。

31

32

33 欢迎光临。

34

35

36 老年人请注意身体。

37

38

39

40

41

15至22行为if标签(和if语句的功能是一样的),16行中test里面的内容必须为boolean值:我们在第10行添加了name的值,然后在16行、20行判断name的值是否为空,进而做出判断。

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

运行程序,效果如下:

b87a2acc2a4716807a57b0f9e7a355e5.png

3、迭代操作:

:循环遍历,它可以将集合(Collection)中的成员循序浏览一遍。运作方式为当条件符合时,就会持续重复执行的本体内容。

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

代码举例:

新建类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

2 pageEncoding="UTF-8"%>

3

4

5

6

7

8

9

Insert title here

10

11

12 List users = new ArrayList();

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

22

23

24

25

26

name

27

sex

28

age

29

30

31

32

33

${user.name}

34

${user.sex}

35

${user.age}

36

37

38

39

核心代码是31行至37行。

我们在12至19行里,往List中加入多个user对象的值,并放入request中。然后在第24行加入一个表格,在表格里通过遍历User对象中的内容,这里用到了中的两个属性:31行的"items"表示需要迭代的集合,"var"表示每次一取,定义的变量。

运行程序,效果如下:

bd89ae8b1b5d28b3de1d86b21fb6c645.png

中的属性:

我们在上面的代码中的31行用到了过中的两个属性:items和var。接下来来学习一下其他的属性:

begin:表示从第几个开始索引,一般不写;

end:表示结束的位置。如果需要遍历十行,在此处写10即可。

step:增量。

上面的三个属性用的比较少。

varStatus:当前的状态。它的状态有以下几个:

index  索引 从0开始

count  从1开始 当前遍历次数

current 当前正在迭代的对象

first  是否是第一个

last   是否是最后一个

我们给varStatus举个例子。我们在上面的index3.jsp代码中进一步添加:

index3.jsp:

1

2 pageEncoding="UTF-8"%>

3

4

5

6

7

8

9

Insert title here

10

11

12 List users = new ArrayList();

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

22

23

24

25

26

27

name

28

sex

29

age

30

状态值

31

32

33

34

35

${user.name}

36

${user.sex}

37

${user.age}

38

39 index :${status.index }

40 count :${status.count }

41 current :${status.current }

42 first :${status.first }

43 last :${status.last }

44

45

46

47

48

49

加粗部分的30行、33行中的varStatus属性、38行至44行是我进一步添加的代码。运行程序,效果如下:

ed61041e88da53925e8b3fc2b2a4566a.png

通过上面的图片,再来回顾一下varStatus的各种状态,就一目了然了:

index  索引 从0开始

count  从1开始 当前遍历次数

current 当前正在迭代的对象

first  是否是第一个

last   是否是最后一个

代码举例:

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

index4.jsp:

1

2 pageEncoding="UTF-8"%>

3

4

5

6

7

8

Insert title here

9

10

11

12

13

14 ${myValue }

15

16

17

48304ba5e6f9fe08f3fa1abda7d326ab.png

12行:字符串的键为likes,值为"羽毛球,摄影,音乐"。

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

运行程序,效果如下:

243588546b89056c672a5e186b21f338.png

【工程文件】

密码:itqn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值