jstl标签库(c标签和fmt标签)
简介:
apache的东西,依赖EL
使用jstl需要导入jstl1.2.jar四大库:
> core:核心库,重点
> fme:格式化:目期、数字
> sql:过时
> xml:过时
core库:
core -->c标签!
1. out和set
* :输出
> value:可以是字符串常量,也可以是EL表达式
> default:当要输出的内容为null时,会输出default指定的值
> escapeXml:默认值为true,表示转义!
:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>titletitle>
head>
<body>
<%
request.setAttribute("code", "<script>alert('hello')</script>");
%>
${code }
<c:out value="${code }" escapeXml="true"/>
body>
html>
发现首先输出是一个弹窗,此时并没有使用到
使用
标签:
var:指定变量名称
value:指定变量值
scope:指定设置的域范围,没有则设置pageContext域
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>titletitle>
head>
<body>
<c:set var="code" value="hello" scope="session"/>
<c:out value="${code }" escapeXml="true"/>
<%
String str = (String)session.getAttribute("code");
out.print(str);
%>
body>
html>
在session域中设置名为code,值为hello的信息。
结果显示输出正常,那么可以验证属性设置成功了;
标签
var:要删除的变量
scope:删除指定域范围的变量,没有指定则删除所有域
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>titletitle>
head>
<body>
<c:set var="code" value="hello" scope="session"/>
<c:remove var="code" scope="request"/>
<c:out value="${code }" default="No code"/>
body>
html>
将删除范围先指定为request,查看输出信息:
发现设置在session中的变量没有被删除,那么将
发现输出的是默认设置信息,说明code变量已经被删除;
如果取消scope参数查看输出:
同样输出的是默认设置信息,说明code变量已经被删除。
标签;
把本该输出的value赋值给scope范围内的var(输出的内容会自动在value的值前面加上项目名)
给url设置为名name,值为value的参数(如果参数中有中文,会自动进行url编码)
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>titletitle>
head>
<body>
<c:url value="/cout.jsp" scope="request" var="curl">
<c:param name="username" value="zs"/>
<c:param name="password" value="123"/>
c:url>
<c:out value="${requestScope }" default="No happy">c:out>
body>
html>
输出结果:(加上var后将不会输出设置的value内容,而是保存到指定变量var中)
输出的信息有:指定变量curl,值/day0427/cout.jsp,指定参数username=zs、password=123
加上指定的域范围为request,获取的域范围为requestScope,得以验证。
标签:
test:boolean类型,true或false,为true则继续执行,false则结束
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>titletitle>
head>
<body>
<c:set var="one" value="one属性" scope="request"/>
<c:if test="${not empty one }">
<c:out value="${one }"/>
c:if>
body>
html>
查看输出:
在 reques t域中设置了一个名为 one,值为 one属性 的变量;
使用
成功输出。
需要注意的一点就是,上面的 test 属性中设置的 one 是以全域查找的方式,如果设置为 pageScope.one 获取其它的域那么表达式就为false了。
标签:
xxx
xxx
。。。。
xxx
test是boolean类型,为真则执行其中的语句:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>titletitle>
head>
<body>
<c:choose>
<c:when test="">c:when>
<c:when test="${empty param.name }">
参数name为空!
c:when>
<c:otherwise>
参数name不为空!name=${param.name }
c:otherwise>
c:choose>
body>
html>
首先以空参的方式访问:
然后在访问地址上添加参数:
结果:
标签:
var:定义循环变量
begin:变量的起始值
end:变量的结束值
区间为[begin, end] 左闭右闭
step:步长,默认为1
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>titletitle>
head>
<body>
<c:forEach var="i" begin="1" end="10">
${i }
c:forEach>
body>
html>
访问后:
输出1-10;
输出数组:
items:要遍历的数组
var:将items中的每个变量赋值给var
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>titletitle>
head>
<body>
<%
String[] strs = {"one","two","three","four"};
request.setAttribute("strs", strs);
%>
<c:forEach items="${strs }" var="str">
${str }<br/>
c:forEach>
body>
html>
变量 strs 数组,相当于:
for (String str : strs){
System.out.println(str);
}
输出结果:
循环状态:
items:遍历的数组
var:代表数组中单个值的变量
varStatus:循环状态变量
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>titletitle>
head>
<body>
<c:forEach var="str" items="${strs }" varStatus="vs">
${vs.current }
${vs.count }
${vs.index }
${vs.first }
${vs.last }<br/>
c:forEach>
body>
html>
输出结果:
fmt库:
格式化库
标签:
value:Date类型的数据
pattern:格式化指定模板,"yyyy-MM-dd"等
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>titletitle>
head>
<body>
<%
Date date = new Date();
pageContext.setAttribute("d", date);
%>
<fmt:formatDate value="${d }" pattern="yyyy-MM-dd HH:mm:ss"/>
body>
html>
输出:
标签:
value:要格式化的数据
pattern:格式化的模板
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>titletitle>
head>
<body>
<%
double d1 = 3.5891;
double d2 = 5.42623;
pageContext.setAttribute("d1", d1);
pageContext.setAttribute("d2", d2);
%>
<h1>formatNumberh1>
<fmt:formatNumber value="${d1 }" pattern="0.00"/><br/>
<fmt:formatNumber value="${d2 }" pattern="#.##"/>
body>
html>
输出结果: