【JavaWeb10】服务器渲染技术 --- JSP

devtools/2025/2/12 12:41:38/

在这里插入图片描述

文章目录

    • 🌍一. JSP
      • ❄️1.JSP介绍
      • ❄️2.JSP 运行原理
      • ❄️3.page 指令(常用的)
      • ❄️ 4.JSP 三种常用脚本
        • 1.声明脚本
        • 2.表达式脚本
        • 3.代码脚本
      • ❄️5.JSP 内置对象
      • ❄️6.JSP 域对象
    • 🌍二. EL
      • ❄️1.EL 表达式介绍
      • ❄️2.EL 运算操作
      • ❄️3.EL 的 11 个隐含对象
    • 🌍三. JSTL
      • ❄️1.JSTL 标签库介绍
      • ❄️2. core 核心库


🙋‍♂️ 作者:@whisperrr.🙋‍♂️

👀 专栏:JavaWeb👀

💥 标题:【JavaWeb10】服务器渲染技术 — JSP💥

❣️ 寄语:比较是偷走幸福的小偷❣️

🌍一. JSP

❄️1.JSP介绍

1.为什么需要 JSP

程序员在开发过程中,发现 servlet 做界面非常不方便
在这里插入图片描述

引出 JSP 技术,JSP 公式
jsp=html+java 片段+标签+javascript+css

2.JSP 全称是 Java Server Pages,Java 的服务器页面
3.JSP 这门技术的最大的特点在于,写 JSP 就像在写 HTML

● 相比 html 而言,html 只能为用户提供静态数据,而 JSP 技术允许在页面中嵌套 java 代码,为用户提供动态数据
● 相比 Servlet 而言,Servlet 很难对数据进行排版,而 jsp 除了可以用 java 代码产 生动态数据的同时,也很容易对数据进行排版。

4.jsp 技术基于 Servlet, 你可以理解成 JSP 就是对 Servlet 的包装.
5.会使用 JSP 的程序员, 再使用 thymeleaf 是非常容易的事情, 几乎是无缝接轨.
6.创建 hspedu_jsp WEB 项目,并引入 jar
在这里插入图片描述
7. jsp 页面不能像 HTML 页面, 直接用浏览器运行。只能通过浏览器访问 Tomcat 来访问jsp 页面

❄️2.JSP 运行原理

1.jsp 页面本质是一个 Servlet 程序, 其性能是和 java 关联的, 只是长得丑.
2. 第 1 次访问 jsp 页面的时候。Tomcat 服务器会把 jsp 页面解析成为一个 java 源文件。并 且 对 它 进 行 编 译 成 为 .class 字 节 码 程 序 。
在这里插入图片描述
分析下 cal_jsp.java 的源码,可以看出本质就是 Servlet, 要看到源码和分析类图,需要加入 jasper.jar 这个包[在 tomcat/lib 下拷贝]
在这里插入图片描述
在这里插入图片描述

❄️3.page 指令(常用的)

在这里插入图片描述

  1. language 表示 jsp 翻译后是什么语言文件, 只支持 java
  2. contentType 表示 jsp 返回的数据类型,对应源码中 response.setContentType()参数值
  3. pageEncoding 属性 表示当前 jsp 页面文件本身的字符集
  4. import 属性 跟 java 源代码中一样。用于导包,导类

❄️ 4.JSP 三种常用脚本

1.声明脚本

1.声明脚本的格式是: <%! 声明 java 代码 %>

作用:定义 jsp 的需要属性、方法、静态代码块和内部类等

2.代码演示

javascript">
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jsp 声明脚本应用实例</title>
</head>
<body>
<h1>jsp 声明脚本应用实例</h1>
<%!
//声明属性 -> 这个属性就是该 jsp 文件生成的 servlet statement_jsp 类的
private Integer id;
private String name = "老韩同学";
private String job;
private static String company;
private Double sal;
//静态代码块
static {
company = "字节跳动";
}
//声明方法
public String getName() {
return name;
}
%>
<hr/>
</body>
</html>
2.表达式脚本

1.表达式脚本基本语法

  1. 表达式脚本的格式是:<%=表达式%>
  2. 表达式脚本的作用是:在 jsp 页面上输出数据
  3. 表达式脚本中的表达式不能以分号结束。

2.代码演示

