您的位置:首页 > Web前端 > JavaScript

JSP编程专题2之JSP核心四(JSTL核心标签库,格式化标签库)

2017-10-24 21:57 627 查看
1、JSTL核心标签库:
- 使用JSTL的核心标签库,需要在页面中通过taglib指令首先将标签库导入。(首先得将JSTLjar包导入)
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>


a、c:set标签:有三种用法
- 用于进行变量定义,并将变量存放到指定域属性空间;用于为Bean的属性赋值;用于设置Map的key与value等。该标签在实际开发中并不常用。
<br> ------------------- c:set 将变量存放到指定域中 ---------------- <br>
<c:set var="name" value="张三" scope="session" />
name = ${pageScope.name} <br>
name = ${sessionScope.name} <br>
<!--
输出结果为:
------------------- c:set 将变量存放到指定域中 ----------------
name =
name = 张三
->
- scope属性值默认是“pageContext”。
<br> -------------------c:set 为Bean的属性赋值 ------------------<br>
<%
Student student = new Student();
pageContext.setAttribute("student", student);
%>
<c:set value="李四" property="name" target="${pageScope.student}" ></c:set>
<c:set value="24" property="age" target="${pageScope.student}" ></c:set>
student = ${student} <br>
<!--
输出结果为:
-------------------c:set 为Bean的属性赋值 ------------------
student = Student [name=李四, age=24]
-->
<br> ---------------------- c:set为Map赋值 --------------------- <br>
<%
Map<String, Object> map = new HashMap<String, Object>();
pageContext.setAttribute("map", map);
%>
<c:set value="即可" property="name" target="${pageScope.map }"></c:set>
<c:set value="20" property="age" target="${pageScope.map }"></c:set>
map = ${map } <br>
name = ${map.name } <br>
age = ${map.age } <br>
<!--
输出结果为:
---------------------- c:set为Map赋值 ---------------------
map = {name=即可, age=20}
name = 即可
age = 20
-->


b、c:remove标签:从域属性空间中删除指定变量。该标签不常用。
<br> ---------------------------- c:remove 删除指定域中的属性 -------------------- <br>
<c:set var="school" value="pag_school" />
<c:set var="school" value="req_school" scope="request" />
<c:set var="school" value="ses_school" scope="session" />
<c:set var="school" value="app_school" scope="application" />

<c:remove var="school" scope="session" />
school = ${pageScope.school } <br>
school = ${requestScope.school } <br>
school = ${sessionScope.school } <br>
school = ${applicationScope.school } <br>

<!--
输出结果为:
---------------------------- c:remove 删除指定域中的属性 --------------------
school = pag_school
school = req_school
school =
school = app_school
-->


c、c:if标签:用于实现对于条件的判断
<br> -------------- c:if -------------- <br>
<c:set var="user" value="admin" />
<c:if test="${user == 'admin'}" >
<a href="#">进入管理页面</a>
</c:if>
<!--
输出结果为:
-------------- c:if --------------
进入管理页面
-->
- test:判断的条件。若为true,则执行标签体,否则不执行。
- var:存储test的判断结果。不常用。
- scope:存储test判断结果的变量的存放范围。不常用。

d、<c:choose>就像在Java switch语句,它可以让你在一些替代方案之间选择。

- <c:choose>标签没有任何属性。

- <c:when>标记有一个test属性(用于计算条件)。

- <c:otherwise>标签没有任何属性。
<br> ---------------------- c:choose ------------------------ <br>
<c:set var="pageno" value="2" />
<c:set var="totalPages" value="5" />
<c:choose>
<c:when test="${totalPages == 1 }">
首页 上一页 下一页 当前是 ${pageno } / ${totalPages } 页
</c:when>
<c:when test="${pageno == 1 }">
首页 上一页 <a href="#">下一页</a> <a href="#">末页</a> 当前是${pageno } / ${totalPages }页
</c:when>
<c:otherwise>
<a href="#">首页</a> <a href="#">上一页</a> <a href="#">下一页</a> <a href="#">末页</a> 当前是${pageno } / ${totalPages }页
</c:otherwise>
</c:choose>
<!--
输出结果为:
---------------------- c:choose ------------------------
首页 上一页 下一页 末页 当前是2 / 5页
-->


e、c:forEach标签的基本用法:用于循环遍历数组、List、Set、Map集合。在实际应用中使用非常频繁。
<br> -------------------- 遍历List ---------------<br>
<%
List<String> names = new ArrayList<String>();
names.add("张三");
names.add("李四");
names.add("王五");
pageContext.setAttribute("names", names);
%>
<c:forEach items="${names }" var="name">
${name } <br>
</c:forEach>
<!--
输出结果为:
-------------------- 遍历List ---------------
张三
李四
王五
-->

- begin:开始下标;end:结束下标;(包含结束下标)。

<br> -------------------- 遍历List ---------------<br>
<%
List<String> names = new ArrayList<String>();
names.add("郑二");
names.add("张三");
names.add("李四");
names.add("王五");
names.add("赵六");
names.add("田七");
names.add("刘八");
pageContext.setAttribute("names", names);
%>
<c:forEach items="${names }" var="name" begin="3" end="5">
${name } <br>
</c:forEach>
<!--
输出结果为:
-------------------- 遍历List ---------------
王五
赵六
田七
-->


