当前位置:网站首页>JSP 标准标签库(JSTL)[通俗易懂]
JSP 标准标签库(JSTL)[通俗易懂]
2022-08-04 16:54:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
产生原因
JSTL操作符
- el表达式的取值默认顺序: pageScope requestScope sessionScope applicationScope
- 结构:采用.导航,也称为存取器 ${ user.name} ${ user.class.name} 、输出map ${mapValue.key1} 、输出数组 ${strArray[1]} 、输出list ${list[1].name}
- el表达式的运算 ${1+2}= 3 ${10/5}= 2.0 ${10%3}= 1 ${10 div 2}= 5.0 ${10 mod 4}= 2
- el表达式对应的运算符
名称 | 符号 | 对应字段 |
---|---|---|
等于 | == | eq |
不等于 | != | ne |
大于 | > | gt |
小于 | < | lt |
大于等于 | >= | ge |
小于等于 | <= | le |
与 | && | or |
或 | II | and |
非 | ! | not |
加 | + | |
减 | – | |
乘 | * | |
除以 | / | div |
求莫 | % | mod |
- el表达式判断是否为空
jsp | JSTL |
---|---|
request.setAttribute(“value1”,null) | ${empty requestScope.value1} = true |
request.setAttribute(“value2”,””) | ${empty requestScope.value1} = true |
request.setAttribute(“value3”,new ArrayList()) | ${empty requestScope.value1} = true |
request.setAttribute(“value4”,“i love you”) | ${empty requestScope.value1} = false |
request.setAttribute(“value4”,“i love you”) | ${!empty requestScope.value1} = true |
- jar及配置
web.xml
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.4">
大于等于2.4 方可支持jstl ,先引入 standard.jar 和 jstl.jar jstl标签的用法 在页面引入 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
输出标签 ———–
<c:out value="ppp" /> 输出 ppp
<c:out value="null" default="ddd"/> 输出 ddd 可以设置默认值
<c:out value="<font color="red">kkk</font>" escapeXml="false"/> 输出 红色的kkk 默认的escapeXml为true
赋值标签 ———–
<c:set value="123" var="jj" scope="session" /> 此时有个名为jj,值为123的session ,默认的scope为page
${jj} 在页面打印出123
<c:remove var="jj" /> 将其删除,可以指定scope,默认为page
逻辑标签 ———–
<c:if test="?" /> ?:代表条件 可以用el表达式
<c:choose>
<c:when test="?">
...... 相当于 if...else... c:when 可以有多个,相当于else if
</c:when>
<otherwise>
......
</otherwise>
</choose>
循环控制标签 ———–
<c:forEach items="${list}" var="u" > ${list}是一个集合
${u.name}
</c:forEach>
<c:forEach items="${list}" var="u" varStatu="ss">
<c:choose>
<c:when test="u.age % 2 == 0">
<tr bgColor="red"> 如果集合中的数字是偶数,则当行为红色
</c:when>
<otherwise>
<tr>
</otherwise>
</choose>
</c:forEach>
<c:forEach items="${list}" var="u" begin="2" end="8" step="2"> 输出下表(从0开始)为2到8的元素,每次递增2
${u.name} 将输出u[2].name u[4].name u[6].name u[8].name
</c:forEach>
Map m = new Map();
m.put("k1","v1");
m.put("k2","v2");
request.setAttribute("mapValue",m);
<c:forEach items="mapValue" var="ma">
${ma.key} = ${ma.value} 输出: k1=v1 k2=v2
</c:forEach>
间隔符控制标签————-
request.setAttribute("str","1,2,3,4,5");
<c:forTokens items="str" delims="," var="de">
${de} 输出 12345
</c:forTokens>
捕获异常标签 ———-
<c:catch var="info">
<%
Integer.parseInt("sdfsdf");
%>
</c:catch>
${info} 输出:异常信息
导入页面标签 ———–
<c:import url="http://www.baidu.com" /> 相当于include
链接标签 ————
<c:url value="http://www.baidu.com" var="v"/>
<c:param name="name" value="jack" />
<c:param name="age" value="20" />
</url>
${v} 输出 http://www.baidu.com?name=jack&age=20
重定向标签 ————
<c:redirect context="/company" url="/index.jsp"> 定位到名叫company的项目下的index.jsp页面
使用JSTL:
引入JSTL的相关的jar包.
在页面中引入标签库.<%@ taglib uri=”” prefix=””%>
jstl标签
<body>
<h1>jstl标签</h1>
<c:set var="name" value="张三" scope="page"></c:set>
${name }
<!-- 默认输出北京,但是如果有第一行则输出value中的上海 -->
<c:set var="city" value="上海" scope="page"></c:set>
<c:out value="${city }" default="北京"></c:out>
<c:out value="<h1>标题一</h1>" escapeXml="false"></c:out>
<c:set var="n1" value="10" scope="page"></c:set>
<c:set var="n2" value="20" scope="page"></c:set>
<c:if test="${n1<n2 }" var="flag" scope="page">
n1小于n2!
</c:if>
<c:if test="${flag }">
n1小于n2!
</c:if>
<br/>
<c:set var="n1" value="30" scope="page"></c:set>
<c:set var="n2" value="20" scope="page"></c:set>
<c:if test="${n1>=n2 }" var="flag" scope="page">
n1大于等于n2!
</c:if>
<c:if test="${flag }">
n1大于等于n2!
</c:if>
</body>
JSTL常用标签:forEach
<body>
<h1>JSTL常用标签:forEach</h1>
<h3>遍历数组</h3>
<%
String[] arr = {"张三","李四","王五"};
pageContext.setAttribute("Arr", arr);
%>
<c:forEach var="i" items="${Arr }">
${i }
</c:forEach>
<h3>遍历List集合</h3>
<%
List<String> list = new ArrayList<String>();
list.add("孙六");
list.add("钱六");
list.add("赵七");
pageContext.setAttribute("List", list);
%>
<c:forEach var="i" items="${List }">
${i }
</c:forEach>
<h3>遍历Map集合</h3>
<%
Map<String,String> map = new HashMap<String,String>();
map.put("a", "钱一");
map.put("b", "刘二");
map.put("c", "朱三");
pageContext.setAttribute("Map", map);
%>
<c:forEach var="entry" items="${Map }">
${entry.key }-${entry.value }
</c:forEach>
<h3>遍历从1到10</h3>
<c:forEach var="i" begin="1" end="10">
${ i }
</c:forEach>
<h3>遍历从100到300,step=5</h3>
<!-- varStatus记录循环状态,这里隔三个标红一次 -->
<c:forEach var="i" begin="100" end="300" step="5" varStatus="status">
<c:if test="${status.count % 3 == 0 }">
<font color="red">${i }</font>
</c:if>
<c:if test="${status.count % 3 != 0 }">
${i }
</c:if>
</c:forEach>
</body>
JSTL提供的EL的函数库
(<%@ taglib uri=”http://java.sun.com/jsp/jstl/functions” prefix=”fn” %>)
<body>
<h1>JSTL提供的EL的函数库</h1>
<!-- 判断是否有Hello -->
${ fn:contains("Hello World","Hello") }
${ fn:length("Hello") }
${ fn:toLowerCase("ASDFG") }
<!-- 引号要么外面单引里面双引,要么里面单引外面双引 -->
<!-- c:forEach var="i" items="${ fn:split('a-c-b-d-r','-') }"-->
<c:forEach var="i" items="${ fn:split('a-c-b-d-r','-') }">
${i }
</c:forEach>
</body>
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106675.html原文链接:https://javaforall.cn
边栏推荐
猜你喜欢
【商家联盟】云平台—异业联盟,打造线上线下商业相结合的系统
移动CM101s_MV100_EMMC_M8233_强刷后全分区线刷固件包
湖北电信天邑TY1608_S905L3B_MT7668_卡刷固件包
Go语言gin框架返回json格式里,怎么把某个int属性转成string返回?
九联_UNT400G_S905L2_(联通)_线刷固件包
罗振宇折戟创业板/ B站回应HR称用户是Loser/ 腾讯罗技年内合推云游戏掌机...今日更多新鲜事在此...
Copycat CNN: Stealing Knowledge by Persuading Confession with Random Non-Labeled Data阅读心得
Mysql Explain
ping不通百度
海报 | 夏季高温,危化品安全风险的注意事项必须get!
随机推荐
移动百事通BesTV_R3300-L_S905L_8189_线刷固件包
湖北移动中兴B860AV2.1_S905L_线刷固件包
拼多多详情API接口深度解读
【小程序】实现发动态功能
御神楽的学习记录之基于FPGA的AHT10温湿度数据采集
Mobile magic box CM211-1_YS foundry _S905L3B_RTL8822C_wire brush firmware package
显示和设置系统日期时间的date命令示例
pygame的freetype模块
数据库内核面试中我不会的问题(2)
服装店如何利用好积分?
ping不通百度
Minecraft HMCL 使用认证服务器LittleSkin进行登录
从正负样本解耦看对比学习为何需要large batch size训练Ddcoupled Contrastive learning (DCT)
什么是会话劫持攻击以及如何防止会话劫持
太一集团宣布全资收购火币旗下社交产品火信
移动海信IP102H_905L3-B_线刷固件包
shell中当basename和dirname无法满足你的需求时你一定要想到的命令
【IDEA】idea配置
ES中同时使用should和must导致只有must生效解决方案
Hubei Mobile HG680-LV_S905L3B_wire brush firmware package