javascript"><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jsp 表达式脚本</title>
</head>
<body>
<h1>jsp 表达式脚本应用实例</h1>
<%!
String name = "字节跳动";
%>
<hr/>
<h1>个人信息</h1>
用户名= <%=name%><br/>
工作是: <%="java 工程师"%><br/>
得到参数= <%=request.getParameter("sex")%>//null
</body>
</html>
3.代码脚本
  1. 代码脚本的语法是:<% java 代码%>
  2. 代码脚本的作用是:可以在 jsp 页面中,编写我们需要的功能(使用 java
  3. 可以由多个代码脚本块组合完成一个完整的 java 语句。
  4. 代码脚本还可以和表达式脚本一起组合使用,在 jsp 页面上输出数据

❄️5.JSP 内置对象

● 基本介绍 [讲解]
1、JSP 内置对象(已经创建好的对象, 直接使用 inbuild),是指 Tomcat 在翻译 jsp 页面成为Servlet 后,内部提供的九大对象,叫内置对象
2、内置对象,可以直接使用,不需要手动定义

● JSP 九大内置对象

  1. out 向客户端输出数据,out.println("");
  2. request 客户端的 http 请求
  3. response 响应对象
  4. session 会话对象
  5. application 对应 ServletContext
  6. pageContext jsp 页面的上下文,是一个域对象,可以 setAttribue(),作用范围只是本页面
  7. exception 异常对象 , getMessage()
  8. page 代表 jsp 这个实例本身
  9. config 对应 ServletConfig

● 对照 Servlet 来理解就比较轻松了. (学技术的思路: 只要去学某个类,建议熟练该类的继承关系)

一张图, 展示了 JSP 的父类 HttpJspBase 继承关系, 说明 JSP 内置对象的来源是 Servlet 和HttpJspPage
在这里插入图片描述

❄️6.JSP 域对象

JSP 四大域对象介绍[作用:存取数据]
1.pageContext (域对象,存放的数据只能在当前页面使用),【示意图】学习技术小技巧:/自己尝试去根据理解画出示意图
在这里插入图片描述
2. request (域对象,存放的数据在一次 request 请求有效), 【示意图】
在这里插入图片描述
3. session(域对象,存放的数据在一次会话有效), 【示意图】
在这里插入图片描述
4. application(域对象,存放的数据在整个 web 应用运行期间有效, 范围更大), 【示意图】
在这里插入图片描述
在这里插入图片描述
JSP 请求转发标签

javascript"><jsp:forward page="/bb.jsp"></jsp:forwar

🌍二. EL

❄️1.EL 表达式介绍

  1. EL 表达式全称:Expression Language,是表达式语言

  2. EL 表达式主要是代替 jsp 页面的表达式脚本<%=request.getAttribute("xx")%>

  3. EL 表达式输出数据的时,比 jsp 的表达式脚本简洁

  4. EL 表达式基本语法: ${key1}, 你可以理解就是一个语法糖

javascript"><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>el 表达式快速入门</title>
</head>
<body>
<% request.setAttribute("key", "key 值"); %>
jsp 表 达 式 脚 本 : <%=request.getAttribute("key") == null ? "" :
request.getAttribute("key")%><br/>
EL 表达式:${key}
</body>
</html>
  1. EL 表达式在输出 null 时,输出的是 “” 3. jsp 表达式脚本输出 null 的时,输出的是 “null” 字符串
  2. EL 表达式常用输出 Bean 的普通属性、 数组属性、List 集合属性和 map 集合属性

❄️2.EL 运算操作

  1. 基本语法语法:${ 运算表达式 }
    语法:${ 运算表达式 }
  2. 关系运算
    在这里插入图片描述
  3. 逻辑运算
    在这里插入图片描述
  4. 算数运算
    在这里插入图片描述

EL 的 empty 运算

empty 运算可以判断一个数据是否为空,如果为空,返回 true,否则返回 false
以下几种情况为空

● 值为 null
● 值为空串的时
● 值是 Object 类型数组,长度为零
● list 集合,元素个数为零
● map 集合,元素个数为零

❄️3.EL 的 11 个隐含对象

在这里插入图片描述
EL 四个特定域变量
在这里插入图片描述
pageContext 对象介绍
协议: ${ pageContext.request.scheme }
服务器 ip:${ pageContext.request.serverName }
服务器端口:${ pageContext.request.serverPort }
工程路径:${ pageContext.request.contextPath }
请求方法:${ pageContext.request.method }
客户端 ip 地址:${ pageContext.request.remoteHost }
会话 id :${ pageContext.session.id }

🌍三. JSTL

❄️1.JSTL 标签库介绍

  1. JSTL 标签库 是指 JSP Standard Tag Library JSP 标准标签库
  2. EL 表达式是为了替换 jsp 中的表达式脚本,JSTL 是为了替换代码脚本。这样 jsp 页面
    变得更佳简洁
  3. JSTL 由五个标签库组成
    在这里插入图片描述
  4. 使用 JSTL,需要导入相关的 jar 包
    在这里插入图片描述

代码演示

javascript"><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
韩顺平 Java 工程师
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSTL 快速入门</title>
</head>
<body>
<h1>JSTL 快速入门</h1>
<c:if test="${ 10 > 2 }">
<h1>10 > 2 为真</h1>
</c:if>
</body>
</html>

● taglib 引入标签,要放在行首
● 导入 jstl jar 包后,要重新发布 web 工程,否则不识别 jstl

❄️2. core 核心库

1.<c:set />

<c:set /> set 标签可以往域中保存数据

  1. 等价 域对象.setAttribute(key,value);
  2. scope 属性设置保存到哪个域
    page 表示 PageContext 域(默认值)
    request 表示 Request 域
    session 表示 Session 域
    application 表示 ServletContext 域
  3. var 属性设置 key 是什么
  4. value 属性设置值

2.<c:if />

<c:if test=“${ 10 > 2 }”>hello</c:if>

  1. if 标签用来做 if 判断。
  2. test 属性表示判断的条件(用 EL 表达式输出)

3.<c:choose> <c:when> <c:otherwise>标签

多路判断。跟 switch … case … default 非常接近

4.<c:forEach />标签

  1. 介绍: c:forEach 标签 用来遍历输出, 主要有 4 种形式
    ● 普通遍历输出 i 到 j
    ● 遍历数组
    ● 遍历 Map
    ● 遍历 List

items 表示遍历的集合
var 表示遍历到的数据
begin 表示遍历的开始索引值 ,从 0 开始计算
end 表示结束的索引值
step 属性表示遍历的步长值
varStatus 属性表示当前遍历到的数据的状态,可以得到 step,begin,end 等属性值


http://www.ppmy.cn/devtools/158206.html

相关文章

探索技术新边界:让 HTML 电子凭证与二维码、PDF 完美融合

朋友们&#xff01;在数字化浪潮滚滚向前的今天&#xff0c;电子凭证的应用越来越广泛。咱做开发的&#xff0c;经常会碰到这样的需求&#xff1a;要在 HTML 电子凭证模版的指定位置贴上二维码&#xff0c;然后把它生成 PDF 电子凭证文档。这事儿听起来复杂&#xff0c;但只要找…

CP AUTOSAR标准之HWTestManager(AUTOSAR_SWS_HWTestManager)(更新中……)

1 简介和功能概述 本规范描述了模块硬件测试管理启动和关闭(HTMSS)的概念、接口和配置。   HTMSS模块是AUTOSAR标准化基础软件架构服务层的基础软件模块,HTMSS模块应为应用程序SWC使用提供测试状态/结果。   该模块的目的是提供一个基础设施,用于在AUTOSAR标准软件平台内…

支持向量机(一)

支持向量机是典型的二分类模型&#xff0c;以其模型简单、实现简单、效果卓越而著称。 一元支持向量机 我们通过一条中间线根据特征对样本实现分类&#xff0c;很明显&#xff1a;两个支持样本的差别越大&#xff0c;两个支持样本的分类效果就越好。 二元支持向量机 在实际生…

Java Stream 全面解析

Java Stream 全面解析 Java 8 引入的 Stream API 提供了一种高效且声明式的方式来处理集合数据。Stream 允许你以函数式编程风格操作数据&#xff0c;支持并行处理&#xff0c;并且可以显著简化代码。下面我们将从 创建操作、中间操作 和 终端操作 三个方面进行全面深入的解析…

SSM-SpringBoot-总结

文章目录 一、基础功能1.1 属性绑定 ConfigurationProperties1.2 YAML 文件&#xff08;或者YML&#xff09;1.3 Spring 启动的配置和方式&#xff08;1&#xff09;分布式地启动程序&#xff08;2&#xff09;构建器启动【了解】 二、日志2.1 为什么要有日志2.2 日志记录&…

Zookeeper 作注册中心 和nacos 和eruka 有什么差异 ?基于什么理论选择?

目录 三者的差异 1. 设计定位与功能特性 2. 服务注册与发现机制 3. 可用性与容错性 4. 性能 选择依据 1. 业务场景 2. 可用性和一致性需求 3. 性能需求 三者的差异 1. 设计定位与功能特性 Zookeeper 设计定位:最初是为分布式应用提供协调服务的,本身并不是专门作为…

《图解设计模式》笔记(八)管理状态

十七、Observer模式&#xff1a;发送状态变化通知 Observer &#xff1a;“进行观察的人”&#xff0c;也就是“观察者”。 在 Observer模式中&#xff0c;当观察对象的状态发生变化时&#xff0c;会通知给观察者。 适用场景&#xff1a;根据对象状态进行相应处理. 示例程序…

EXCEL数据解析与加密处理方法

在 Excel 中&#xff0c;你可以通过以下步骤将字符串 h1,-109218;h10,-103431;h101,-102563;... 解析为两列数据&#xff08;一列为 h 变量&#xff0c;另一列为对应的数字&#xff09;&#xff1a; 步骤 1&#xff1a;准备数据 将字符串 h1,-109218;h10,-103431;h101,-102563…