JSP标签&JSTL标签&EL表达式

xml 复制代码
        <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开发的常用对象
java 复制代码
<input type="text" name="username" value="${param.username}">
java 复制代码
<form action="coreif.jsp" method="get">
    <%--
    EL表达式获取表单中的数据
    ${param.参数名}
    --%>
    <input type="text" name="username" value="${param.username}">
    <input type="submit" value="登录">
</form>

JSP标签

转发

java 复制代码
<jsp:forward page="jsptag2.jsp"></jsp:forward>

携带参数

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

  • 转发的时候默认携带参数进行请求
java 复制代码
<%--
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>
java 复制代码
<jsp:include page="jsptag2.jsp">
    <jsp:param name="name" value="root"/>
    <jsp:param name="passwd" value="root"/>
</jsp:include>

取出参数

jsptag2.jsp

java 复制代码
<%@ 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

java 复制代码
<%@ 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接受参数的时候还需要在网页中输入请求的参数

文件包含

java 复制代码
<jsp:include page="jsptag2.jsp"></jsp:include>

JSTL表达式

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

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

核心标签

JSTL标签库使用步骤

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

c:if

核心

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

coreif.jsp

java 复制代码
<%@ 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:if test="${param.username=='admin'}" var="isAdmin">
    <c:out value="管理员登陆成功"/>
</c:if>
<c:if test="${not isAdmin}">
    <c:out value="普通用户"/>
</c:if>


</body>
</html>

c:set

定义一个变量score的值

java 复制代码
<c:set var="score" value="85"/>

c:choose

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

java 复制代码
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
  ArrayList<Object>  people = new ArrayList<>();
  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:forEach var="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 (int i = 0; i < 2; i++) {}
%>
--%>


</body>
</html>

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

相关推荐
badhope4 小时前
Mobile-Skills:移动端技能可视化的创新实践
开发语言·人工智能·git·智能手机·github
码云数智-园园6 小时前
微服务架构下的分布式事务:在一致性与可用性之间寻找平衡
开发语言
C++ 老炮儿的技术栈6 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
hz_zhangrl6 小时前
CCF-GESP 等级考试 2026年3月认证C++一级真题解析
开发语言·c++·gesp·gesp2026年3月·gespc++一级
大阿明6 小时前
Spring Boot(快速上手)
java·spring boot·后端
Liu628886 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
bearpping6 小时前
Java进阶,时间与日期,包装类,正则表达式
java
IT猿手6 小时前
基于控制障碍函数的多无人机编队动态避障控制方法研究,MATLAB代码
开发语言·matlab·无人机·openclaw·多无人机动态避障路径规划·无人机编队
邵奈一6 小时前
清明纪念·时光信笺——项目运行指南
java·实战·项目
AI科技星6 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