JSTL标签
Posted Vodka~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSTL标签相关的知识,希望对你有一定的参考价值。
1.Java Server Pages Standards Tag Library : JSP标准标签库,是一个定制标签类库的集合,用于解决一些常见的问题:迭代一个映射或集合,条件测试,XML处理,数据库的访问和操作等。
2.-核心标签库: http://java.sun.com/jsp/jstl/core , 包含web应用的常见工作,比如:循环,表达式赋值,基本输入输出等。
-格式化标签库: http://java.sun.com/jsp/jstl/fmt , 用来格式化显示数据的工作,比如: 对不同区域的日期格式化等。
-为了在jsp页面使用jstl类库,必须以下列格式使用taglib指令:
<%@taglib uri="" prefix="" %> //prefix前缀可以是任何内容,uri则填库的链接
-要使用这两个库,需要导入两个jar包,从Apache的标准标签库中下载二进制包(jakarta-taglibs-standard-current.zip),将二进制jar包解压后,再将standard.jar 和 jstl.jar 导入项目目录下。
3.条件动作标签:
-在JSTL中有4个标签可以执行条件式动作指令:if, choose,when,otherwise.
-if标签先对test="xxx"的条件进行测试,如果条件运算结果为true,则处理该if的主体内容,测试结果保存在一个Boolean对象中,并创建一个
限域变量来引用Boolean对象。可以利用var属性设置限域变量名,scope属性指定其作用范围。
<v:if test="<boolean>" var="<string>" scope="<string>">
....
</v:if>
//if标签有如下属性:
1.test: 条件,必须要有,默认值:无
2.var : 用于存储条件判断结果结果的变量(限域变量名) ,非必要,默认值:无
3.scope:var 属性的作用域,可取值:page| request | session | application ,非必要, 默认值: page
//1.choose和when标签的作用与java中的switch和case关键字相似,用于在众多选项中作出选择,otherwise相当于default
//2.choose标签没有属性,when标签必须且只有一个test属性,otherwise标签没有属性
// 3.可以没有otherwise标签,但每一个choose至少包含一个when标签,otherwise标签必须在最后
//4.choose标签里面只能嵌套when标签和otherwise标签,但otherwise标签和when标签能嵌套类似于if标签的其他标签
<v:choose>
<v:when test="${score < 60}">
<h1>有点差哦<h1>
</v:when>
<v:when test="${score < 80}">
<h1>还不错哦<h1>
</v:when>
<v:when test="${score > 80}">
<h1>很棒棒哦<h1>
</v:when>
......
......
<v:otherwise>
...
<v:otherwise>
</v:choose>
4.迭代标签:
forEach是将一个主题内容或者一个对象集合迭代多次,可以迭代的对象包括所有的java.util.Collection和java.util.Map接口的实现,以及对象或者基本类型的数组。还可以迭代java.util.Iterator和java.util.Enumeration,但不能再多个动作指令中使用Iterator 或者 Enumeration ,因为他们不能重置。
//语法格式:
<v:forEach>
items="<Objet>"
begin="<int>"
end="<int>"
step="<int>"
var="<string>"
varStatus="<string>"
</v:forEach>
//属性描述:
1.items: 要被循环的数据, 非必要,无默认值
2.begin: 开始的元素(0=第一个元素, 1=第二个元素), 非必要, 默认值为: 0
3.end: 最后一个元素,非必要,默认值: Last element
4.step: 每一次迭代的步长 ,非必要, 默认值:1
5.var: 代表当前条目的变量名称,非必要, 无默认值
6.varStatus: 代表循环状态的变量名称,非必要,无默认值
-forEach varStatus属性:
1.index:当前这次迭代从0开始的迭代索引
2.count:当前这次迭代从1开始的迭代计数
3.first:用来表明当前这轮迭代是否为第一次迭代的标志
4.last: 用来表明当前这轮迭代是否为最后一次迭代的标志
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入所需要的标签库--%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="v"%>
<html>
<head>
<title>JSTL的使用</title>
</head>
<body>
<%-- 设置数据--%>
<%
request.setAttribute("Age",300);
List<String> UserList = new ArrayList<>();
UserList.add("Shenzhen");
UserList.add("Chengdu");
UserList.add("Luoyang");
UserList.add("Guangzhou");
UserList.add("Xian");
request.setAttribute("UserList",UserList);
%>
<%--迭代主体内容多次--%>
<v:forEach var="index" begin="1" end="10" step="3">
${index}:${Age+index}<br>
</v:forEach>
<h1>----------------------------</h1>
<%--循环,相当于java的forEach--%>
<v:forEach items="${UserList}" var="instance">
${instance} </br>
</v:forEach>
<%--
利用循环创建varStatus表格
--%>
<table align="center" width="800" border="1" sytle="border-collapse:collapse;">
<tr>
<th>Name</th>
<th>Index</th>
<th>Count</th>
<th>First</th>
<th>Last</th>
</tr>
<v:forEach var="index" items="${UserList}" varStatus="temp">
<tr>
<td>${index}</td>
<td>${temp.index}</td>
<td>${temp.count}</td>
<td>${temp.first}</td>
<td>${temp.last}</td>
</tr>
</v:forEach>
</table>
</body>
</html>
<%@ page import="com.StartSL.UserInfo" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="v" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>用户信息表</title>
</head>
<body>
<%-- 设置用户信息表 --%>
<%
List<UserInfo> Users = new ArrayList<>();
UserInfo UOne = new UserInfo(1,"001","857857");
UserInfo UTwo = new UserInfo(2,"002","666666");
UserInfo UThree = new UserInfo(3,"003","7777");
UserInfo UFour = new UserInfo(4,"004","9090");
UserInfo UFive = new UserInfo(5,"005","3635");
Users.add(UOne);
Users.add(UTwo);
Users.add(UThree);
Users.add(UFour);
Users.add(UFive);
// 添加到request作用域
request.setAttribute("Users",Users);
%>
<%--设置用户表--%>
<v:if test="${!empty Users}">
<table align="center" width="1000" border="1" style="border-collapse: collapse">
<tr>
<th>Num</th>
<th>UserAccount</th>
<th>UserPasswrod</th>
</tr>
<v:forEach var="index" begin="0" end="${Users.size()-1}" step="1">
<tr>
<td> ${Users[index].num}</td>
<td> ${Users[index].account}</td>
<td> ${Users[index].password}</td>
</tr>
</v:forEach>
</v:if>
</table>
</body>
</html>
5.格式化动作标签:
-jstl提供了数字,日期的格式化或解析的标签,formatNumber, formatDate,parseNumber,parseDate。
1.formatNumber 标签用于格式化数组,货币,百分比。该标签用指定的格式或精度来格式化数字。(将数值类型转换成指定格式的字符串类型)
//语法格式
<fmt:formatNumber
value="<string>"
type="<string>"
var="<string>"
scope="<string>"
/>
//属性
value: 要显示的数字,必要,无默认值
type: NUMBER,CURRENCY,PERCENT,非必要,默认值:Number
var: 存储格式化数字的变量, 非必要, 默认值:Print to page
scope: var属性的作用域(page|request|session|application) ,非必要, 默认值:page
//注意:1. 如果设置了var属性,则格式化后的结果不会直接输出,需要通过el表达式获取var对应的限域变量名
2.默认的类型(type) 的取值为number,可取值:number,percent,currency
3.添加这两个标签库声明:
<%@ taglib prefix="v" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
2.formatDate标签:
用于使用不同的方式格式化日期。(将Date型数据类型转换成指定格式的字符串类型)
//语法格式
<fmt:formatDate
value="<string>"
type="<string>"
dataStyle="<string>"
timeStyle="<string>"
pattern="<string>"
timeZone="<string>"
var="<string>"
scope="<string>"
/>
//属性:
value:要显示的日期,必要值,无默认值
type:Date,Time,Both, 非必要,默认值:date
dateStyle: FULL,LONG,MEDIUM,SHORT,DEFAULT, 非必要,默认值:default
timeStyle: FULL,LONG,MEDIUM,SHORT,DEFAULT, 非必要,默认值:default
pattern: 自定义格式模式, 非必要,无默认值
timeZone: 显示日期的时区, 非必要, 默认值:默认时区
<%--格式化日期--%>
<%
java.util.Date MyDate = new java.util.Date();
System.out.println(MyDate);
request.setAttribute("MyDate",MyDate);
%>
${MyDate} <br>
<fmt:formatDate value="${MyDate}" /> <br>
<fmt:formatDate value="${MyDate}" type="time"/> <br>
<fmt:formatDate value="${MyDate}" type="date"/> <br>
<fmt:formatDate value="${MyDate}" type="both" dateStyle="FULL"/> <br>
<fmt:formatDate value="${MyDate}" type="both" timeStyle="short"/> <br>
<fmt:formatDate value="${MyDate}" pattern="yyyy-MM-dd"/> <br>
3.parseNumber标签:用来解析数字,百分数,货币,将这些特定类型字符串转换成数值型
4.parseDate标签: 同理,与formatDate功能相反
<fmt:parseNumber
value="<string>"
type="<string>"
var="<string>"
scope="<string>"
/>
以上是关于JSTL标签的主要内容,如果未能解决你的问题,请参考以下文章