搞懂Servlet(1)- 介绍

在这里插入图片描述

介绍Servlet

今天,我们都意识到创建动态网页的必要性。动态网页就是网页内容会随着时间变化,或者内容会根据请求参数的不同而变化。如果你使用java编程,很幸运的是有一种使用Java生成动态网页的方式-Java Servlet。但是,在这之前,我们先来理解服务端需要的扩展。

什么是Java Servlet

Java Servlet是指在Java-enabled的web服务器或应用服务器上运行的Java程序。它们用于处理来web服务器接收的请求,处理请求,产生响应,把响应返回给web服务器。

Java Servlet的特性

Java Servlet的特性包括:

  • 工作在服务端
  • 可以处理来自web服务器的复杂的请求

Java Servlet的架构

Java Servlet的架构可以用下面的图描述:
在这里插入图片描述

Java Servlets的执行

Java Servlets的执行通常包括6个步骤:

  1. 客户端把请求发送到web服务器。
  2. web服务器收到请求。
  3. web服务器把请求发送给对应的servlet。
  4. servlet处理请求,产生输出格式的响应。
  5. servlet把响应返回给web服务器。
  6. web服务器把响应返回给客户端,客户端把响应显示在网页中。

现在,让我们讨论下为什么需要服务端的扩展。

服务端的扩展

服务端的扩展只是用于生成动态网页的技术。实际上,为了给动态网页提供一个生产车间,动态网页需要一个容器或者web服务器。为了实现这种需求,各个web服务器提供商提出了API形式的解决方案。
这些API可以让我们写出可以和服务器一起工作的程序。同样,Java Servlet 也是Java Platform Enterprise Edition(制定使用Java创建动态网页技术的标准)的API组件之一。
Java Servlet并不是实现动态网页唯一的技术。Java Servlet类似于其它的web服务器扩展,例如Common Gateway Interface(CGI)和Hypertext Preprocessor(PHP)。可是,Java Servlet更受欢迎,因为它解决了CGI的一些限制,例如,低性能和低扩展性。

什么是CGI(Common Gateway Interface)

CGI实际上是一个外部的用任何语言比如C、C++编写的程序,负责处理客户端的请求,生成动态内容。
在CGI程序中,当客户端请求动态网页时,web服务器执行下面的操作:

  1. 它首先找到处理这个动态网页请求的CGI应用程序。
  2. 然后,新建一个进程用户处理这个请求。
  3. 在这个新进程中运行CGI程序,并传入请求的信息。
  4. 从CGI进程中获取响应数据。
  5. 销毁进程,准备HTTP响应,返回给客户端。
    在这里插入图片描述
    所以,使用CGI,服务器必须为每一个请求创建和销毁进程。很容易理解这种方式在处理小量用户请求时是没有问题的,但是,随着用户量的增加,服务器的工作负载会增加,相应的,处理请求的时间也会增加。

Java Servlet和CGI的区别

ServletCGI(Common Gateway Interface)
Servlets可移植,高效CGI不可移植
Servlets可以共享数据CGI不可共享数据
Servlets可以直接跟web服务器通信CGI不可以直接跟web服务器通信
Servlets轻量级CGI重量级
Servlets可以操作cookiesCGI不可以操作cookies

Servlets APIs

Servlets由2个包组成:

  • javax.servlet(基础)
  • javax.servlet.http(高级)
    包里包括的类:
组件类型
ServletInterfacejavax.servlet.*
ServletRequestInterfacejavax.servlet.*
ServletReponseInterfacejavax.servlet.*
GenericServletclassjavax.servlet.*
HttpServletclassjavax.servlet.http*
HttpServletRequestinterfacejavax.servlet.http*
HttpServletResponseinterfacejavax.servlet.http*
FilterInterfacejavax.servlet.*
ServletConfigInterfacejavax.servlet.*

