博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSTL标签库
阅读量:5021 次
发布时间:2019-06-12

本文共 3276 字,大约阅读时间需要 10 分钟。

一、JSTL的概述

1、Apache开发与维护,依赖EL表达式

2、Apache Tomcat安装JSTL 库步骤如下:

  从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。

  • 官方下载地址:

  下载jakarta-taglibs-standard-1.1.2.zip 包并解压,将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文件:standard.jar和jstl.jar文件拷贝到/WEB-INF/lib/下。

3、四大库

  • core:核心库
  • fmt:格式化,日期和数字
  • sql:过时
  • xml:过时

4、使用taglib指令导入标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

5、core标签库常用标签

①out和set

  • <c:out>:输出
    • value:可以是字符串常量,也可以是EL表达式
    • default:当要输出的内容为null时,会输出default指定的值
    • escapeXml:默认值为true,表示转义。
示例 说明
<c:out value="aaa"/> 输出aaa字符常量
<c:out value="${aaa}"/> 与${aaa}相同,全域查找
<c:out value="${aaa}" default="xxx"/> 当${aaa}不存在时,输出xxx字符

<%

request.setAttribute("a","<script>alert('hello');</script>");

%>

<c:out value="${a}" default="xxx" escapeXml="false"/>

当escapeXml为false,不会转换“<”、">"。

这可能会收到JavaScript攻击。

  • <c:set>:设置(创建域的属性)
  • var:变量名
  • value:变量值,可以是EL表达式
  • scope:域,默认为page,可选值,page、request、session、application。
示例 说明
<c:set var="a" value="hello"/> 在pageContext中添加name为a,value为hello的数据
<c:set var="a" value="hello" scope="sesssion"/> 在session中添加name为a,value为hello的数据

②remove

  • <c:remove>:删除域变量
    • var:变量名
    • scope:如果不给出scope,表示删除所有域中该名称的变量;如果指定了域,那么只删除该域的变量。
示例 说明
<%   pageContext.setAttribute("a","pageContext");   request.setAttribute("a","request");   session.setAttribute("a","session");   application.setAttribute("a","application"); %> 
删除所有域中name为a的数据。
删除pageContext中name为a的数据

③url:url标签会在需要URL重写时添加sessionId 。

  • value:指定一个路径,它会在路径前面自动添加项目名。
    • <c:url value="/index.jsp/">,它会输出/day13_1/index.jsp
  • 子标签:<c:param>,用来给url后面添加参数。
  • var:指定变量名,一旦添加了这个属性,那么url标签就不会再输出到页面,而是把生成url保存到域中。 
示例 说明
输出上下文路径:/day08_1/
把本该输出的结果赋给变量a,范围为request
输出上下文路径:/day08_1/AServlet

<c:url value="/AServlet">

<c:param name="username" value="abc"/>

<c:param name="password" value="123"/>

</c:url>

输出:/day08_1/AServlet?username=abc&password=123

如果参数中包含中文,那么会自动使用URL编码。

④if:if标签的test属性必须是一个boolean类型的值,如果test的值为true,那么执行if标签的内容,否则不执行。

⑤choose:choose标签对应Java中的if/else if/else结构。when标签的test为true时,会执行这个when的内容。当所有when标签的test都为false时,才会执行otherwise标签的内容。

=90 }A级
=70 }C级

⑥forEach:它用来循序遍历数组、集合,还可以用来计算方式来循环。

<%--计数方式,1<=i<=10 --%> 
${i}
//等同于下式for(int i = 1; i <= 10; i++){}

属性:

  • var:循环变量
  • begin:设置循环变量从几开始
  • end:设置循环变量到几结束。
  • step:设置步长,等同于i++,或i+=2,step默认为1.
${str }
//等同于for(String str: strs ){...}

属性:

  • items:指定要循环谁,它可以是一个数组或一个集合
  • var :把数组或集合中的每个元素赋值给var指定的变量。
  • 注意:在 items="${strs }"中,“ }" ”大括号与双引号之间不能有空格。

循环状态:可以使用varStaturs来创建循环状态变量。

<%    ArrayList
list = new ArrayList
(); list.add("one"); list.add("two"); list.add("three"); request.setAttribute("list",list); %>
${vs.count} ${vs.index} ${vs.first} ${vs.last}

循环状态变量有如下属性:

  • count:循环元素的个数。
  • index:循环元素的下标。
  • first:是否为第一个元素
  • last:是否为最后一个元素
  • current:当前元素

6、fmt库:格式化库

①格式化日期

<fmt:formatDate value="" pattern=""/>

<%   Date date = new Date();   request.setAttribute("d",date);%> 
  • value:指定一个Date类型的变量
  • pattern:用来指定输出的模板。

<fmt:formatNumber value="${num1}" pattern="0.00">

保留小数点后2位,它会四舍五入,如果不足两位,以0补位。

<fmt:formatNumber value="${num1}" pattern="#.##">

保留小数点后2位,它会四舍五入,如果不足两位,不补位。

转载于:https://www.cnblogs.com/gdwkong/p/7631726.html

你可能感兴趣的文章
Git Submodule管理项目子模块
查看>>
学会和同事相处的30原则
查看>>
NOJ——1568走走走走走啊走(超级入门DP)
查看>>
文件操作
查看>>
Python:GUI之tkinter学习笔记3事件绑定(转载自https://www.cnblogs.com/progor/p/8505599.html)...
查看>>
jquery基本选择器
查看>>
hdu 1010 dfs搜索
查看>>
搭建wamp环境,数据库基础知识
查看>>
android中DatePicker和TimePicker的使用
查看>>
SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现
查看>>
Android中获取应用程序(包)的大小-----PackageManager的使用(二)
查看>>
Codeforces Gym 100513M M. Variable Shadowing 暴力
查看>>
浅谈 Mybatis中的 ${ } 和 #{ }的区别
查看>>
CNN 笔记
查看>>
版本更新
查看>>
SQL 单引号转义
查看>>
start
查看>>
实现手机扫描二维码页面登录,类似web微信-第三篇,手机客户端
查看>>
PHP socket客户端长连接
查看>>
7、shell函数
查看>>