JSTL标签库

布满荆棘的人生 2022-06-04 06:06 338阅读 0赞

什么是JSTL

Apache提供的标签库,JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL)
jar包:jstl-1.2.jar,如果使用MyEclipse,它会帮我们导入jar包,无需自己导入,如果没有使用MyEclipse那么需要自行导入。
*apache的东西,依赖EL
*使用jstl需要导入jstl1.2.jar
*四大库:
< core:核心库,重点
< fmt:格式化:日期、数字
< sql:过时
< xml:过时

导入标签库

*jar包
*在jsp页面中:<%@taglib prefix=”前缀” uri=”路径”%>
下面是导入JSTL的core标签库:
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core”; %>
prefix的属性值,必须跟下面便签的对象名保持一致
uri如果写错了会报错,找不到该类

core –> c标签!

1. out和set
*:输出
< value:可以是字符串常量,也可以是EL表达式
< default:当要输出的内容为null时,会输出default指定的值
< escapeXml:默认值为true,表示转义!


* 输出字符串aaa
* 输出域属性aaa,其中与&{aaa}相同
*如果&{aaa}不存在,那么输出xxx字符串
*如果&{aaa}中包含特殊字符,那么转义它。这可以防止javascript攻击
*:设置(创建域的属性)
< var:变量名
< value:变量值,可以是EL表达式
< scope:域,默认为page,可选值:page、request、session、application


* 创建名为a,值为hello的域属性,范围:page
* 范围为session

2. remove
*:删除域变量
< var:变量名
< scope:如果不给出scope,表示删除所有域中的该名称的变量;如果指定了域,那么只删除该域的变量。


* 删除名为a的域属性
* 删除page域中名为a的域属性

3. url
*value:指定一个路径!它会在路径前面自动添加项目名。
<> ,它会输出/day13_1/index.jsp
* 子标签:,用来给url后面添加参数,例如:



结果为:/day13_1/index.jsp?username=%ED%2C%3F%ED%2C%3F
*var:指定变量名,一旦添加了这个属性,那么url标签就不会再输出到页面,而是把生成url保存到域中。
*scope:它与var一起使用,用来保存url。


* 输出URL:/项目名/AServlet
* 把生成的url保存到page域中,而不会输出
*:输出URL:/项目名/AServlet?username=%xx%xx%xx%xx%xx%xx,其中张三会被URL编码


4. if:对应java中的if语句
*,当test为值时,执行标签体内容!


* 当条件为true时执行标签体内容
hello

5. choose:它对应java中的if/else if/ … /else


*

a

b

c

d

等同与:
if() {
} esle if() {
} esle if() {
} else if() {
} else {
}

6. forEach
它用来循环遍历数组、集合!
它还可以用来计数方式来循环!
计数方式:
for(int i = 1; i <= 10; i++) {

}


&{i}

属性:
*var:循环变量
*begin:设置循环变量从几开始。
*end:设置循环变量到几结束。
*step:设置步长!等同与java中的i++,或i+=2。step默认为1


可以用来遍历数组、List、Map、

  1. 计数循环

    &{i}

    等同于
    for(int i = 1; i <= 10; i++) {
    out.println(i);
    }

    &{i}

    等同于
    for(int i = 1; i <= 10; i+=2) {
    out.println(i);
    }

遍历数组
<%
String[] names = {“zhangSan”, “liSi”, “wangWu”, “zhaoLiu”};
pageContext.setAttribute(“ns”, names);
%>




等同于
for(String str : strs) {

}
属性:
* items:指定要循环谁,它可以是一个数组或一个集合,中间一定不要有空格
* var:把数组或集合中的每个元素赋值给var指定的变量。

遍历List

  1. <% List<String> names = new ArrayList<String>(); names.add("zhangSan"); names.add("liSi"); names.add("wangWu"); names.add("zhaoLiu"); pageContext.setAttribute("ns", names); %>
  2. <c:forEach var="item" items="${ns }">
  3. <c:out value="name: ${item }"/><br/>
  4. </c:forEach>

遍历Map

  1. <% Map<String,String> stu = new LinkedHashMap<String,String>(); stu.put("number", "N_1001"); stu.put("name", "zhangSan"); stu.put("age", "23"); stu.put("sex", "male"); pageContext.setAttribute("stu", stu); %>
  2. <c:forEach var="item " items="${stu }">
  3. <c:out value="${item.key }: ${item.value } "/><br/>
  4. </c:forEach>

循环状态
可以使用varStatus来创建循环状态变量,可随便定义变量名!
循环状态变量有如下属性:
* count:循环元素的个数
* index:循环元素的下标
* first:是否为第一个元素
* last:是否为最后一个元素
* current:当前元素

  1. <c:forEach items="${list }" var="ele" varStatus="vs">
  2. ${vs.index} ${vs.count } ${vs.first } ${vs.last } ${vs.current }<br/>
  3. </c:forEach>
  4. <c:forEach var="item" items="${ns }" varStatus="vs" >
  5. <c:if test="${vs.first } ">第一行:</c:if>
  6. <c:if test="${vs.last } ">最后一行:</c:if>
  7. <c:out value="第${vs.count } 行: "/>
  8. <c:out value="[${vs.index } ]: "/>
  9. <c:out value="name: ${vs.current } "/><br/>
  10. </c:forEach>

fmt库

它是格式化库
导入JSTL格式化标签库
<%@ taglib prefix=”fmt” uri=”http://java.sun.com/jsp/jstl/fmt”; %>
格式化日期:


value:指定一个Date类型的变量
pattern:用来指定输出的模板!例如:yyyy-MM-dd HH:mm:ss
例子:
<%
Date date = new Date();
pageContext.setAttribute(“d”, date);
%>

格式化小数:

保留小数点后2位,它会四舍五入!如果不足2位,以0补位!
保留小数点后2位,它会四舍五入!如果不足2位,不补位!
例子:
<%
double d1 = 3.5;
double d2 = 4.4;
pageContext.setAttribute(“d1”, d1);
pageContext.setAttribute(“d2”, d2);
%>



* pattern:0.00,表示小数不足两位时,使用0补足两位
* pattern:#.##,表示小数不足两位时,有几位显示几位,不会补足

发表评论

表情:
评论列表 (有 0 条评论,338人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JSTL标签

    ![jstl][] 1. 什么是JSTL JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便,它与J

    相关 JSTL标签

    JSTL(Java Server Pages Standerd Tag Library,JSP标准标签库)包含用于编写和开发JSP页面的一组标准标签,它可以为用户提供一个无脚本

    相关 JSTL-fmt标签

    formatting标签库:就是用于在 JSP 页面中做国际化格式化的动作 分为了两类,分别是: 国际化核心标签:<fmt:setLocale>、<fmt:bundl