Servlet入门 Servlet生命周期 Servlet体系结构

一.Servlet入门

1.Servlet介绍

Servlet (server applet) 是运行在服务端(tomcat)的Java小程序,是sun公司提供一套定义动态资源规范; 从代码层面上来讲Servlet就是一个接口
狭义的Servlet是指Java语言编写的一个接口。
广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
Servlet作用:用来接收和处理客户端请求、响应给浏览器的动态资源。

2.Servlet快速入门

编写步骤:

  • 创建类,实现接口Servlet
  • 重写抽象方法,5个 (关注一个方法 service )
  • 编写web.xml核心配置文件
  • 通过浏览器访问

创建类,实现接口Servlet

注意:在此步骤需要依赖servlet-api.jar,按下面步骤导入,
File—>Project Structure

重写抽象方法,5个 (关注一个方法 service )

编写web.xml核心配置文件

通过浏览器访问

3.servlet程序执行原理

  • tomcat开始运行,会加载web项目里面的配置文件web.xml
  • 通过浏览器发送请求,请求首先到达Tomcat服务器
  • 由服务器解析请求URL,然后在部署的应用列表中找到我们的应用。
  • 在应用中找应用里的web.xml配置文件,
  • 在web.xml中找到QuickStartServlet的配置,找到后执行service方法
  • 最后由QuickStartServlet响应客户浏览器

4.Servlet生命周期

Servlet对象从生到死的过程(生命周期),即:出生——活着——死亡。用更偏向 于开发的官方说法就是对象创建到销毁的过程

Servlet从创建到销毁的过程:

  • 出生:(初始化)用户第一次访问时执行。
  • 活着:(服务)应用活着。每次访问都会执行。
  • 死亡:(销毁)应用卸载。

Servlet生命周期方法:

1. init(ServletConfig servletConfig)

Servlet被创建的时候:执行init方法,只执行一次
Servlet什么时候被创建?
A.默认情况下,第一次被访问时,Servlet被创建
B.可以配置执行Servlet的创建时机:在<servlet>标签下配置
第一次被访问时,创建 <load-on-startup>的值为负数
在服务器启动时,创建 <load-on-startup>的值为0或
正整数
<servlet>
        <servlet-name>life</servlet-name>
        <servlet-
class>com.lzw.servlet.LifeServlet</servlet-
class>
        <load-on-startup>2</load-on-startup>
</servlet>
Servlet的init方法,只执行一次,说明一个Servlet在内存中
只存在一个对像。Servlet是单例的
多个用户同时访问时,可能存在线程安全问题。
解决:尽量不要在Servlet中定义成员变量。即使定义了成员变
量,也不要对修改值

2.service(request,response)

提供服务:执行service方法,执行多次
每次访问Servlet时,Service方法都会被调用一次。
 

3.destroy()

被销毁:执行destroy方法,只执行一次Servlet被销毁时执行。

服务器关闭时,Servlet被销毁只有服务器正常关闭时,才会执行destroy方法。
destroy方法在Servlet被销毁之前执行,一般用于释放资源

4.其他方法

public ServletConfig getServletConfig()获取ServletConfig对象。
ServletConfig:Servlet的配置对象
public String getServletInfo()
获取Servlet的一些信息,版本,作者等等

5 Servlet体系结构

GenericServlet抽象类:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象。
将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可。

HttpServlet

HttpServlet是一个与HTTP协议相关的Servlet,专门用来

处理HTTP协议的请求响应。

  • 在HttpServlet类的service方法内部,根据HTTP协议请求方式不同,执行不同的doXXX的方法(get请求执行doGet方法,如果是post请求就会执行doPost方法)。
  • 继承了HttpServlet之后不需要重写service方法,只需要重写doGet和doPost方法即可。

二.案例 注册

1 案例需求

在注册的页面中输入用户数据,点击注册按钮完成用户注册。

2 实现步骤

  • 创建数据库表
  • 创建WEB项目
  1. 添加必要的jar,配置文件,工具类,JavaBean(User类)
  2. 创建自己的包
  • 编写页面
  • 编写服务器Servlet

