入门JavaWeb之 JSP 语法、指令、内置对象和 JSTL 标签

news2024/11/19 10:36:41

导入 jar 包

搜索 jstl-api、standard

pom.xml 导入 jar 包

    <!-- Servlet 依赖 -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>

    <!-- JSP 依赖 -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.3</version>
      <scope>provided</scope>
    </dependency>

    <!-- JSTL 表达式的依赖 -->
    <dependency>
      <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>

JSP 表达式:

<%= 变量或表达式%>

将程序的输出,输出到客户端

<%-- JSP表达式
 作用:用来将程序的输出,输出到客户端
 <%= 变量或表达式%>
 --%>
<%= new java.util.Date()%>

JSP 脚本片段:

<%-- JSP脚本片段 --%>
<%
    int sum = 0;
    for(int i = 0;i <= 10;i++){
        sum+=i;
    }
    out.println("<h1>"+sum+"</h1>");
%>

在代码嵌入HTML元素:

<%-- 在代码嵌入HTML元素 --%>
<%
    for(int i = 0;i < 5;i++){
%>
    <p>Hello,world!</p>
<%
    }
%>

JSP 声明:

<%-- JSP声明 --%>
<%!
    static{
        System.out.println("test");
    }
    
    private int i = 0;
    
    public void test(){
        System.out.println("test");
    }
%> 

写入声明后会被编译到 JSP 生成的 Java 类中

其他的则写入 _jspService 方法中

JSP 注释不会在客户端显示(可以抓包获取),HTML 注释会显示在客户端

JSP 注释:<%-- 注释 --%>

HTML 注释:<!-- 注释 -->

JSP 指令:

因为被除数不能为 0,我们可以自定义一个 500 页面

<%
    int x = 0;
    int y = 1;
    System.out.println(y/x);
%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h1>500</h1>
<img src="img/1.png">
</body>
</html>

errorPage 获取路径

<%@ page errorPage="error/error.jsp" %>

还可以在 web.xml 写入依赖

  <error-page>
    <error-code>500</error-code>
    <location>/error/error.jsp</location>
  </error-page>

同理,还有

<%@ page isErrorPage="true" %>

<%@ page pageEncoding="UTF-8" %>

<%@ include file=" 路径 " %>,它有 JSP 标签写法,<jsp:include page="/路径"/>

前者在方法里

后者在类里

内置对象:

1. PageContext

2. Request

3. Response

4. Session

5. Application(ServletContext)

6. config(ServletConfig)

7. out

8. page

9. exception

EL 表达式,${ }

<%-- 内置对象 --%>
<%
    pageContext.setAttribute("name1","张三1");
    request.setAttribute("name2","张三2");
    session.setAttribute("name3","张三3");
    application.setAttribute("name4","张三4");
%>

<%
    //从pageContext中取出,通过寻找的方式获取
    String name1 = (String)pageContext.findAttribute("name1");
    String name2 = (String)pageContext.findAttribute("name2");
    String name3 = (String)pageContext.findAttribute("name3");
    String name4 = (String)pageContext.findAttribute("name4");
%>

<%-- 使用EL表达式输出 ${} --%>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>

pageContext.setAttribute(),保存的数据只在一个页面中有效

request.setAttribute(),保存的数据只在一次请求中有效,请求转发会携带这个数据

session.setAttribute(),保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器

application.setAttribute(),保存的数据只在服务器中有效,从打开服务器到关闭服务器

pageContext.forward(" 路径 "),访问页面

 还可以用 JSP 标签来实现

<jsp:forward page="/路径">
    <jsp:param name="age" value="1"></jsp:param>
</jsp:forward>

JSTL 标签库自定义了很多标签,可以弥补 HTML 标签的不足

JSTL 菜鸟教程

引入 JSTL 核心标签:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 <c:if>:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>

<form action="jstl.jsp" method="get">
    <%--
    EL表达式获取表单中的数据
    ${param.参数名}
    --%>
    <input type="text" name="username" value="${param.username}">
    <input type="submit" value="登录">
</form>

<%-- 判断提交的用户名是管理员,则登录成功 --%>
<c:if test="${param.username=='admin'}" var="isAdmin">
    <c:out value="管理员欢迎您!"/>
</c:if>

<%-- 自闭合标签 --%>
<c:out value="${isAdmin}"/>

</body>
</html>

效果如下:

 <c:choose>、<c:when>:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>

<%-- 定义一个变量 --%>
<c:set var="score" value="100"/>

