一、Servlet和JSP技术概述

注:该系列笔记是用于我在 《Servlet 与 JSP 核心编程》这本书中的学习笔记,无其他意思,侵权请联系2082045221@qq.com删除。

​ 第一章内容较少,所以暂时有用的笔记也不多。

1.1、Servlet 的功用:

​ Servlet 是运行在 Web 服务器或应用服务器上的 Java 程序,它是一个,负责连接来自 Web 浏览器或其他 HTTP 客户程序的请求和 HTTP 服务器上的数据库或应用程序。Servlet 的工作是执行下面的任务,如图 1.1 所示:

在这里插入图片描述

  1. 读取客户发送的显式数据。

    最终用户一般在网页的 HTML 表单中输入的这些数据。然而,数据还有可能来自于 Applet 或定制的 HTTP 客户程序。

  2. 读取由浏览器发送的隐式请求数据。

    图 1.1 中显示了一条从客户端到 Web 服务器(Servlet 和 JSP 所在的层)的单箭头,但实际上从客户端传送到 Web 服务器的数据有两种,它们分别为用户在表单中输入的显式数据,以及后台的 HTTP 信息。两种数据都很重要。HTTP 信息包括 Cookie、浏览器所能识别的媒体类型和压缩模式等。

  3. 生成结果。

    这个过程可能需要访问数据库、执行 RMI 或 EJB 调用 、调用 Web 服务,或者直接计算得出对应的响应。实际的数据可能存储在关系型数据库中。该数据库可能不理解 HTTP ,或者不能返回 HTML 形式的结果,所以 Web 浏览器不能直接与数据库进行会话。及时能够做到这一点,为了安全,也不希望让它这么做。对于大多数其他应用程序,也存在类似的问题。因此,需要 Web 中间层从 HTTP流中提取输入数据,与应用程序会话,并将结果嵌入到文档中。

  4. 向客户发送显式数据(即文档)。

    这个文档可以用各种发送,包括文本(HTML 或 XML),二进制(GIF 图),甚至可以是建立在其他底层格式,如 gzip。但是,到目前为止,HTML 是最常用的格式,故而 Servlet 和 JSP 的重要任务之一就是将结果包装到 HTML 中。

  5. 发送隐式的 HTTP 响应数据。

    图 1.1 中显示了一条从 Web 中间层(Servlet 或 JSP 页面)到客户端的单箭头。但是,实际发送的数据有两种:文档本身,以及后台的 HTTP 信息。同样,两种数据对开发来说都是至关重要的。HTTP 响应数据的发送过程涉及告知浏览器或其他客户程序所返回文档的类型(例如 HTML),是指 Cookie 和缓存参数,以及其他类似的任务。

1.2、动态构建网页的原因:

​ 实时构建网页的理由:

  • 网页基于客户发送的数据。
  • 网页由频繁改变的数据导出。
  • 网页中使用了来自公司数据库或其他服务器端数据源的信息。

​ 理论上讲,Servlet 并非只用于处理 HTTP 请求的 Web 服务器或应用服务器,它同样可以用于其他类型的服务器。而且,用于会话启动协议(Session Initiation Protocol, SIP)服务器的 Servlet API 最近已经被标准化。但是在实践中,Servlet 的这种用法尚不流行,所以以下都只说 HTTP Servlet 。

1.3、Servlet 代码初探:

​ 现在,先快速地观察一个简单的 Servlet ,以对它的复杂程度有一个基本的了解。

​ 首先,给一个简单的 Servlet 代码,它向客户端输出了一个简单的 HTML 页面,不过需要注意以下几点:

  • 它是常规的 Java 代码。
  • 它有不熟悉的重要语句。
  • 它对标准的类(HttpServlet)进行了扩展。
  • 它覆盖(override)了doGet方法。
package com.firstweb.study01;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        String docType =
                "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0" +
                        "Transitional//EN\">\n";
        out.println(docType +
                "<HTML>\n" +
                "<HEAD><TITLE>Hello</TITLE><HEAD>\n" +
                "<BODY BGCOLOR=\"#FDF5E6\">\n" +
                "<H1>Hello</H1>\n" +
                "</BODY></HTML>");
    }
}