3 代码实现

1 数据库SQL语句

CREATE TABLE tb_user(
    id int primary key auto_increment,
    username VARCHAR(32),
    password VARCHAR(32),
    nickname varchar(32),
    age int
);

2 JavaBean类

3 html页面

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

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

相关文章

穿越数据迷宫:C++哈希表的奇幻旅程

文章目录 前言&#x1f4d4;一、unordered系列关联式容器&#x1f4d5;1.1 unordered 容器概述&#x1f4d5;1.2 哈希表在 unordered 容器中的实现原理&#x1f4d5;1.3 unordered 容器的特点 &#x1f4d4;二、unordered_set 和 unordered_map 的基本操作&#x1f4d5;2.1 un…

飞牛云fnOS本地部署WordPress个人网站并一键发布公网远程访问

文章目录 前言1. Docker下载源设置2. Docker下载WordPress3. Docker部署Mysql数据库4. WordPress 参数设置5. 飞牛云安装Cpolar工具6. 固定Cpolar公网地址7. 修改WordPress配置文件8. 公网域名访问WordPress 前言 本文旨在详细介绍如何在飞牛云NAS上利用Docker部署WordPress&a…

2023年MathorCup数学建模B题城市轨道交通列车时刻表优化问题解题全过程文档加程序

2023年第十三届MathorCup高校数学建模挑战赛 B题 城市轨道交通列车时刻表优化问题 原题再现&#xff1a; 列车时刻表优化问题是轨道交通领域行车组织方式的经典问题之一。列车时刻表规定了列车在每个车站的到达和出发&#xff08;或通过&#xff09;时刻&#xff0c;其在实际…

安全见闻1-5

涵盖了编程语言、软件程序类型、操作系统、网络通讯、硬件设备、web前后端、脚本语言、病毒种类、服务器程序、人工智能等基本知识&#xff0c;有助于全面了解计算机科学和网络技术的各个方面。 安全见闻1 1.编程语言简要概述 C语言&#xff1a;面向过程&#xff0c;适用于系统…

闯关leetcode——3178. Find the Child Who Has the Ball After K Seconds

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/find-the-child-who-has-the-ball-after-k-seconds/description/ 内容 You are given two positive integers n and k. There are n children numbered from 0 to n - 1 standing in a queue in o…

Java结合ElasticSearch根据查询关键字,高亮显示全文数据。

由于es高亮显示机制的问题。当全文内容过多&#xff0c;且搜索中标又少时&#xff0c;就会出现高亮结果无法覆盖全文。因此需要根据需求手动替换。 1.根据es的ik分词器获取搜索词的分词结果。 es部分&#xff1a; //中文分词解析 post /_analyze {"analyzer":"…

Python——NumPy库的简单用法,超级详细教程使用

一、什么是NumPy库 NumPy&#xff1a;它是python的一个科学计算库函数&#xff0c;它是由c语言编写的 它应用于数据处理、机器学习、图像处理、文件操作等等 二、array函数 这里导入库numpy&#xff0c;命名为np&#xff0c;后面的np都是代表着是numpy函数 array函数表示创建…

【Java语言】String类

在C语言中字符串用字符可以表示&#xff0c;可在Java中有单独的类来表示字符串&#xff08;就是String&#xff09;&#xff0c;现在我来介绍介绍String类。 字符串构造 一般字符串都是直接赋值构造的&#xff0c;像这样&#xff1a; 还可以这样构造&#xff1a; 图更能直观的…

自由学习记录(21)

感觉反而 还复杂一点&#xff0c;关系并不纯粹&#xff0c;游戏里用的少...的确 是知道为什么游戏不用了 理解思想就可以了&#xff0c;实际操作也是动态的分析&#xff0c;硬套某种模式也不是怎么很合适 MVC的了解应该是差不多了&#xff0c;重点还是实际中的使用了 所以删了…

