jstl标签学习笔记
一. 用maven建立web工程
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp
mvn package
mvn eclipse:eclipse
二. 在pom.xml中添加
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
三. jstl简介
JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的。在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定义标签的开发难度较大和不利于技术标准化产生了自定义标签库。JSTL标签库可分为5类:
a. 核心标签库
b. I18N格式化标签库
c. SQL标签库
d. XML标签库
e. 函数标签库
a. 核心标签库
JSTL的核心标签库标签共13个,从功能上可以分为4类:表达式控制标签、流程控制标签、循环标签、URL操作标签。使用这些标签能够完成JSP页面的基本功能,减少编码工作。
(1)表达式控制标签:out标签、set标签、remove标签、catch标签。
(2)流程控制标签:if标签、choose标签、when标签、otherwise标签。
(3)循环标签:forEach标签、forTokens标签。
(4)URL操作标签:import标签、url标签、redirect标签。
在JSP页面引入核心标签库的代码为:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
1、表达式控制标签
表达式控制分类中包括<c:out>、<c:set>、<c:remove>、<c:chtch>4个标签,现在分别介绍它们的功能和语法。
<c:out>标签 【功能】:用来显示数据对象(字符串、表达式)的内容或结果。
在使用Java脚本输出时常使用的方式为:
<% out.println(“字符串”)%>
<%=表达式%>
在web开发中,为了避免暴露逻辑代码会尽量减少页面中的Java脚本,使用<c:out>标签就可以实现以上功能。
<c:out value=”字符串”>
<c:out value=”EL表达式”>
提示:JSTL的使用是和EL表达式分不开的,EL表达式虽然可以直接将结果返回给页面,但有时得到的结果为空,<c:out>有特定的结果处理功能,EL的单独使用会降低程序的易读性,建议把EL的结果输入放入<c:out>标签中。
<c:out>标签的使用有两种语法格式。
【语法1】:
<c:out value=”要显示的数据对象” [escapeXml=”true|false”] [default=”默认值”]>
【语法2】:
<c:out value=”要显示的数据对象” [escapeXml=”true|false”]>默认值
</c:out>
这两种方式没有本质的区别,只是格式上的差别。标签的属性介绍如下。
value:指定要输出的变量或表达式。
escapeXml:设定是否转换特殊字符(如<、>等一些转义字符),在默认值为true的情况下直接在输出<的,如果改为false将会进行转义输出“<”等。
default:为默认输出结果。如果使用表达式得到的结果为null(注意与空区别),将会输出默认结果。
<c:set>标签 功能:主要用于将变量存取于JSP范围中或JavaBean属性中。
<c:set>标签的编写共有4种语法格式。
语法1:存值,把一个值放在指定(page、session等)的map中。
<c:set value=”值1” var=”name1” [scope=”page|request|session|application”]>
含义:把一个变量名为name1值为“值1”的变量存储在指定的scope范围内。
语法2:
<c:set var=”name2” [scope=”page|request|session|application”]>值2</c:set>
含义:把一个变量名为name2,值为值2的变量存储在指定的scope范围内。
语法3:
<c:set value=”值3” target=”JavaBean对象” property=”属性名”/>
含义:把一个值为“值3”赋值给指定的JavaBean的属性名。相当与setter()方法。