​ 输出结果如下:

在这里插入图片描述

1.4、JSP 的作用:

​ 为了简化起见,某种程度上,可以将 Servlet 看作是含有 HTML 的 Java 程序:将 JSP 看作是含有 Java 代码的 HTML 页面。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ClickHouse架构概览 —— Clickhouse 架构篇(一)

文章目录 前言Clickhouse 架构简介Clickhouse 的核心抽象列和字段数据类型块表 Clickhouse 的运作过程数据插入过程数据查询过程数据更新和删除过程 前言 本文介绍了ClickHouse的整体架构&#xff0c;并对ClickHouse中的一些重要的抽象对象进行了分析。然后此基础上&#xff0…

【面试】PWM(脉冲宽度调制)相关问题 ——长期更新

1、PWM调节原理 答&#xff1a;通过改变信号的高电平和低电平的持续时间比例来控制输出信号的平均功率或电压。 2、PWM占空比定义 答&#xff1a;在一个脉冲周期内&#xff0c;高电平的时间占整个周期时间的比例。 3、PWM波形的周期和调节精度由谁决定 答&#xff1a;当计数…

防止CSRF攻击

防止CSRF攻击 跨站点请求伪造&#xff08;Cross-Site Request Forgery&#xff0c;简称CSRF&#xff09;是一种常见的网络攻击类型。当用户在受信任的站点上通过身份验证后&#xff0c;访问攻击者精心准备的恶意网站、电子邮件、博客、即时消息或程序时&#xff0c;可能会导致…

软考 系统架构设计师系列知识点之SOME/IP与DDS(1)

本文内容参考&#xff1a; 车载以太网 - SOME/IP简介_someip-CSDN博客 https://zhuanlan.zhihu.com/p/369422441 什么是SOME/IP?_someip-CSDN博客 SOME/IP 详解系列&#xff08;1&#xff09;—— 概述_some ip-CSDN博客 深入浅出SOME/IP协议&#xff1a;基本概念和原理-…

Node.js笔记(万字总结)

目录 前言 1.node介绍与使用 1.1 Node介绍 1.2 node.js的优势 1.3 node的安装 1.4 检验是否成功安装 1.5 第一个应用 1.5.1 服务器代码 server.js 1.5.2 完整代码 1.5.3 运行 1.5.4 测试 2.获取参数 3.模块系统 1.模块介绍 2.xiaoyu.js 3.xiaoyu.js完整代码 4…

单兵组网设备+指挥中心:集群系统技术详解

一、单兵设备功能特点 单兵组网设备是现代通信技术的重要成果&#xff0c;旨在为单个作战或工作单元提供高效的通信和数据传输能力。其主要功能特点包括&#xff1a; 1. 便携性&#xff1a;设备轻巧&#xff0c;便于单兵携带和使用&#xff0c;适应各种复杂环境。 2. 通信能…

Python爬虫实战:利用代理IP获取电商数据

文章目录 1.电商数据介绍2.爬取目标3.代理IP推荐4.准备工作4.1 模块安装4.2 代理IP获取 5.爬虫代码实战5.1分析网页5.1.1 获取cookie5.1.2 关键词分析5.1.3 翻页分析5.1.4 数据获取分析 5.2 发送请求5.3 提取数据5.4 保存数据5.5 完整源码5.6 数据分析六、总结 1.电商数据介绍 …

海山数据库(He3DB)代理ProxySQL使用详解:(二)功能实测

读写分离实测 ProxySQL官方demo演示了三种读写分离的方式&#xff1a;使用不同的端口进行读写分离、使用正则表达式进行通用的读写分离、使用正则和digest进行更智能的读写分离。最后一种是针对特定业务进行的优化调整&#xff0c;也可将其归结为第二种方式&#xff0c;下边分…

紫光展锐突破创新终端品类,搭载展锐芯的全球首款二合一5G云电脑正式发布

近日&#xff0c;搭载紫光展锐5G芯片T760的中兴云电脑逍遥系列正式发布&#xff0c;亮点&#xff1a; 全球首款二合一5G云电脑&#xff0c;支持本地/云端双模式&#xff0c;一键切换&#xff0c;用户可同时享有Android平板和Windows云电脑两种形态&#xff1b;支持5G蜂窝网络&…