<c:choose>
    <c:when test="${score>=60}">及格</c:when>
    <c:when test="${score<60}">不及格</c:when>
</c:choose>

</body>
</html>

 <c:forEach>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.util.ArrayList" %>
<html>
<body>

<%
    ArrayList<String> people = new ArrayList<>();
    people.add(0,"aa");
    people.add(1,"bb");
    people.add(2,"cc");
    people.add(3,"dd");
    request.setAttribute("list",people);
%>

<%--
var 每一次遍历出来的变量
items 要遍历的对象
--%>
<c:forEach var="people" items="${list}">
    <c:out value="${people}"/> <br>
</c:forEach>

<hr>

<c:forEach var="people" items="${list}" begin="1" end="3" step="2">
    <c:out value="${people}"/> <br>
</c:forEach>

</body>
</html>

效果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1867298.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VMamba: Visual State Space Model论文笔记

文章目录 VMamba: Visual State Space Model摘要引言相关工作Preliminaries方法网络结构2D-Selective-Scan for Vision Data(SS2D) VMamba: Visual State Space Model 论文地址: https://arxiv.org/abs/2401.10166 代码地址: https://github.com/MzeroMiko/VMamba 摘要 卷积神…

使用matlab的大坑,复数向量转置!!!!!变量区“转置变量“功能(共轭转置)、矩阵转置(默认也是共轭转置)、点转置

近期用verilog去做FFT相关的项目&#xff0c;需要用到matlab进行仿真然后和verilog出来的结果来做对比&#xff0c;然后计算误差。近期使用matlab犯了一个错误&#xff0c;极大的拖慢了项目进展&#xff0c;给我人都整emo了&#xff0c;因为怎么做仿真结果都不对&#xff0c;还…

matlab量子纠缠态以及量子门操作下的量子态

前言 今天我们来聊聊题外话&#xff0c;量子纠缠&#xff0c;在目前物理分支中&#xff0c;要说最深&#xff0c;最能改变人类对宇宙影响的莫过于量子力学了&#xff0c;假如我们可以人为的对两个粒子施加纠缠态&#xff0c;那么我们将可以足不出户的完成对外界的操控 简介 …

计算机网络:408考研|湖科大教书匠|原理参考模型II|学习笔记

系列目录 计算机网络总纲领 计算机网络特殊考点 计算机网络原理参考模型I 计算机网络原理参考模型II 目录 系列目录更新日志前言应用层(Application Layer)一、应用层概述二、客户/服务器方式和对等方式三、动态主机配置协议(DHCP, Dynamic Host Configuration Protocol)四、域…

音频概念_STFT_窗口函数

短时傅里叶变换 (Short-Time Fourier Transform, STFT) 是一种时频谱转换算法&#xff0c;它通过在时间上移动窗口函数并计算窗口内信号的频谱来获得信号在时间和频率上的信息。填充信号可以确保每个窗口都有足够的数据进行频谱计算&#xff0c;特别是在窗口函数的边缘。 窗口…

读AI新生:破解人机共存密码笔记13有益机器

1. 标准模型 1.1. 我们能控制一个从外太空来的超级智能实体的概率几乎为零 1.2. 随着根据标准模型设计的机器变得更加智能&#xff0c;以及它们的行动范围遍及全球&#xff0c;关闭机器这种方法越来越不可行 1.2.1. 机器将会追求它们自己的目标&#xff0c;无论目标错得多么…

通讯:单片机串口和电脑通讯

目录 1.串口输出数据到电脑 硬件部分 串口输出数据到电脑的软件软件部分&#xff1a; 相关问题&#xff1a; 2.单片机串口--485--485转USB--电脑 串口&#xff0c;芯片&#xff0c;转换器&#xff0c;设备之间的通讯的接线&#xff0c;都是要TX--RX, RX--TX 交叉连接。 单…

机器学习Python代码实战(二)分类算法:k-最近邻

一.k-最近邻算法步骤 1.选择适当的k值。它表示在预测新的数据点时要考虑的邻居数量。 2.计算距离。计算未知点与其他所有点之间的距离。常用的距离计算方法主要有欧氏距离&#xff0c;曼哈顿距离等。 3.选择邻居。在训练集中选择与要预测的数据点距离最近的k个邻居。 4.预测…

如何快速把一篇文章或企业介绍变为视频?

随着科技和数字化的不断发展&#xff0c;企业的营销手段也在不断变革。尤其对于产品宣传来说&#xff0c;用生动的视觉语言直观地展示产品特点和优势&#xff0c;能够彰显企业实力&#xff0c;让社会不同层面的人士对企业产生正面、良好的印象&#xff0c;从而建立对该企业的好…