Bugku CTF_Web——点login咋没反应

Bugku CTF_Web——点login咋没反应 进入靶场 随便输个试试 看来确实点login没反应 抓包看看 也没有什么信息 看了下源码 给了点提示 一个admin.css try ?12713传参试试 拿到一个php代码 <?php error_reporting(0); $KEYctf.bugku.com; include_once("flag.php&q…

软件测试面试大全(含答案+文档)

1、你的测试职业发展是什么&#xff1f; 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师奔去。而且我也有初步的职业规划&#xff0c;前3年积累测试经验&#xff0c;按如何做好测试工程师的要点去要求自己&…

从华为到创业公司

我有一个朋友&#xff0c;在华为工作了很长一段时间&#xff0c;一年多前&#xff0c;他从华为出来到了一家创业公司。 周末趁着有时间&#xff0c;我跟他聊了下关于从华为到创业公司的一些问题&#xff0c;总结给大伙看看。 ▎1 在华为工作和在创业公司工作最大的差别是什么呢…

Linux网络——网络初识

目录 1. 认识协议 2. 协议的分层 3. OSI 七层模型 && TCP/IP 五层(四层)模型 4. 网络传输的基本流程 5. 以太网的通信原理 6. 数据的跨网络传播 7. 认识 IP 地址 ① IP 是什么 ② IP 与 MAC 的关系 ③ 为什么需要 IP 在谈及网络之前&#xff0c;我们要先对学…

React Hooks在现代前端开发中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 引言 React Hooks …

执行flink sql连接clickhouse库

手把手教学&#xff0c;flink connector打通clickhouse大数据库&#xff0c;通过下发flink sql&#xff0c;来使用ck。 组件版本jdk1.8flink1.17.2clickhouse23.12.2.59 1.背景 flink官方不支持clickhouse连接器&#xff0c;工作中难免会用到。 2.方案 利用GitHub大佬提供…

【机器学习】如何配置anaconda环境(无脑版)

马上就要上机器学习的实验&#xff0c;这里想写一下我配置机器学习的anaconda环境的二三事 一、首先&#xff0c;下载安装包&#xff1a; Download Now | Anaconda 二、打开安装包&#xff0c;一直点NEXT进行安装 这里要记住你要下载安装的路径在哪&#xff0c;后续配置环境…

如何保护 Microsoft 网络免受中间人攻击

一名办公室工作人员收到了一封看似来自供应商的电子邮件&#xff0c;但该邮件被隔离了&#xff0c;用户请求将其释放。这封邮件看起来没什么问题&#xff0c;因此管理员释放了这封邮件。用户点击邮件查看内容&#xff0c;其中包括一张附加发票。 问题就从这里开始&#xff1a;…

Excel筛选的操作教程

用Excel整理数据时&#xff0c;常常要用到筛选功能&#xff0c;很多复杂的数据经过一定条件的筛选后就变得很清晰。筛选也是Excel的一个基本功能之一&#xff0c;你会使用这个功能吗&#xff1f;不会也没关系&#xff0c;接着往下看&#xff0c;接下来就来演示一些Excel表格筛选…

爬虫补环境案例---问财网(rpc,jsdom,代理,selenium)

目录 一.环境检测 1. 什么是环境检测 2.案例讲解 二 .吐环境脚本 1. 简介 2. 基础使用方法 3.数据返回 4. 完整代理使用 5. 代理封装 6. 封装所有使用方法 jsdom补环境 1. 环境安装 2. 基本使用 3. 添加参数形式 Selenium补环境 1. 简介 2.实战案例 1. 逆向目…

JAVA:探索 EasyExcel 的技术指南

1、简述 在 Java 开发中&#xff0c;Excel 文件的读写操作是一项常见的需求。阿里巴巴开源的 EasyExcel 提供了一种高效、简洁的解决方案&#xff0c;特别是在处理大规模数据时表现尤为突出。本文将详细介绍 EasyExcel 的优缺点、应用场景&#xff0c;并通过实例展示其基本用法…