【OceanBase诊断调优】—— 排查 IO 问题的方法

本文主要介绍 OceanBase 数据库 V4.x 版本中排查 IO 问题的方法以及 IO 相关的日志和视图。 IO 相关问题 -4013 内存爆、IoControl 模块内存泄漏 目前 IO 内存爆可能的原因如下&#xff0c;及相应的排查方法。 其他模块使用 IO 内存后未释放导致泄漏。 日志分析。 通过关键词…

视频批量剪辑神器:一键合并多个视频,轻松添加音频,高效创作无极限!

视频已经成为我们生活中不可或缺的一部分。无论是工作汇报、生活记录&#xff0c;还是创意表达&#xff0c;视频都扮演着至关重要的角色。然而&#xff0c;对于很多非专业剪辑师来说&#xff0c;视频剪辑却是一项既繁琐又耗时的工作。别担心&#xff0c;今天我要给大家介绍一款…

全球AI新闻速递527

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

Mysql中的慢查询

Mysql慢查询的一些sql命令 慢查询的默认事件为10秒 #注意&#xff1a;慢查询一般是在调试阶段开启的&#xff0c;在开发阶段中一般不会开启&#xff0c;会对效率产生延误 #查询慢查询是否开启 show variables like %general%; #慢查询时间设置 show variables like long_query…

酷开科技相伴童年 | 酷开系统六一特辑:亲子共赏,启迪成长

六一儿童节&#xff0c;属于每个茁壮成长的孩子&#xff0c;也属于每个童心未泯的“少年”。《小王子》里说&#xff0c;使生活如此美丽的是我们藏起来的真诚和童心。马上就到六一儿童节了&#xff0c;就让我们用温柔而富有童真的笔触&#xff0c;唤醒那份沉睡已久的童心吧。 在…

NVIDIA Orin/Jetson 平台+数字同轴GMSL 车载AI视觉方案,应用于车载,机器人等领域

专注于成像和视觉技术于近期正式发布了可适配NVIDIA DRIVE AGX Orin平台的一系列摄像头产品&#xff0c;该产品是自主开发的数字同轴GMSL2摄像头模组&#xff0c;可满足智能汽车的高质量成像需求。 目前&#xff0c;推出可适配于NVIDIA DRIVE AGX Orin平台的摄像头产品一共有11…

微软改进WSL子系统 新版将支持镜像宿主机网络接口及使用外部DNS

Windows SubSystem for Linux (即 WSL) 是微软在 Windows 10/11 中开发的子系统功能&#xff0c;该功能允许用户在 Windows 上安装 Linux 系统和相关环境&#xff0c;对开发者来说可以构建 Linux 开发环境进行工作。不过 WSL 系统在功能上也有不少缺点&#xff0c;典型的就是默…

docker安装Elasticsearch(ES)详细教程

使用Docker来安装Elasticsearch&#xff08;简称ES&#xff09;的详细教程如下&#xff1a; 1. 前提条件 确保你的系统已经安装了Docker&#xff0c;并且Docker服务正在运行。如果你使用的是Windows系统&#xff0c;还需要确保已经启用了Hyper-V和容器功能。 2. 拉取Elastic…

Python-opencv通过距离变换提取图像骨骼

文章目录 距离变换distanceTransform函数 距离变换 如果把二值图像理解成地形&#xff0c;黑色表示海洋&#xff0c;白色表示陆地&#xff0c;那么陆地上任意一点&#xff0c;到海洋都有一个最近的距离&#xff0c;如下图所示&#xff0c;对于左侧二值图像来说&#xff0c;【d…

工程技术SCI期刊,中科院4区,收稿范围非常广泛,审稿快易录用!

一、期刊名称 CMES-Computer Modeling in Engineering & Sciences 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;工程技术 影响因子&#xff1a;2.4 中科院分区&#xff1a;4区 三、期刊征稿范围 本期刊在工程与科学的计算机建模领域发表具有合理永…

神经网络的工程基础(一)——利用PyTorch实现梯度下降法

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下&#xff1a;regression2chatgpt/ch06_optimizer/gradient_descent.ipynb 本文将讨论利用PyTorch实现…