我爱Java系列---【EL和JSTL】
一、EL表达式
作用:主要就是用来代替JSP中的 <%= %> 这个标签的,他可以简单的用于输出语句
1.输出四大域对象中的内容 ${key} 这样就可以全域查找到四大域对象中的key变量 如果key是一个对象的话,我们希望获取这个对象里面的某个get方法的返回值,我们只需要key.key1 key1就是getKey1()这个方法的返回值。
<!-- 域对象获取值 -->
<%=application.getAttribute("sc_key")%>
<%=session.getAttribute("ss_key")%>
<%=request.getAttribute("req_key")%>
<!-- el 的取值方式 -->
{sessionScope.ss_key}
${requestScope.req_key}
<!-- el 的简化方式 ,只写key ,没有对象 -->
${sc_key}
{req_key}
<div>
{userMap['u.1']} <%-- 通用--%>//加单引号的作用:防止出现{userMap.u1.name} <%-- 简单 --%>
${userMap['u1'].age} <%-- 通用--%>
</div>
2.精确的四大域对象查找
${pageScope.key}
${requestScope.key}
${sessionScope.key}
${applicationScope.key}
3.其他7个内置对象
- param
- paramValue
- header
- headerValue
- cookie
- pageContext 他可以获取其他所有的10个对象,因为它里面有其他十个对象的get方法。
<!-- 在当前jsp页面引入header.jsp -->
<jsp:include page="/header.jsp"></jsp:include>
<!-- 在当前jsp页面引入footer.jsp -->
<jsp:include page="/footer.jsp"></jsp:include>
二、JSTL
JSTL是EL的扩展,因为EL只是进行输出而已,但是有一些判断,遍历等等,这些操作就是JSTL。他需要引入jstl.jar 他有四大库,但是常用的只有两个一个是core另外一个就是formate标签库注意导入的时候uri是jsp/core 或者 jsp/formate。
使用之前先安装JSTL标签:
jar包百度云链接:
链接:https://pan.baidu.com/s/1IfbXVlofkpYE869Unn12Vw
提取码:d4is
jstl标签的安装步骤:
1.core标签库(c标签)
- out 输出标签 value就是要输出的变量
- set 设置某个变量的值 var变量名 value变量值
- url url格式化的标签 value 自动添加上项目名 里面如果加param标签那么就可以传递参数 name/value
- remove 删除域变量 var变量名 scope域范围,不写的话删除全域的对象中的此值
- if if语句 test 判断的条件 ${not empty key} 如果key不是空
- forEach
- 计数方式 var循环变量 begin循环变量从几开始 end到几结束 step设置步长
- 用来遍历 items需要迭代的变量 var每一次迭代的变量
- choose/when 多分支
<c:choose> <c:when test></c:when> <c:when test></c:when> <c:when test></c:when> <c:when test></c:when> </c:choose>
if if语句 test 判断的条件 ${not empty key} 如果key不是空
<div>
<!-- 获取 num 值 , 判断并显示 内容 -->
<c:if test="${num%2==0}">
<font color="green"> 韭菜 </font>
</c:if>
<c:if test="${num%2!=0}">
<font color="red"> 苹果 </font>
</c:if>
</div>
普通for循环:计数方式 var循环变量 begin循环变量从几开始 end到几结束 step设置步长
<div>
<!-- 遍历 num 值 -->
<c:forEach var="i" begin="0" end="{i} <br>
</c:forEach>
</div>
增强for:用来遍历 items需要迭代的变量 var每一次迭代的变量
<div>
<!-- 遍历 集合 值 <String> -->
<c:forEach var="s" items="{s} <br>
</c:forEach>
<%--<!-- 遍历 集合 值 <User> -->--%>
<%--<c:forEach var="u" items="{u.name} <br>--%>
<%--</c:forEach>--%>
<hr />
<!-- 遍历 集合 值 <User> ,加入 序号 -->
<c:forEach var="u" items="{vs.count} -- ${u.name} <br>
</c:forEach>
</div>
2.formate标签库
- formateDate value需要格式化的变量 pattern yyyy-MM-dd HH:mm:ss
- formateNumber value变量 pattern 0.00 需要小数点两位 四舍五入
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?