Java Servlet 的有点

  • 由于Servlets不像CGI,为每一个请求开启一个进程,它运行的更快。
  • Servlets由Java编写,它是平台无关的。
  • Servlets是服务端的组件,它可以继承web服务器提供的安全保证。
  • Servlets由Java编写,它可以使用Java平台提供的基础设施,比如,JDBC访问数据库。

Servlet 容器

Servlet容器,也被称为Servlet引擎,是一套为Servlet搭建的运行时环境。简单来说,它是构建在Web服务器之上,管理着Servlet,处理Web客户端请求的系统。
Servlet容器提供的服务包括:

  • 网络服务:加载Servlet类。加载源可以是本地文件系统,远程文件系统,或者其它网络服务。容器提供网络服务包括请求和响应的发送。
  • 解码和编码MIME-based信息:提供编解码MIME-based信息。
  • 管理Servlet:管理Servlet的生命周期。
  • 资源管理:管理动态和静态资源,例如:HTML,Servlet,JSP页面。
  • 安全服务:提供资源访问的鉴权。
  • Session管理:维护Session。

总结

Java Servlet是处理业务逻辑和处理复杂网络请求的关键组件,帮助开发动态网站。下面是我们这篇文章讨论过的要点:

  • Java Servlets 致力于服务端程序的开发,处理动态内容,创建健壮和交互性的网站。
  • Servlets 使我们的web程序更加响应快速。因为,它不需要为每一个请求创建和销毁进程。

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

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

相关文章

Jetson orin scv3环境配置

记不清当时是怎么配置的环境了,难搞 python环境的安装: conda create -n scv3 python3.8安装torch 和torchvision 去这里找到jetpack版本对应的torch ,我的jetpack5.1.3,并且环境需要安装pytorch-lightning1.7.3,,对应的torch版本…

【web网页开发制作】Html+Css+Js游戏主题特效及轮播效果网页作业天涯明月刀(7页面附源码)

HTMLCSSJS游戏主题轮播效果 🍔涉及知识🥤写在前面✨特效展示特效1、轮播幻灯效果特效2和3、鼠标悬浮及点击效果 🍧一、网页主题🌳二、网页效果Page1、首页Page2、游戏简介Page3、新闻中心Page4、互动专区Page5、视听盛宴Page6、用…

ctfshow parse_url wp

第一关 这个parse_url函数就是解析URL并且进行拆分的 $url "https://www.example.com/path/to/page?param1value1&param2value2";$parsed_url parse_url($url);print_r($parsed_url); Array ([scheme] > https[host] > www.example.com[path] > /p…

【论文复刻】 堆叠柱状图变形

复刻了一下这篇论文里的fig4a:Impacts of COVID-19 and fiscal stimuli on global emissions and the Paris Agreement | Nature Climate Change 效果图:​ 主要步骤: 1. 数据准备:随机赋值 2. 数据处理:计算了一个…

机器学习中常用的几种距离——欧式、余弦等

目录 一、欧式距离(L2距离)二、曼哈顿距离(L1距离)三、汉明距离四、余弦相似度 一、欧式距离(L2距离) (1)二维空间的距离公式(三维空间的在这个基础上类推)&…

linux内核debug(二)在线调试内核kdb/kgdb工具使用及环境搭建

目录 一、引言 二、kgdb调试 ------>2.1、kgdb板端配置 ------------>2.1.1、添加编译内核参数 ------------>2.1.2、配置 ------>2.2、kgdb本地调试环境搭建 ------------>2.2.1、串口工具 ------------>2.2.2、连接板端 ------>2.3、kgdb调试 …

31、Flink 的 DataStream API 数据流算子详解

1.算子 可以通过算子将一个或多个 DataStream 转换成新的 DataStream,也可以将多个数据转换算子合并成一个复杂的数据流拓扑。 2.数据流转换 a)Map DataStream → DataStream 输入一个元素,转换后输出一个元素,示例将输入流中…