Antivirus Zap Pro :苹果 mac 电脑全面的系统安全解决方案

Antivirus Zap Pro 是一个全面的系统安全解决方案&#xff0c;它可以扫描和删除 Mac 中的恶意软件和其他恶意软件&#xff0c;还可以检测 Mac 上已经存在的威胁或可疑文件&#xff0c;并保护您的 Mac 免遭日后的威胁&#xff0c;满足用户不同的 Mac 电脑杀毒需求&#xff0c;有…

【01BFS】2290. 到达角落需要移除障碍物的最小数目

本文涉及知识点 01BFS CBFS算法 图论知识汇总 LeetCode2290. 到达角落需要移除障碍物的最小数目 给你一个下标从 0 开始的二维整数数组 grid &#xff0c;数组大小为 m x n 。每个单元格都是两个值之一&#xff1a; 0 表示一个 空 单元格&#xff0c; 1 表示一个可以移除的…

聚观早报 | 小鹏MONA M03曝光;iPhone 16系列电池改进

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 6月25日消息 小鹏MONA M03曝光 iPhone 16系列电池改进 一加Ace 3 Pro三款配色 字节跳动与博通合作开发AI芯片 蚂…

GPT-5

欢迎来到 Papicatch的博客 文章目录 &#x1f349;技术突破预测 &#x1f348;算法进步 &#x1f348;理解力提升 &#x1f348;行业推动力 &#x1f349;人机协作的未来 &#x1f348;辅助决策 &#x1f348;增强创造力 &#x1f348;复杂任务中的角色 &#x1f348;人…

非极大值抑制算法(Non-Maximum Suppression,NMS)

https://tcnull.github.io/nms/ https://blog.csdn.net/weicao1990/article/details/103857298 目标检测中检测出了许多的候选框&#xff0c;候选框之间是有重叠的&#xff0c;NMS作用重叠的候选框只保留一个 算法&#xff1a; 将所有候选框放入到集和B从B中选出分数S最大的b…

Hadoop3:Yarn框架的三种调度算法

一、概述 目前&#xff0c;Hadoop作业调度器主要有三种&#xff1a;FIFO、容量&#xff08;Capacity Scheduler&#xff09;和公平&#xff08;Fair Scheduler&#xff09;。Apache Hadoop3.1.3默认的资源调度器是Capacity Scheduler。 CDH框架默认调度器是Fair Scheduler。 …

Http客户端-Feign 学习笔记

作者介绍&#xff1a;计算机专业研究生&#xff0c;现企业打工人&#xff0c;从事Java全栈开发 主要内容&#xff1a;技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流&#xff08;SCI论文两篇&#xff09; 上点关注下点赞 生活越过…

EVPN-VXLAN:如何在数据中心使用

移动设备的迅速普及、社交媒体和协作工具的使用不断增加&#xff0c;使得网络中的端点数量日益增多。这种端点的快速增长促使对更有效的分段策略的需求&#xff0c;以区分不同用户、设备和流量类型。EVPN-VXLAN通过在物理第3层底层网络建立第2层覆盖虚拟网络的隧道&#xff0c;…

VMware虚拟机安装CentOS7.9 Oracle 11.2.0.4 RAC+单节点RAC ADG

目录 一、参考资料 二、RAC环境配置清单 1.主机环境 2.共享存储 3.IP地址 4.虚拟机 三、系统参数配置 1. 配置网卡 1.1 配置NAT网卡 1.2 配置HostOnly网卡 2. 修改主机名 3. 配置/etc/hosts 4. 关闭防火墙 5. 关闭Selinux 6. 配置内核参数 7. 配置grid、oracle…

SSI 注入漏洞

0x00漏洞描述 SSI 英文是 Server Side Includes 的缩写&#xff0c;翻译成中文就是服务器端包含的意思。从技术角度上说&#xff0c;SSI 就是在 HTML 文件中&#xff0c;可以通过注入注释调用的命令或指针。SSI 具有强大的功能&#xff0c;只要使用一条简单的 SSI 命令就可以实…

Ubuntu挂载window的网络共享文件夹爱

1.进入win10创建一个用户smb密码也是smb 2.右键进入文件夹共享 3.进入Ubuntu安装支持cifs-utils sudo apt update sudo apt install cifs-utils 4.sudo mkdir /mnt/shared 5.挂载&#xff1a; sudo mount -t cifs -o usernamesm bpasswordsmb //172.16.11.37(windowsIP)/s…