随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。
posts - 398,comments - 0,views - 13万

简介:

1
2
3
4
5
apache的东西,依赖EL
使用jstl需要导入jstl1.2.jar四大库:
  > core:核心库,重点
  > fme:格式化:目期、数字  > sql:过时
  > xml:过时

 

 

core库:

1
2
3
4
core -->c标签!1. out和set
  * <c:out>:输出
    > value:可以是字符串常量,也可以是EL表达式
    > default:当要输出的内容为null时,会输出default指定的值    > escapeXml:默认值为true,表示转义!

<c:out>:

复制代码
<%@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>title</title>
</head>
<body>
<%
    request.setAttribute("code", "<script>alert('hello')</script>");
%>
${code }
<c:out value="${code }" escapeXml="true"/>
</body>
</html>
复制代码

 

发现首先输出是一个弹窗,此时并没有使用到<c:out>标签;

 

 

使用<c:out>标签后输出的是一个字符串,这里是因为在<c:out>标签里面有一个参数为escapeXml="true",会将字符串中的符号自动进行转义,如果改为escapeXml="false"那么就不会自动转义。

 

<c:set>标签:

1
<c:set var="" value="" scope="">  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>title</title>
</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的信息。

结果显示输出正常,那么可以验证属性设置成功了;

 

<c:remove>标签

1
2
3
<c:remove var="" scope=""/>
    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>title</title>
</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中的变量没有被删除,那么将<c:remove>中的scope参数指定为session再查看输出:

发现输出的是默认设置信息,说明code变量已经被删除;

如果取消scope参数查看输出:

同样输出的是默认设置信息,说明code变量已经被删除。

 

<c:url>标签;

1
2
3
<c:url value="" context="" scope="" var="">  把本该输出的value赋值给scope范围内的var(输出的内容会自动在value的值前面加上项目名)
  <c:param name="" value=""/>    给url设置为名name,值为value的参数(如果参数中有中文,会自动进行url编码)
</c: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>title</title>
</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,得以验证。

 

<c:if>标签:

1
2
<c:if test="${not empty one }">  test:boolean类型,true或false,为true则继续执行,false则结束
</c:if>
复制代码
<%@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>title</title>
</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属性 的变量;

使用<c:if>标签判断 one 是否为空,如果不为空则输出 one 变量的值;

成功输出。

需要注意的一点就是,上面的 test 属性中设置的 one 是以全域查找的方式,如果设置为 pageScope.one 获取其它的域那么表达式就为false了。

 

<c:choose>标签:

1
2
3
4
5
6
<c:choose>
    <c:when test="">    xxx  </c:when>
    <c:when test="">    xxx  </c:when>
                    。。。。
    <c:otherwise>    xxx  </c:otherwise>
</c:choose>

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>title</title>
</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>
复制代码

首先以空参的方式访问:

然后在访问地址上添加参数:

结果:

<c:choose>标签就相当于java语句中的if...else if...else...

 

<c:foreach>标签:

1
2
<c:forEach var="" begin="" end="" step="">
    var:定义循环变量    begin:变量的起始值    end:变量的结束值    区间为[begin, end] 左闭右闭    step:步长,默认为1</c:forEach>

 

复制代码
<%@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>title</title>
</head>
<body>
<c:forEach var="i" begin="1" end="10">
    ${i }
</c:forEach>
</body>
</html>
复制代码

访问后:

输出1-10;

 

输出数组:

1
<c:forEach items="" var="">  items:要遍历的数组  var:将items中的每个变量赋值给var</c:forEach>
复制代码
<%@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>title</title>
</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 数组,相当于:

 

1
2
3
for (String str : strs){
         System.out.println(str);             
}

 

输出结果:

循环状态:

1
2
<c:forEach var="" items="" varStatus="">
  items:遍历的数组  var:代表数组中单个值的变量  varStatus:循环状态变量</c:forEach>

 

复制代码
<%@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>title</title>
</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库:

格式化库

<fmt:formatDate>标签:

1
<fmt:formatDate value="" pattern=""/>  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>title</title>
</head>
<body>
<%
    Date date = new Date();
    pageContext.setAttribute("d", date);
%>

<fmt:formatDate value="${d }" pattern="yyyy-MM-dd HH:mm:ss"/>
</body>
</html>
复制代码

输出:

 <fmt:formatNumber>标签:

1
<fmt:formatNumber value="" pattern=""/>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>title</title>
</head>
<body>
<%
    double d1 = 3.5891;
    double d2 = 5.42623;
    pageContext.setAttribute("d1", d1);
    pageContext.setAttribute("d2", d2);
%>
<h1>formatNumber</h1>
<fmt:formatNumber value="${d1 }" pattern="0.00"/><br/>    <!--保留小数点后两位,多于两位则四舍五入,少于两位用零补足  -->
<fmt:formatNumber value="${d2 }" pattern="#.##"/>    <!-- 最多显示小数点后两位,多于两位则四舍五入,少于两位不会用零补足,仅显示现有的数字 -->

</body>
</html>
复制代码

输出结果:

 

posted on   时间完全不够用啊  阅读(187)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示