综合案例
条件标签:if choose
<c:set var="num1" value="1"></c:set> <c:set var="num2" value="2"></c:set> <c:if test="${num1>num2}">ok</c:if> <c:if test="${num2>num1}">not ok</c:if> <hr/> <c:choose> <c:when test="${num1>num2}">ok</c:when> <c:otherwise>fail</c:otherwise> </c:choose>
<c:forEach items="${num2}" var="str" begin="2" end="4">
</c:forEach>
运行结果为上图所示
还有forEach操作,其中items里面放的是获取的数组,var是代替的方式,begin是开始的位置,end是结束的地方
在forEach里面还有step这个是你读取数据的方法
还有varStatus这个可以读取.这个数据的信息
比如.index(从0开始的下标)
.count(从1开始的下标)
还有格式化
<% request.setAttribute("data",new Date()); %> ${data}
直接输出日期
界面如上
将数据data进行格式化,
就变成这个样子了
jsp只负责展示servlet才负责处理
<html> <head> <title>Title</title> </head> <body> <% request.setAttribute("data",new Date()); %> <fmt:formatDate value="${data}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate> <fmt:formatNumber value="3417.347814" maxIntegerDigits="2" maxFractionDigits="2"></fmt:formatNumber> </body> </html>
其中formatNumber是指取数字int开头的是取前几位数,fract取的是后几位的数
函数标签库:
<% request.setAttribute("info","Java,C"); %> ${fn:contains(info, "Python")}<br/> ${fn:startsWith(info, "Java")}<br/> ${fn:endsWith(info, "C")}<br/>
这一串代码是判断操作
这就是全部的
找到了之前读不到的原因,我将这个url写错了,缺少了包的位置,所以之前找不到
同样之前还没有将数据存到req里面
以此为戒
同样这一串代码输出的是数组里面全部的数据
使值在用户界面展示为中文不会出现乱码
req.setCharacterEncoding("UTF-8");
remove移除操作
<input readonly>这就可以让该方法不可被修改
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决