java中几个常用的标签_JSP常用标签

一、JSTL简介

1、什么是JSTL

JSTL是Java中的一个定制标记库集。(这个标记库集不需要自己编写,可以直接使用)

2、为什么要使用JSTL

实现了JSP页面中的代码复用(基于标签库原理,重复率较高的代码块支持复用,提高效率)

书写JSP页面时可读性更强(长得很像xml,方便前端查看和参与开发)

用事实告诉你为什么使用JSTL:

157268080_1_20190325113009771.jpg

实现:

157268080_2_20190325113009849.jpg

但是,使用JSTL效果如下:

157268080_3_20190325113009896.jpg

3、JSTL环境搭建

157268080_4_2019032511301084.jpg

JSTL的下载:

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

下载文件:jakarta-taglibs-standard-1.1.2.zip————2004-10-25 20:57 933K

解压文件后,在lib文件夹会获得两个jar包: standard.jar和jstl.jar

需要把这两个jar包导入到项目中,注意:

载入外来包,我们不介意采取:右击项目——Build Path方式,因为这样只是引入了一个jar包的link进来,如果把项目挪动位置或者把jar包删除了,则报错。所以我们推荐直接把要载入的文件复制到:项目——WebRoot\WEB-INF\lib里面,不要忘了把jar包选中——右键——Build Path----Add to Build Path。这样做可以让jar包随着项目走,绑在了一起。

二、EL表达式配合使用JSTL

157268080_5_20190325113010146.jpg

1、JSTL小程序

如果要使用JSTL,要先导入JSTL的标签库,如果要进行页面的输出的话,需要使用输出标签。是属于JSTL核心标签的一个。

导入核心标签库:

Ps:在uri中之所以能找到该http,是因为导入了上面两个jar,否则是找不到的。prefix="c",里面的名字可以自定义,一般为“c”。

具体如下:

157268080_6_20190325113010193.jpg

2、JSTL标签的四大分类及JSTL函数

157268080_7_20190325113010240.jpg

JSTL标签中Value中的值其实可以输出变量和常量。其中常量可以直接输出,变量需要通过EL表达式去获取。

157268080_8_20190325113010334.jpg

3、EL表达式

什么是EL表达式?

全名是Expression Language,常常配合jstl标签库使用,使得JSP页面更直观,写法更简单。

比如:普通写法:

157268080_9_20190325113010381.jpg

EL表达式写法:

157268080_10_20190325113010412.jpg

EL表达式的格式:

用美元符号“$”定界,内容包括在花括号“{}”中,即${表达式}。

注意“.”和“[]”运算符:

157268080_11_20190325113010443.jpg

但是:以下两种情况,两者不通用。

157268080_12_20190325113010521.jpg

4、EL变量

157268080_13_20190325113010552.jpg

如:

如果没有做范围的限定,会依据默认从小到大开始搜索,如果还是找不到,则输出空字符串。

157268080_14_20190325113010599.jpg

5、EL自动类型转换

普通情况:

157268080_15_20190325113010646.png

如果是用EL表达式:

157268080_16_20190325113010709.png

6、EL隐式对象

157268080_17_20190325113010756.png

7、EL运算符

157268080_18_20190325113010849.png

对empty举例:

Ps:如果username为null或者"",则返回true;如果username为"有内容",则返回false。

el表达式中empty运算符对字符串为Null,及空字符串都返回 TRUE。

三、JSTL核心标签的使用

157268080_19_20190325113010927.png

1、out标签(表达式控制标签)

out标签的作用:

157268080_20_2019032511301153.png

2、set标签(表达式控制标签)

set的标签的作用:

存值到scope中(page,request,session,application);

可以将值以变量形式存放在指定范围内,有两种方式:

157268080_21_2019032511301184.png

存值到JavaBean的属性中。

需要配合target属性指定对象并通过property属性指定要赋值给对象的哪个属性。

Person类:

157268080_22_20190325113011131.png

将Person类实例化

157268080_23_20190325113011224.png

实例化话后的变量名叫person。那实例化后如何通过set标签向person中赋值。

变量的赋值需要配合target属性指定对象并通过property属性指定要赋值给对象的哪个属性。

157268080_24_20190325113011287.png

3、remove标签(表达式控制标签)

remove标签的用法:

只能remove掉某个变量(不能remove某个类对象的某个属性);

var属性是必选;

scope属性是可选。

比如:

157268080_25_20190325113011443.png

此时运行结果就输出不了firstName的值了。

4、catch标签(表达式控制标签)

catch标签的用法:

catch标签中可以包含那些容易出错的JSTL标签(逻辑)

157268080_26_20190325113011474.png

输出结果:

157268080_27_20190325113011552.png

5、if标签(流程控制标签)

if标签的用法:

同程序中的if作用相同,用来实现分支条件控制。

test属性用于存放判断的条件,一般使用EL表达式来编写。

var指定名称用来存放判断的结果类型为true或false

scope用来存放var属性存放的范围。

157268080_28_20190325113011584.png

比如:根据用户输入的成绩进行等级判断

157268080_29_20190325113011615.png

运行结果:

用户什么都没输入的时候,默认进来是false

157268080_30_20190325113011677.png

输入90:

157268080_31_20190325113011709.png

输入80:

157268080_32_20190325113011756.png

6、choose、when、otherwise(流程控制标签)

choose、when、otherwise 标签的作用:

通常这三个标签被放在一起配合使用

标签嵌套在和标签的外面作为他们的父标签来使用。

其中choose和when标签也可以一起组合使用。

综上所述通常有以下两种语法结构:

157268080_33_20190325113011787.png

比如:

157268080_34_20190325113011834.gif

=60 }">

=0 }">

157268080_34_20190325113011834.gif

ps:用法类似于switch——case——default。

157268080_35_20190325113011928.png

比如:

157268080_36_20190325113011990.png

7、forEach(循环控制标签)

forEach标签的作用:

157268080_37_2019032511301221.png

常用用法1-全部遍历:

157268080_38_2019032511301299.png

例子:

157268080_39_20190325113012146.png

常用用法2-部分遍历:(begin end)

157268080_40_20190325113012224.png

index值是从0开始的。

例子:

157268080_41_20190325113012287.png

常用用法3-部分遍历中指定步长(step)

157268080_42_20190325113012318.png

例子:

Ps:step默认值:1。

常用用法4-部分遍历时输出元素的状态(varStatus)

157268080_43_20190325113012599.png

例子:

157268080_34_20190325113011834.gif

157268080_34_20190325113011834.gif

PS:index从0开始;count从1开始;first是否第一个(boolean);last是否最后一个(boolean)。

8、forTokens(循环控制标签)

forTokens标签的用法:

157268080_44_20190325113012740.png

例子:

157268080_45_20190325113012787.png

输出:

157268080_46_2019032511301384.png

注:forTokens还有如下属性,与forEach的属性相同。

157268080_47_20190325113013115.png

9、import(URL操作标签)

import标签的用法:

157268080_48_20190325113013256.png

impor各属性含义:

157268080_49_20190325113013302.png

例子:

157268080_34_20190325113011834.gif

1

2

3

4

5

6

7


8

9

10

11

12

157268080_34_20190325113011834.gif

Ps:由于可能网络中断导致抛出异常,所以常常把import标签放在catch标签里。

157268080_34_20190325113011834.gif

1

2

3

4

5

6

7

8

9

10

11

12

157268080_34_20190325113011834.gif

Ps1:如果没定义var,则可以直接输出;如果定义了var,则用c:out标签输出。

Ps2:第一步:改eclipse中tomcat的部署路径,如果是灰掉的,停掉tomcat,然后clean,就可以改为第二项了(如果想在webapps生成,记得在Deploy path选择webapps)。第二步:改conf/context.xml中加上crossContext="true"。如:

注意:

157268080_50_20190325113013381.png

10、redirect标签(URL操作标签详解)

redirect标签的用法:

157268080_51_20190325113013427.png

注意:重定向的话浏览器的url都变为重定向的url,而import只是载入,浏览器url不变。

例子:

157268080_52_20190325113013490.png

重定向把参数值都带到URL中去了:

157268080_53_20190325113013599.png

获取值:

157268080_54_20190325113013662.png

11、url标签(URL操作标签)

157268080_55_20190325113013740.png

157268080_34_20190325113011834.gif

temp.jsp

New URL

157268080_34_20190325113011834.gif

四、JSTL函数的使用

157268080_56_20190325113013818.png

1、contains函数、startsWith、endsWith

contains函数表示加入的字符串是否包含字串,返回一个boolean类型的值。

157268080_34_20190325113011834.gif

1

2

3


4

5


6

7


8

9


10

157268080_34_20190325113011834.gif

Ps1:配合使用:

2、escapeXml、indexOf

157268080_34_20190325113011834.gif

1

2 书

3


4

5 书')}">

6


7

8 书">

9


10

11

157268080_34_20190325113011834.gif

157268080_57_20190325113013865.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值