- step:表示步长,各一个输出。

<br> -------------------- 遍历List ---------------<br>
<%
List<String> names = new ArrayList<String>();
names.add("郑二");
names.add("张三");
names.add("李四");
names.add("王五");
names.add("赵六");
names.add("田七");
names.add("刘八");
pageContext.setAttribute("names", names);
%>
<c:forEach items="${names }" var="name" begin="0" end="5" step="2">
${name } <br>
</c:forEach>
<!--
输出结果为:
-------------------- 遍历List ---------------
郑二
李四
赵六
-->


f、c:forEach标签的高级用法:
- varStatus:迭代变量的名称,用来表示迭代的状态,可以访问到迭代自身的信息。(vs.count表示序号;vs.index表示索引号(从0开始);vs.first:当迭代的时候是第一个时,显示为true,否则显示为false。)
<br>----------------------  遍历List ---------------------<br>
<%
List<Student> students = new ArrayList<Student>();
students.add(new Student("张三", 23));
students.add(new Student("李四", 24));
students.add(new Student("王五", 25));
students.add(new Student("赵六", 26));
students.add(new Student("田七", 27));

pageContext.setAttribute("students", students);
%>

<table border="1">
<tr>
<th>序号</th>
<th>姓名</th>
<th>年龄</th>
</tr>
<c:forEach items="${students }" var="student" varStatus="vs">
<tr>
<td>${vs.count}</td>
<td>${student.name}</td>
<td>${student.age}</td>
</tr>
</c:forEach>
</table>
<!--
输出结果为:
---------------------- 遍历List ---------------------
序号  姓名  年龄
1   张三     23
2   李四     24
3   王五     25
4   赵六     26
5   田七     27
-->


2、JSTL格式化标签库:使用JSTL的格式化标签库,需要在页面中通过taglib指令首先将标签库导入。

<%@ taglib uri=" prefix="fmt" %>


a、fmt:formatDate标签:该标签用于使用不同的模式格式化日期。其常用属性有:
- value:将要被格式化的数据。
- pattern:格式化的模式。其与SimpleDateFormat的参数设置方式相同。
- var:格式化后的字符串所要存放的变量。若不指定var,则会将格式化过的结果直接显示在页面中。
- scope:变量存放的域属性空间,取值为page、request、session和application,默认为page范围。
- type:其取值为date、time或者是both,表示给出的value是日期、时间,还是两者都包含,默认为date。
<%
Date now = new Date();
pageContext.setAttribute("now", now);
%>
now = ${now } <br>
<!--
输出结果为:
now = Sun Nov 05 14:00:26 CST 2017
-->


- 示例:使用格式化日期标签:(显示“年-月-日”格式)
now = <fmt:formatDate value="${now}" pattern="yyyy-MM-dd" /><br>
<!--
输出结果为:
now = 2017-11-05
-->


- 再如将格式化后的日期字符串显示到表单中:
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd" var="birth" /> <br>
生日:<input type="text" name="birthday" value="${birth}" />


b、fmt:parseDate标签:该标签用于将指定字符串转换成日期类型。常用的属性有:
- value:将要被转换的数据。
- pattern:将要被转换的数据的模式。其与SimpleDateFormat的参数设置方式相同。
- var:转换后的日期类型数据所要存放的变量。若不指定var,则会将转换过的结果直接显示在页面中。
- scope:变量存放的域属性空间。取值为page、request、session、application,默认为page范围。
<br> --------------------------- 字符串转换成日期 -------------- <br>
<fmt:parseDate value="1949/10/01" pattern="yyyy/MM/dd"></fmt:parseDate> <br>
<fmt:parseDate value="1949/10/01" pattern="yyyy/MM/dd" var="day"></fmt:parseDate><br>
day = ${day}

<!--
输出结果为:
--------------------------- 字符串转换成日期 --------------
Sat Oct 01 00:00:00 CST 1949
day = Sat Oct 01 00:00:00 CST 1949
-->


c、fmt:formatNumber:该标签用于按照指定格式对数字进行格式化。常用的属性有:




- 示例:
<br> -------------------------- 格式化数字 -------------------- <br>
<fmt:formatNumber value="${12345678 }"></fmt:formatNumber> <br>
<fmt:formatNumber value="${12345678 }" groupingUsed="false"></fmt:formatNumber> <br>
<fmt:formatNumber value="${12345.678 }" maxIntegerDigits="8" minIntegerDigits="6"></fmt:formatNumber> <br>
<fmt:formatNumber value="${12345.674 }" maxFractionDigits="2"></fmt:formatNumber>
<!--
输出结果为:
-------------------------- 格式化数字 --------------------
12,345,678
12345678
012,345.678
12,345.67
-->


d、fmt:parseNumber标签:该标签用于将指定字符串转换成数值类型。常用的属性有:




- 示例:
<br>------------------- 字符串转换成数字 -----------------<br>
<fmt:parseNumber value="12345.678" integerOnly="true"></fmt:parseNumber> <br>
<fmt:parseNumber value="12345.678" integerOnly="true" var="num"></fmt:parseNumber>
num + 1 = ${num + 1 }
<!--
输出结果为:
------------------- 字符串转换成数字 -----------------
12345
num + 1 = 12346
-->
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息