Servlet

news2025/7/14 5:57:14

1.Servlet是什么

  • Servlet是java语言编写的运行在服务器端的程序
  • Servlet是javaEE规范之一,规范就是接口
  • Servlet是JavaWeb三大组件之一,三大组件分别是:Servlet,Filter,Listener

2.Servlet干什么

Servlet接受客户端发来的请求,并响应数据给客户端

 

3.servlet的声明周期

  1. 加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet
  2. 创建:通过调用Servlet的构造函数来创建一个Servlet实例
  3. 初始化:通过调用Servlet的init()方法完成初始化,在向客户端提供服务之前调用
  4. 处理请求:Servlet创建之后就可以处理请求,当有新的客户端请求时,Web容器都会创建一个新的线程来处理该请求,接着调用Servlet的Service()方法来响应客户端的请求
  5. 销毁:容器销毁Servlet之前调用destroy()方法,让Servlet释放资源

初始化阶段

Servlet容器加载Servlet,加载完成后,Servlet容器会创建一个Servlet实例并调用init()方法初始化,只会调用一次初始化方法

Servlet容器会在一下几种情况装载Servlet

  • 在Servlet容器启动后,客户首次向Servlet发送请求
  • Servlet类文件被更新后,重新装载

处理客户端请求阶段

每收到一个客户端请求,服务器会产生一个新的线程去处理,对于用户的Servlet请求,Servlet容器会根据不同的请求类型去调用不同的doXXX()方法

终止阶段

Web应用被终止时,或者Servlet容器终止运行,Servlet容器会调用destroy()方法

4.Servlet工作原理

客户发送一个请求,Servlet 调用 service() 方法对请求进行响应,service() 方法会对请求的方法进行匹配,进入相应的逻辑层,完成请求的响应。

但是 Servlet 接口和 GenericServlet 接口中没有 doGet(),doPost() 等方法,HttpServlet 中定义了这些,但是返回的都是Error 信息,所以每次定义 Servlet 都要重写这些方法。

Sertvlet 和 GenericServlet 是不特定于任何协议的,而 HttpServlet 是特定于 Http协 议的,所以 HttpServlet 中的 service()方法中将 ServletRequest,ServletResponse 强转为 HttpRequest 和 HttpResponse,最后调用自己的 service 方法去完成响应。

5.转发和重定向的区别

总结:转发是服务器行为,重定向是客户端行为。

转发-Forword

通过 RequestDispatcher 对象的 forward(HttpServletRequest request,HttpServletResponse response)方法实现的;RequestDispatcher 可以通过 HttpServletRequest 的 getRequestDispatcher() 方法获得。

request.getRequestDispatcher("login_success.jsp").forward(request, response);

重定向-Redirect

重定向是利用服务器返回的状态码来实现的,客户端浏览器请求服务器的时候,服务器会返回一个状态码。服务器通过 HttpServletRequestResponse 的 setStatus(int status) 方法设置状态码。如果服务器返回 301 或者 302,则浏览器会到新的网址重新请求该资源。

常用状态码:

  • 200(OK):表示服务器已经成功接受请求,并将返回客户端所请求的最终结果
  • 301(Moved Permanently):永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
  • 302(Found):临时移动,与301类似,但资源只是临时被移动,客户端应继续使用原有 URI
  • 400(Bad Request):客户端请求的语法错误,服务器无法理解
  • 403(Forbidden):服务器理解请求客户端的请求,但是拒绝执行此请求
  • 404(Not Found):请求失败,客户端请求的资源没有找到或者是不存在
  • 500(Internal Server Error):服务器内部错误,无法完成请求
  • 502(Bad Gateway):网关错误,作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
  • 503(Service Unavailable):服务不可用,由于超载或系统维护,服务器暂时的无法处理客户端的请求
     

从地址栏显示来说

  • forward 是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。
  • redirect 是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的URL。
     

从数据共享来说

  • forward:转发页面和转发到的页面可以共享request里面的数据
  • redirect:不能共享数据


从运用地方来说

  • forward:一般用于用户登陆的时候,根据角色转发到相应的模块
  • redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等


从效率来说

  • forward:效率高
  • redirect:效率低

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

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

相关文章

G - Damaged Bicycle 状压+最短路,D-七圣召唤_概率dp

G - Damaged Bicycle 状压最短路 最短路处理出1号节点和带车子的点到n的距离dist[x][n],G可以从节点1直接走到n,也可以从节点1走到带车子的节点再骑到n,如果车子坏了可以走到n,也可以走到下一个车子节点再进行之前的步骤,所以可以…

React源码解读之React Fiber

开始之前,先讲一下该文章能帮你解决哪些问题? facebook为什么要使用重构ReactReact Fiber是什么React Fiber的核心算法 - react是如何中断重启任务的react fiber部分源码简化版 前言 该文章涉及的源码部分基于React v17.0.2 why React Fiber 浏览器…

Go 语言搭建个人博客(qiucode.cn 重构篇 二)

1、MVC模式 MVC模式是一种 WEB 长期累积的总结,但这并不是唯一模式。 对于 MVC 模式,想必有过搭建 WEB 项目的开发者并无陌生。 服务器端负责将客户端发送过来的 HTTP 请求,进行处理(处理器),解析路由(Route),而后把 URL 映射到对应的控制器(Controller)。 MVC …

智慧公路解决方案-最新全套文件

智慧公路解决方案-最新全套文件一、建设背景二、思路架构三、建设方案1、智慧路产管理2、智慧基础设施3、智慧信息服务4、智慧交通管控5、智慧系统平台6、智慧辅助决策四、获取 - 智慧公路全套最新解决方案合集一、建设背景 交通出行主要面临的痛点是安全和拥堵,而…

