servlet基础(代码片段)

dowhile dowhile     2022-12-02     489

关键词:

在动态网站技术发展初期,为替代笨拙的 CGI 技术,Sun公司在制定 Java EE 规范时引入 Servlet,实现了基础 Java 语言的动态 Web 技术,奠定了 JavaEE 的基础,使动态 Web 开发技术达到了一个新的境界。如今,Servlet 在普遍使用的 MVC 模式的 Web 开发中仍占据了重要地位,目前流行的 Web 框架基本上都基于 Servlet 技术。

Servlet 简介

Servlet 是基于 Java 语言的 Web 服务器端编程技术,是Sun公司提供的一种动态网页的解决方案。按照 Java EE 规范定义,Servlet 是运行在 Servlet 容器的 Java 类,它能处理 Web 客户的 HTTP 请求,并产生 HTTP 响应。例如:当浏览器发送一个请求到服务器后,服务器会把请求交给一个特定的Servlet,该Servlet对请求进行处理后会构造一个合适的响应返回给客户。

技术图片

Servlet 对请求的处理和响应过程可以进一步分为如下几个步骤:
1、接收HTTP请求。
2、取得请求信息,包括请求头和请求参数数据。
3、调用其他Java类方法,完成具体的业务功能。
4、实现到其他Web组件的跳转(包括重定向或请求转发)
5、生成HTTP响应。

Servlet 体系结构

Servlet是使用Servlet API 及相关类和方法的Java程序。Servlet API 包含两个软件包。

  • javax.servlet 包:包含支持所有协议的通用的Web组件接口和类,主要有 javax.servlet.Servlet 接口、javax.servlet.GenericServlet 类、javax.servlet.ServletRequest接口、javax.servlet.ServletResponse 接口。
  • javax.servlet.http包:包含支持HTTP协议的接口和类,主要有javax.servlet.http.HttpServlet 类、javax.servlet.http.HttpServletRequest 接口、javax.servlet.http.HttpServletResponse 接口

在Web开发中最常用的是 HttpServlet 类,它扩展了 GenericServlet 类并对 Servlet 接口提供了与 HTTP相关的实现,是在Web开发中定义Servlet最常用使用的类。

HttpServlet类中的主要方法及其描述

方法 方法描述
service(HttpServletRequest req,HttpServletResponse resp) HttpServlet在实现Srvlet接口时,重写了service方法,该方法会自动判断用户的请求方式,若为Get请求则调用HttpServlet的doGet() 方法,若为POST请求,则调用doPost方法。
doGet(HttpServletRequest req,HttpServletResponse resp) 此方法被本类service方法调用,用来处理一个 http get请求
doPost(HttpServletRequest req,HttpServletResponse resp) 此方法被本类service方法调用,用来处理一个 http post请求

HttpServlet 作为 HTTP请求的分发器,除了提供对GET和POST请求的处理方法 doGet() 和 doPost() 外,对于其他请求类型,如 HEAD、OPTIONS、DELETE、PUT、TRACE也提供了相应的处理方法。doHead()、doOptions() ...

HttpServlet 指能够处理 HTTP 请求的 Servlet,它在原有Servlet 接口上添加了对HTTP协议的处理,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。

Servlet 生命周期

Servlet 程序本身并不直接在 java 虚拟机上运行,而是由Servlet容器负责管理其整个生命周期。Servlet生命周期是指Servlet实例从创建到响应客户请求,直至销毁的过程。在Servlet生命周期中,会经过创建、初始化、服务可用、服务不可用、处理请求、终止服务和销毁7种状态。

技术图片

Servlet的生命周期按照7种状态间转换,可分为一下4个阶段。
1、加载和实例化
Servlet 的创建是指加载和实例化两个过程。Servlet容器在如下时刻加载和实例化一个Servlet:
(1)在服务器运行中,客户端首次向Servlet发出请求
(2)重新装入Servlet时
(3)在为Servlet配置了自动装入选项时,服务器在启动时会自动装入次Servlet
2、初始化
Servlet实例化后,Servlet容器将调用Servlet的 init方法来对Servlet实例进行初始化。在这一过程中,可以读取一些固定的数据、初始化JDBC的连接以及建立与其他资源的连接等操作。init方法的参数ServletConfig对象由Servlet容器创建并传递给Servlet,并在初始化后一直在内存中存在,直到Servlet被销毁。

如果初始化没有问题,Servlet 在Web容器中会处于服务可用状态。如果初始化失败,Servlet容器会从运行环境中清除掉该实例。当Servlet运行出现异常时,Servlet容器会使该实例变为服务不可用状态。

3、处理请求

服务器接收到客户端请求,会为该请求创建一个请求对象和一个响应对象并调用 service() 方法,service()方法再调用其他方法来处理请求。在Servlet 生命周期中,service()方法可能被多次调用。当多个客户端同时访问某个Servlet的service()方法时,服务器会为每个请求创建一个线程,这样可以并行处理多个请求,减少请求处理的等待时间,提高服务器的响应速度。但同时也要注意对同一对象的并发访问问题。

4、销毁

当Srvlet容器需要终止Servlet,它会先调用Servlet的destroy方法使其释放正在使用的资源。在Servlet容器调用destroy方法之前,必须让当前正在执行service()方法的任何线程完成执行,或者超过了服务器定义的时间限制。在destroy方法完成之后,Servlet容器必须释放Servlet实例以便于被垃圾回收。

servlet基础(代码片段)

