JSTL核心标签库
程序员文章站
2024-01-26 15:47:28
...
JSTL核心标签库
- JSTL 全名为 JavaServer Pages Standard Tag Library
- JSTL需要的jre包!
在使用JSTL标签时,要导入标签库
<!-- jstl核心标签的导入 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
out标签
标签主要用于显示数据内容
servlet进行转发和person对象的数据
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Person person = new Person("李四",99,"女");
request.setAttribute("person", person);
request.getRequestDispatcher("/jstl/jstlTest01.jsp").forward(request, response);
接收数据的jsp页面
<h3>out标签</h3>
获取requestScope的person的name属性的值:<c:out value="${requestScope.person.name }" ></c:out><br>
<%--
会对敏感的字符进行转译
eg:<c:out value="${}" ></c:out> 其中的${}就是敏感的el表达式
--%>
<c:out value="java" ></c:out><br> <%-- 相当于<%=java %> --%>
<!--
escapeXml 默认为true
escapeXml="true"将value中的值以字符串的形式原封不动的显示出来。
escapeXml="flase" 将value中的值进行转译
-->
escapeXml="true": <c:out value="<a href='#'>点击我</a>" ></c:out><br>
escapeXml="false": <c:out value="<a href='#'>点击我</a>" escapeXml="false"></c:out><br>
<!--
default设置默认值
当没有数据时显示默认值
-->
当没有数据时显示默认值:<c:out value="${pppp}" default="000"></c:out><br>
显示结果:
set标签
var 欲存入的变量名称
- value 存入域对象的值
- scope 存在的作用域范围(page,request,session,application)
<c:set var="name1" value="李四" scope="page"></c:set>
//取出pahe域对象里面的name1变量的值
name:<c:out value=" ${pageScope.name1} "></c:out>
*
<%
Person person = new Person();
person.setAge(25);
request.setAttribute("person",person);
%>
<c:set var="age" value="${requestScope.person.age }" scope="page"></c:set>
<!-- 打印25 -->
age:<c:out value="${pageScope.age }"></c:out>
<!-- 将请求参数的值赋给 person.age,并将age修改为100-->
<c:set target="${requestScope.person }" property="age" value="${param.age }" ></c:set><br />
<!-- 打印100 -->
age:${requestScope.age.age}<br>
remove标签
- 移除域对象里面的属性
<c:set var="date" value="1991-1-1" scope="session"></c:set>
date:${sessionScope.date}<br>//打印1991-1-1
<!--移除session域里面的 date对象 -->
<c:remove var="date" scope="session"/>
date:${sessionScope.date}<br>//打印空字符串
- c:forEach 遍历
<!--
var 变量
begin 起始值
end 结束值
step 每次增长
-->
<c:forEach var="i" begin="1" end="10" step="2">
${i }
</c:forEach>
forEach标签
- foreEach取List集合
<%
List<Person> list = new ArrayList<Person>();
list.add(new Person("AAA",15,"男"));
list.add(new Person("BBB",15,"男"));
list.add(new Person("CCC",15,"男"));
list.add(new Person("DDD",15,"男"));
list.add(new Person("EEE",15,"男"));
pageContext.setAttribute("list", list);
%>
<c:forEach items="${list}" var="per" varStatus="status">
name:<c:out value="${per.name}"></c:out><br>
age:<c:out value="${per.age}"></c:out><br>
gender:<c:out value="${per.sex }"></c:out>
<%-- status.index当前成员的下标索引 --%>
index:<c:out value="${status.index}"></c:out><br>
<%--当前成员的数量status.count --%>
count:<c:out value="${status.count}"></c:out><br>
<hr>
<%-- status.first 是否是第一个 --%>
<%-- status.last 是否是最后一个 --%>
</c:forEach>
显示结果
- forEach设置表格隔行变色
<h3>表格隔行变色</h3>
<table width="350px" border="1px">
<tr>
<td>姓名:</td>
</tr>
<c:forEach items="${list }" var="per" varStatus="status">
<tr ${status.count %2 ==0 ? " bgcolor='#ccccfe'": ""} >
<td>${per.name}</td>
</tr>
</c:forEach>
Map集合遍历
<%
Map<String, Person> mapPerson = new HashMap<String, Person>();
mapPerson.put("a", new Person("AAAAA", 11111));
mapPerson.put("b", new Person("BBBBB", 22222));
mapPerson.put("c", new Person("CCCCC", 33333));
mapPerson.put("d", new Person("DDDDD", 44444));
mapPerson.put("e", new Person("EEEEE", 55555));
mapPerson.put("f", new Person("FFFFF", 66666));
request.setAttribute("mapPerson", mapPerson);
%>
<c:forEach items="${requestScope.mapPerson}" var = "map">
${map.key } -- ${map.value.age } -- ${map.value.name }<br />
</c:forEach>
if标签
<c:if test="${2>1 }" var="k1" scope="page">
${k1 } ;
</c:if>
打印结果
true
url标签
<c:url var="add" value="http://www.baidu.com"></c:url>
<a href="${add}">这是一个连接</a>
点击后跳转页面
param标签
重定向后携带参数
<c:redirect url="getJstl.jsp">
<c:param name="id" value="99"></c:param>
</c:redirect>
//打印结果99
${param.id }
forTokens 相当于String里面的 split
<!-- c:forTokens 相当于String里面的 split
delims=","分割的字符
-->
<c:set var="str" value="a,b,c,d,e,f,g" scope="request"></c:set>
<c:forTokens items="${requestScope.str}" delims="," var="s">
${s }<br/>
</c:forTokens>
“/”解析,import解析
<%--
这里的"/"代表的是当前游览器web站点的根目录
response.sendRedirect("/index.jsp")
这里的“/”代表的是当前web 应用下的根目录
<c:redirect url="/index.jsp"></c:redirect>
--%>
<!-- c:import url可以包含任何页面(导入其他页面) -->
<c:import url="http://www.baidu.com"></c:import>
c:url 产生一url地址,可以Cookie 是否可用来智能的进行URL重写,对GET请求的参数进行编码
可以把产生的URL存储在域对象的属性中
还可以使用C:param为 URL 添加参数。c:url会对参数进行自动转码
value 中的”/”代表当前的Web应用的根目录
<c:url value="/index.jsp" var = "indexUrl" scope="page">
<c:param name="name" value="url的参数"></c:param>
</c:url>
url: ${pageScope.indexUrl }
choose的使用:可以使用if…else if..else if()
<c:choose>
<c:when test="${param.age > 18 && param.age<35}">
青年
</c:when>
<c:when test="${param.age > 35 && param.age<60}">
中年
</c:when>
<c:when test="${param.age > 60}">
老年
</c:when>
<c:otherwise>
未成年
</c:otherwise>
</c:choose>
format标签
导入标签
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<fmt:formatDate value="<%=new Date() %>" pattern="yyyy年MM月dd日"/><br>
<fmt:formatDate value="<%=new Date() %>" dateStyle="short"/><br>
<fmt:formatDate value="<%=new Date() %>" dateStyle="long"/><br>
<fmt:formatDate value="<%=new Date() %>" timeStyle="both"/><br>
显示结果:
formatNumber 格式化标签
<h3>格式化</h3>
<!-- type="currency 格式化为人民币 -->
<fmt:formatNumber value="5000" type="currency"></fmt:formatNumber><br>
<!-- currencySymbol="$" 设置货币符号为美元 -->
<fmt:formatNumber value="5000" type="currency" currencySymbol="$"></fmt:formatNumber><br>
<!-- type="percent"格式为百分号 -->
<fmt:formatNumber value="5000" type="percent"></fmt:formatNumber><br>
<!-- type="number" 格式化为数字 -->
<fmt:formatNumber value="5000" type="number"></fmt:formatNumber><br>
<!-- maxIntegerDigits 设置最大位数为 minIntegerDigits 最小位数为 当不足用0补足--><br>
<fmt:formatNumber value="5000" maxIntegerDigits="4" minIntegerDigits="1" ></fmt:formatNumber><br>
<fmt:formatNumber value="50" maxIntegerDigits="4" minIntegerDigits="3" ></fmt:formatNumber><br>
上一篇: 请教怎么用键名分组
下一篇: C#委托和事件的使用的意义