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 一行就够了

相关推荐
国强_dev17 小时前
Python 的“非直接原因”报错
开发语言·python
YMatrix 官方技术社区17 小时前
YMatrix 存储引擎解密:MARS3 存储引擎如何超越传统行存、列存实现“时序+分析“场景性能大幅提升?
开发语言·数据库·时序数据库·数据库架构·智慧工厂·存储引擎·ymatrix
玖疯子17 小时前
技术文章大纲:Bug悬案侦破大会
开发语言·ar
Chan1617 小时前
【 Java八股文面试 | JavaSE篇 】
java·jvm·spring boot·面试·java-ee·八股
wen__xvn17 小时前
代码随想录算法训练营DAY10第五章 栈与队列part01
java·前端·算法
独自破碎E18 小时前
解释一下NIO、BIO、AIO
java·开发语言·nio
草莓熊Lotso18 小时前
脉脉独家【AI创作者xAMA】|当豆包手机遭遇“全网封杀”:AI学会操作手机,我们的饭碗还保得住吗?
运维·开发语言·人工智能·智能手机·脉脉
@areok@18 小时前
C++opencv图片(mat)传入C#bitmap图片
开发语言·c++·opencv
散峰而望18 小时前
【Coze - AI Agent 开发平台】-- 你真的了解 Coze 吗
开发语言·人工智能·python·aigc·ai编程·ai写作
国强_dev18 小时前
在 Java 开发及其生态圈中“声东击西”的误导性错误
java·开发语言