1. 什么是JSTL

       JSTL(Java server pages standarded tag library,即JSP标准标签库)是由JCP(Java community Proces)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签库,并由Apache的Jakarta小组来维护。开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。(取代在JSP程序中嵌入java代码的做法,提高可维护性)。

       JSTL标签是基于JSP页面的,这些标签可以插入在JSP代码中,本质上JSTL也是提前定义好的一组标签,这些标签封装了不同的功能,在页面上调用标签时,就等于调用了封装起来的功能。JSTL的目标是简化JSP页面的设计。对于页面设计人员来说,使用脚本语言操作动态数据是比较困难的,而采用标签和表达式语言则相对容易,JSTL的使用为页面设计人员和程序开发人员的分工协作提供了便利。

      JSTL标识库的作用是减少JSP文件的Java代码,使Java代码与HTML代码分离,所以JSTL标识库符合MVC设计理念。MVC设计理念的优势是将动作控制、数据处理、结果显示三者分离。

2.创建背景

       在JSP诞生之初,JSP提供了在HTML代码中嵌入Java代码的特性,这使得开发者可以利用Java语言的优势来完成许多复杂的业务逻辑。但是,随后开发者发现在HTML代码中嵌入过多的Java代码,程序员对于动辄上千行的JSP代码基本丧失了维护能力,非常不利于JSP的维护和扩展。基于上述的这个问题,开发者尝试着使用一种新的技术来解决上面这些问题。因此,从JSP1.1规范后,JSP增加了自定义标签库的支持,提供了Java脚本的复用性,提高了开发者的开发效率。

2.标签库

分为如下:

1.核心标签

2.格式标签

3.SQL标签库

4.XML标签库

5.函数标签库 

JSTL的条件标签里面可以写JavaScript吗 jstl标签作用_标签库

1.核心标签库

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.  

用来显示数据对象(字符串、表达式)的内容或结果,输出值

使用Java脚本的方式为:<% out.println("hello") %>  <% =表达式 %>

使用JSTL标签:<c:out value="字符串">,

2.

 用于将变量存取于 JSP 范围中或 JavaBean 属性中。

var:变量名

value:变量值

scope:指定变量的作用域

target:指定存储变量或是标签体的目标对象(bean或是map对象)

property:指定目标对象存储数据的属性名

3. 

主要用来从指定的 jsp 范围内移除指定的变量。使用类似,下面只给出语法:

<c:remove var="变量名" [scope="page|request|session|application"]></c:remove>

4.

 用来处理 JSP 页面中产生的异常,并存储异常信息

<c:catch var="name1">

      容易产生异常的代码

</c:catch>

如果抛异常,则异常信息保存在变量 name1 中。

5.

<c:if test="条件1" var="name" [scope="page|request|session|application"]></c:remove>

6.

 三个标签通常嵌套使用,第一个标签在最外层,最后一个标签在嵌套中只能使用一次

JSTL的条件标签里面可以写JavaScript吗 jstl标签作用_Java_02

7.

该标签根据循环条件遍历集合 Collection 中的元素。

语法:

<c:forEach var="name" items="Collection" varStatus="statusName" begin="begin" end="end" step="step"></c:forEach>

var 为变量名;items 指定要遍历的对象;varStatus 用于存放集合中元素的信息。 begin...end 为起始位置和终止位置,不指定则从头到尾

step 为步长  varStatus为状态变量,inde为索引,从0开始    count为计数,从1开始,first/last为是否第一次/是否为最后一次循环。

遍历集合或数组中的所有或部分的数据,不在页面中用遍历循环的方式遍历数据,方便分析和维护,方便解读,可提高代码可维护性 

8. 

用于浏览字符串,并根据指定的字符串截取字符串

亦是有一个迭代标记,实现遍历;指定的分割符,用来分隔每一个字符串;分割数量确定了循环的次数;与StringTokenizer类的作用相似。
语法:

<c:forTokens items="stringOfTokens" delims="delimiters" [var="name" begin="begin" end="end" step="len" varStatus="statusName"]></c:forTokens>

items被迭代的对象;delims分隔符,可以同时多个;begin/end开始和结束位置,用索引方式指定;step步长,默认一个字符;var 指定变量名;varStatus指定循环的状态变量,同forEach;

9.URL 操作标签

(1)<c:import> 把其他静态或动态文件包含到 JSP 页面。与<jsp:include>的区别是后者只能包含同一个web应用中的文件,前者可以包含其他web应用中的文件,甚至是网络上的资源。语法:

<c:import url="url" [context="context"] [value="value"] [scope="..."] [charEncoding="encoding"]></c:import>

        <c:import url="url"  varReader="name" [context="context"][charEncoding="encoding"]></c:import>

 context上下路径,url值以"/"开头  charEncoding导入资源的字符编码   var 指定变量名(不嫩那个是EL,varReader用于接收导入文本的java.io.Reader变量名(不可是EL);

(2)<c:redirect> 该标签用来实现请求的重定向。例如,对用户输入的用户名和密码进行验证,不成功则重定向到登录页面。或者实现Web应用不同模块之间的衔接

(3)<c:url> 用于动态生成一个 String 类型的URL,可以同上个标签共同使用,也可以使用HTML的<a>标签实验超链接。语法

<c:url value="value" [var="name"] [scope="..."] [context="context"]>

            <c:param name="name1" value="value1">

       </c:url>

或:<c:url value="value" [var="name"] [scope="..."] [context="context"]/>