LeetCode hot100-40-N

543. 二叉树的直径 给你一棵二叉树的根节点,返回该树的 直径 。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。两节点之间路径的 长度 由它们之间边数表示。这题尝试做了一下,有几个测试案例通不…

4.StableDiffusion各项参数解读

经过前期的努力,我想大家都已经生成了自己的第一张AI作品,但是充满了随机性,每次都是不一样的,并且有时候生成的图片效果还不是很让人满意,暂且先不要着急,先跟着本篇文章,学习一些每个选项和参…

Google Chrome GPU渲染抓包

非安全模式启动 "C:\Program Files\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --allow-running-insecure-content --disable-web-security 配置环境 set RENDERDOC_HOOK_EGL0 "C:/Program Files/Google/Chrome/Application/chrom…

Windows本地部署直播录屏利器Bililive-go并实现远程添加直播间录屏

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” 文章目录 1. Bililive-go与套件下载1.1 获取ffmpeg1.2 获取Bililive-go1.3 配置套件 2. 本地运行测试3. 录屏…

【OpenCV 基础知识 2】灰度化图片

文章目录 cvCreateImagecvCvtColor完整示例代码 cvCreateImage 使用OpenCV库在Delphi中创建一个灰度图像。让我解释一下: gray_image : cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);cvGetSize(image): 这个函数返回给定图像(在这里是image&…

【MySQL】事务及其隔离性/隔离级别

目录 一、事务的概念 1、事务的四种特性 2、事务的作用 3、存储引擎对事务的支持 4、事务的提交方式 二、事务的启动、回滚与提交 1、准备工作:调整MySQL的默认隔离级别为最低/创建测试表 2、事务的启动、回滚与提交 3、启动事务后未commit,但是…

MVP产品设计与数据指标

MVP(minimum viable product,最小化可行产品)概念最早由埃里克莱斯提出,刊载于哈弗商业评论,并有出版物《精益创业》 和常规产品不同,MVP更侧重于对未知市场的勘测,用最小的代价接触客户的方法…

学习Nginx(一):基础

介绍 Nginx是一个高性能的HTTP和反向代理的web服务器,它的设计重点是高并发、高性能和低内存消耗。它常被用于提供静态内容、负载均衡和作为Web服务器。 Nginx具有以下功能和特点: 静态文件服务:作为一个Web服务器,Nginx可以处…

GPT-4o可以用了

方法:挂日本/新加坡的梯子就可以了,打开就会弹出以下的弹窗。不过不知道可以用多久呢? 2024/5/15

木里风景文化|基于SSM+vue的木里风景文化管理平台的设计与实现(源码+数据库+文档)

木里风景文化管理平台 目录 基于SSM+vue的木里风景文化管理平台的设计与实现 一、前言 二、系统设计 三、系统功能设计 1 系统功能模块 2 管理员功能模块 3 用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源…

精通Linux中的编辑器(非常详细!!!)

今天我们来说一下编辑器…… Linux中的编辑器 vi:是一个文本编辑器,用于撰写文档,或者开发程序。 vim:是vi的增强版功能一致,可视化效果更好一些。去鼠标化编辑更加方便可定制化 注意:vim编辑器是一个模式…

信息系统项目管理师——十大管理过程输入、工具和技术、输出(论文篇)一

一、项目整合管理 制定项目章程 在项目管理中,制定项目章程是一个关键的初始过程,它正式授权项目的开始并为项目设定高层次的方向。项目章程的编制涉及特定的输入、采用的工具和技术,以及产生的输出。以下是这些方面的详细说明:…

如何避免父组件重新渲染,子组件也跟着渲染

当父组件重新渲染时,通常情况下,子组件也会跟着重新渲染。但是,有一些方法可以避免这种情况发生,让子组件在父组件重新渲染时不进行渲染。以下是五种常见的方法: 使用 React.memo 或 PureComponent: 使用 …