算法与数据结构 - 散列表

文章目录引言一、散列表概述1.1 哈希函数1.2 散列表二、算法实战2.1 两数之和题目题解1. 暴力破解2. hash表结语点赞再看,养成习惯引言 某日,韩梅梅和李雷来到一家新开的网红图书馆借阅书籍。 韩梅梅: 李雷,快来帮我找下《数据结构从入门到放弃》 李雷看…

测试项目(MSTest)中涉及到读取App.config 操作(.net6)

文章目录环境问题排查过程查看Nuget包是否正确查看配置文件是否正确解决办法(手动)解决办法(自动)为什么是这样的呢?环境 VS2022MSTest项目.Net6版本 问题 在测试过程中发现读取App.config中的连接字符串是null&…

颜色杂项笔记

面向用户的HSV颜色模型的三个属性 面向用户的颜色模型HSV,有如下几个属性 Hue(色度、色调、色相):描述具体颜色,比如红、蓝、黄、绿等,可以理解为color的专业说法。 Saturation(饱和度&#xff…

红帽8使用nfs共享本地镜像

实验环境 FFF-server 192.168.80.100 SSS-client 192.168.80.254 实验前提关闭selinux和防火墙 第一步在开始之前我们可以先看一下nfs-server本地上的一个镜像挂载情况。如图1. 可以看到本地镜像已经被挂载上去。 第二步我们继续看一下server的yum仓库是否已经成功配置。如…

公布一小时下载量达10W:京东T5级架构师出品高并发核心编程手册

高并发有多重要? 高并发面试已经成了各大厂面试必问的题目,尤其是阿里、京东这样的大厂,面试的时候会往深了去问,可以说是你能回答出多少,你拿到大厂offer的概率就有多大! 因高并发的问题回答不上来的案例…

采购软件能否降低企业采购成本?如何实现的?

在如今的疫情影响下,降低成本一直是企业决策者的主要目标之一,在采购领域尤其如此。而很多企业在销售业绩下滑时,纷纷通过采购软件来降低采购成本从而提升利润,达到了不可思议的效果。那么采购软件能否降低企业采购成本&#xff1…

ELK日志实时分析

项目实训报告:ELK日志实时分析 任务目标 使用filebeat采集日志数据,通过kafka将数据传输给logstash进行过滤,最后输出到Elasticsearch绘制数据图表。 数据说明 实施步骤 将数据上传到家目录(/home/hadoop)&#…

CentOS7.5虚拟机扩展xfs文件系统

1.目标 虚拟机xfs文件系统挂载点根目录(也就是/dev/sda3)扩展空间 2.软件版本 Vmware WorkStation 16pro CentOS7.5 3.外部硬盘增加空间 硬盘空间只能增大,不能缩小,最大磁盘大小必须大于现在的size,否则扩展按钮置灰…

JSON 学习(FastJson和Jackson)

JSON 学习 文章目录JSON 学习1. Json数据格式1.1 Json 数据格式1.2 Json 对象格式1.3 数组对象相互嵌套格式1.3.1 数组中的元素是对象1.3.2 对象中的值是数组1.3.3 你中有我,我中有你2. 使用场景3. java里面操作json有哪些技术4. Fastjson4.1 FastJson的优点4.2 Fas…

Spring Security认证之基本认证

本文内容来自王松老师的《深入浅出Spring Security》,自己在学习的时候为了加深理解顺手抄录的,有时候还会写一些自己的想法。 快速入门 在Spring Boot项目中使用Spring Security非常方便,创建一个新的Spring Boot项目我们只要引入Web和Spri…

java项目:前后端分离SpringBoot+Vue+Element的校内跑腿平台

收藏点赞不迷路 关注作者有好处 项目编号:BS-XX-155 一,项目简介 近年来,随着国内都市化的发展,生产生活节奏变快、各种往来频繁。经济的高速发展催生出“懒人经济”。不想走出家门,饭菜可以送上门;不方便交水、电、…

Java中restTemplate的使用

原文链接 代码地址 本文介绍restTemplate基础用法。 Java中get和post的用法请参考:https://mp.weixin.qq.com/s/mC0D1nuCqIori5bWtLorWQ 1 提供get/post接口 1.1 Controller RestController RequestMapping("/homepage") public class MyController…

电脑如何清理重复文件,查找电脑重复文件的软件

在电脑上面,不论是我们可以保存的,还是自动缓存的,都会有大量的重复文件,可能我们自己并没有发现,占据着电脑大量的空间,长此以往下去,会让电脑变得卡顿,我们就需要来清理一下这些不…

低代码维格云甘特视图入门教程

功能简介 低代码维格云甘特图主要通过条状图来显示某些时间相关的活动(任务、阶段、项目等)随着时间进展的情况,以便管理者直观地查看活动进度,把控全局。又称为时间视图、横道图、条状图(Bar chart)。 低代码维格云甘特图适用场景 项目管理生产管理其他领域:建筑、IT软件…

嵌入式FreeRTOS学习八,xTaskCreate创建任务的细节以及恢复中断任务实现

一.创建任务函数xTaskCreate 任务也不是很复杂的东西,任务也就是一个函数xTaskCreate。简单得说,创建一个任务,你得提供它的执行函数,你得提供它的栈的大小,函数的执行空间,函数的优先级等重要的条件。因为…

IPWorks EDI Translator Delphi Edition

IPWorks EDI Translator Delphi Edition 一套轻量级可编程EDI解析和翻译组件。 IPWorks EDI转换器包括便于电子数据交换(EDI)解析、翻译和验证的软件组件。这些组件包括灵活的模式支持,使开发人员能够使用各种模式格式,从而更容易与现有EDI处理应用程序集…