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

相关推荐
无限码力2 小时前
小红书笔试真题 9.17 - 待发热度重排(C++/Py/Java /Js/Go)
java·小红书·小红书笔试真题·小红书技术岗笔试真题
郝学胜-神的一滴2 小时前
C++ Templates 01:拨开迷雾,读懂C++模板经典著作
开发语言·c++·程序人生·游戏·游戏引擎·软件构建
卓怡学长2 小时前
w194基于ssm新能源汽车充电系统小程序
java·小程序·intellij-idea
JAVA面经实录9172 小时前
Java高级后端 · 全套面试通关手册(MySQL)
java·mysql·面试
言乐63 小时前
Python实现关税自动计算模型
开发语言·python·django·virtualenv·pygame
朝朝辞暮i3 小时前
C++ 第 14 课:引用 &
开发语言·c++·算法
光依旧3 小时前
MCP实战手记(八):从“能跑“到“能上线“——无状态MCP Server的生产落地清单
java·人工智能·spring boot·架构·ai agent·mcp
梅雅达编程笔记3 小时前
04-Python CSV数据保存与翻页抓取
开发语言·爬虫·python·pandas·数据采集·csv
C++ 老炮儿的技术栈3 小时前
有符号变量与无符号变量的区别
服务器·开发语言·前端·数据结构·c++·算法·c
估值探索者3 小时前
【Python量化策略实战 #04】Donchian 通道假突破太多?用 ATR 阈值过滤跑通真实突破信号
开发语言·python·接口·api接口·数据api接口·股票数据api接口