news 2026/5/9 7:49:21

JSP标签JSTL标签EL表达式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JSP标签JSTL标签EL表达式
<dependency><!-- JSTL表达式的依赖 --><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId><version>1.2</version></dependency><!--standard标签库 --><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency>

EL表达式:${}

  • 获取数据
  • 执行运算
  • 获取web开发的常用对象
<input type="text"name="username"value="${param.username}">
<form action="coreif.jsp"method="get"><%--EL表达式获取表单中的数据 ${param.参数名}--%><input type="text"name="username"value="${param.username}"><input type="submit"value="登录"></form>

JSP标签

转发

<jsp:forward page="jsptag2.jsp"></jsp:forward>

携带参数

可以配合转发或者文件包含使用

  • 转发的时候默认携带参数进行请求
<%--http://localhost:8081/jsptag.jsp?name=root&passwd=root--%><jsp:forward page="jsptag2.jsp"><jsp:param name="name"value="root"/><jsp:param name="passwd"value="root"/></jsp:forward>
<jsp:include page="jsptag2.jsp"><jsp:param name="name"value="root"/><jsp:param name="passwd"value="root"/></jsp:include>

取出参数

jsptag2.jsp

<%@ page contentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</title></head><body><h1>这是jsptag2的页面</h1><%--取出参数--%>用户名:<%=request.getParameter("username")%>密码:<%=request.getParameter("password")%></body></html>

jsptag.jsp

<%@ page contentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</title></head><body><%--http://localhost:8081/jsptag.jsp?name=root&passwd=root--%><jsp:forward page="jsptag2.jsp"><jsp:param name="username"value="root"/><jsp:param name="password"value="root"/></jsp:forward></body></html>

jsptag.jsp页面可以看见转发的时候默认携带参数了,而jsptag2.jsp接受参数的时候还需要在网页中输入请求的参数

文件包含

<jsp:include page="jsptag2.jsp"></jsp:include>

JSTL表达式

JSTL标签库的使用是为了弥补HTML标签的不足;它自定义了许多的标签,可以供我们使用,标签的功能和Java代码一样!

  • 格式化标签
  • SQL标签
  • XML标签
  • 核心标签(掌握部分)

核心标签

JSTL标签库使用步骤

  • 引入对应的taglib
  • 使用其中的方法
  • 在Tomcat也需要引入jstl的包,否则会报错:JSTL解析错误

c:if

核心

<c:iftest="${param.username=='admin'}"var="isAdmin"><c:out value="管理员登陆成功"/></c:if><c:iftest="${not isAdmin}"><c:out value="普通用户"/></c:if>

coreif.jsp

<%@ page contentType="text/html;charset=UTF-8"language="java"%><%--引入JSTL核心标签库,我们才能使用JSTL标签 core--%><%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core"%><h4>if测试</h4><hr><form action="coreif.jsp"method="get"><%--EL表达式获取表单中的数据 ${param.参数名}--%><input type="text"name="username"value="${param.username}"><input type="submit"value="登录"></form><%--判断如果提交的用户名是管理员,则登陆成功<%if(request.getParameter("username").equals("admin")){out.print("登陆成功");}%>--%><c:iftest="${param.username=='admin'}"var="isAdmin"><c:out value="管理员登陆成功"/></c:if><c:iftest="${not isAdmin}"><c:out value="普通用户"/></c:if></body></html>

c:set

定义一个变量score的值

<c:setvar="score"value="85"/>

c:choose

<c:choose><c:when test="${score>=90}">优秀</c:when><c:when test="${score>=85}">良好</c:when><c:when test="${score>=80}">还行</c:when><c:when test="${score>=70}">一般</c:when><c:when test="${score>=60}">差生</c:when></c:choose>

c:forEach

<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core"%><%@ pageimport="java.util.ArrayList"%><%@ page contentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</title></head><body><%ArrayList<Object>people=newArrayList<>();people.add(0,"张三");people.add(1,"BB");people.add(2,"CC");people.add(3,"DD");people.add(4,"EE");request.setAttribute("list",people);%><%--var,每一次遍历出来的变量 items,遍历的集合 begin,哪里开始到哪里 end,到哪里 step,步长--%><c:forEachvar="people"items="${list}"><h1><c:out value="${people}"/></h1><br></c:forEach><hr><c:forEach begin="1"end="3"step="1"items="${list}"var="people"></c:forEach><%--等价于上面<%for(inti=0;i<2;i++){}%>--%></body></html>

如果是前端html弄出数据就要写50行代码,但是c:forEach 一行就够了

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 23:14:33

提示工程架构师:打造卓越提示缓存机制的设计技巧

提示工程架构师必看:打造高性能提示缓存机制的7个设计技巧 副标题:从原理到落地,解决LLM应用的延迟与成本痛点 摘要/引言 你是否遇到过这样的问题? 客服机器人每天处理1000条“如何重置密码”的查询,每条都要调用一次GPT-4,成本直线上升; 用户问“密码忘了怎么办”,…

作者头像 李华
网站建设 2026/5/3 10:49:12

AI大模型引发的产业变革:把握智能时代机遇的全面指南

AI大模型作为第25种通用技术&#xff0c;正通过知识获取新范式重构各行业。从深度学习到Transformer架构&#xff0c;AI大模型具备涌现性和泛化性两大核心特性&#xff0c;遵循规模定律。中美在语言模型、推理模型和多模态模型领域各有优势&#xff0c;中国产业生态蓬勃发展。企…

作者头像 李华
网站建设 2026/4/29 4:14:05

大模型应用开发避坑指南:从Demo到实战的6大性能陷阱与解决方案

大模型应用开发中&#xff0c;Demo环境与实战存在巨大差异&#xff0c;响应速度成为关键挑战。实战中复杂任务导致响应时间从秒级延长至分钟级&#xff0c;影响用户体验和系统稳定性。本文分享了分层处理、异步机制、结果缓存、资源监控、模型优化和渐进式响应等解决方案&#…

作者头像 李华
网站建设 2026/4/24 7:06:31

Nano Banana:AI图像生成与编辑新标杆

Nano Banana 详解&#xff08;2025最新&#xff09; Nano Banana是Google Gemini系列的原生多模态图像生成与编辑模型&#xff0c;正式名称为Gemini 2.5 Flash Image&#xff0c;8月26日2025公开上线&#xff0c;代号因社群传播而广为人知。核心优势是角色一致性、多图融合、自…

作者头像 李华
网站建设 2026/5/7 20:44:24

研究生必看!8款AI论文神器1天搞定全文,告别熬夜赶稿

如果你是面临延毕压力、苦苦熬夜赶 Deadline 的研究生&#xff0c;或是囊中羞涩却要面对高额知网查重费用的大学生&#xff0c;又或是被导师催稿催得焦头烂额、反复修改论文却始终达不到要求的科研人员&#xff0c;那么这篇文章你可千万不能错过&#xff01;在学术之路上&#…

作者头像 李华
网站建设 2026/5/3 2:06:09

MySQL禁止3表以上JOIN的原因详解

上述阿里巴巴的这个设计规范是为了解决在分布式数据库和大数据量场景下&#xff0c;JOIN操作容易引发的性能问题而制定的。 一、禁止三表以上JOIN的原因 1. 执行计划复杂度爆炸 3个表JOIN有6种可能的连接顺序4个表JOIN有24种可能的连接顺序随着表数量增加&#xff0c;优化器需要…

作者头像 李华