...期,为替代笨拙的CGI技术,Sun公司在制定JavaEE规范时引入Servlet,实现了基础Java语言的动态Web技术,奠定了JavaEE的基础,使动态Web开发技术达到了一个新的境界。如今,Servlet在普遍使用的MVC模式的Web开发中仍占据了重要地位,目... 查看详情

servlet的基础知识总结(代码片段)

文章目录1、Servlet技术的核心是Servlet,ServletAPI有4个jar包2、Servlet的实现方式(1)实现Servlet接口来开发Servlet程序(2)扩展GenericServlet实现Servlet程序(3)扩展HttpServlet实现Servlet程序3、Servlet的 查看详情

javaweb学习之servlet基础(代码片段)

学习笔记仅供参考,如有错误,请多指出                        java学习路上,与君共勉​                                                                          ... 查看详情

javaweb学习之servlet基础(代码片段)

学习笔记仅供参考,如有错误,请多指出                        java学习路上,与君共勉​                                                                          ... 查看详情

servlet过滤器基础及使用场景(代码片段)

Servlet过滤器详解  一、过滤器基础  1.Servlet过滤器是Servlet的一种特殊用法,主要用来完成一些通用的操作。比如编码的过滤,判断用户的登陆状态等等。Servlet过滤器的适用场合:     A.认证过滤    B.登录... 查看详情

java基础servlet技术(代码片段)

...了Tomcat的javaweb项目的配置报错,追踪分析了一下javax.servlet包中的抽象类HttpServlet、接口HttpServletRespons、接口ServletResponse、公共类PrintWriter,以及相关调用方法。虽然没有进行系统的理论学习,但零散看了一些资料࿰... 查看详情

javaweb_servlet篇_01(代码片段)

Servlet-01篇通过前段时间得JavaWeb基础学习后,对于之前学习总结的,做一下简单的梳理。本篇主要梳理相关Servlet的知识点。文章目录Servlet-01篇一、Servlet基础概念二、Servlet的生命周期三、Servlet重要函数四、手动实现简单... 查看详情

javaweb_servlet篇_01(代码片段)

Servlet-01篇通过前段时间得JavaWeb基础学习后,对于之前学习总结的,做一下简单的梳理。本篇主要梳理相关Servlet的知识点。文章目录Servlet-01篇一、Servlet基础概念二、Servlet的生命周期三、Servlet重要函数四、手动实现简单... 查看详情

动态网站开发讲课笔记04:servlet基础(代码片段)

文章目录零、本节学习目标一、Servlet基础(一)Servlet概述1、Servlet是什么2、Servlet容器3、Servlet应用程序的体系结构(二)Servlet的特点1、功能强大2、可移植3、性能高效4、安全性高5、可扩展(三)Servlet接... 查看详情

javaweb详解(第一篇)之servlet基础简介(代码片段)

JavaWeb详解(第一篇)之Servlet基础简介1、Serlvet概述   Servlet是运行在Web服务器或应用服务器上的java程序,它是一个中间层,负责连接来自web浏览器或其他HTTP客户程序和HTTP服务器上应用程序。是sun公司提供的一... 查看详情

9-java安全基础——servlet(代码片段)

Servlet程序Servlet是ServletApplet的简称,翻译过来大概就是一个运行在服务端的小程序,用于处理服务器的请求,什么是服务器程序?我们知道一般在Web应用程序中都是通过浏览器来访问web服务器资源的,通常浏... 查看详情

java基础5javaweb之简单追踪javax.servlet类库(代码片段)

文章目录查看javax.servlet库HttpServlet.class文件介绍分析HelloServlet.java跟踪代码跟踪PrintWriterout=response.getWriter();跟踪response.setContentType("text/html");新问题PrintWriter类有哪些使用方法?HttpServletRespon 查看详情

javaee基础(02):servlet核心api用法详解(代码片段)

...ddot;点这里 || GitEE·点这里一、核心API简介1、Servlet执行流程Servlet是JavaWeb的三大组件之一(Servlet、Filter、Listener),它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通... 查看详情

java基础-简单的servlet案例实现(代码片段)

1.新建项目1.1新建项目创建Java项目并命名添加web,右击项目名,选择addFrameworkSupport,勾选web项目结构1.2web工程设置在WEB-INF目录下新建两个目录classes用来存放编译后的class文件lib用来存放以来的jar包将如图所示进行设... 查看详情

javaee基础(02):servlet核心api用法详解(代码片段)

本文源码:GitHub·点这里||GitEE·点这里一、核心API简介1、Servlet执行流程Servlet是JavaWeb的三大组件之一(Servlet、Filter、Listener),它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通... 查看详情

javaee基础(02):servlet核心api用法详解(代码片段)

本文源码:GitHub·点这里||GitEE·点这里一、核心API简介1、Servlet执行流程Servlet是JavaWeb的三大组件之一(Servlet、Filter、Listener),它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通... 查看详情

springboot基础集成插件(代码片段)

目录1、SpringBoot整合Servlet1.1、第一种方式1.2、第二种方式2、SpringBoot整合Filter2.1、第一种方式2.2、第二种方式3、SpringBoot整合listener3.1、第一种方式3.2、第二种方式4、SpringBoot实现热部署1、SpringBoot整合Servlet1.1、第一种方式首先自... 查看详情

javaweb详解(第二篇)之servlet基础简介-会话技术介绍(代码片段)

JavaWeb详解(第二篇)之Servlet基础简介-会话技术介绍1、会话技术介绍1.1、会话技术概述1.1.1、什么是会话  会话是指:用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接&#x... 查看详情