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页面

相关推荐
那一抹阳光多灿烂6 小时前
Hadoop 架构
大数据·hadoop
Dann Hiroaki9 小时前
笔记分享: 西安交通大学COMP551705数据仓库与数据挖掘——02. 关联规则挖掘
数据仓库·笔记·数据挖掘
花菜回锅肉11 小时前
基于Hadoop、hive的数仓搭建实践
大数据·数据仓库·hive·hadoop
小C哈哈哈21 小时前
大数据技术之HBase中的HRegion
大数据·数据仓库·hadoop·hdfs·hbase·mapreduce·database
Java资深爱好者1 天前
数据仓库在大数据处理中的作用
数据仓库
B站计算机毕业设计超人1 天前
计算机毕业设计Hadoop+大模型空气质量预测 空气质量可视化 空气质量分析 空气质量爬虫 Spark 机器学习 深度学习 Django 大模型
人工智能·hadoop·爬虫·python·深度学习·spark·数据可视化
GDRetop1 天前
mac2019环境 Airflow+hive+spark+hadoop本地环境安装
hive·hadoop·spark
B站计算机毕业设计超人1 天前
计算机毕业设计Hive+Spark空气质量预测 空气质量可视化 空气质量分析 空气质量爬虫 Hadoop 机器学习 深度学习 Django 大模型
hive·hadoop·爬虫·深度学习·机器学习·spark·数据可视化
武子康1 天前
大数据-226 离线数仓 - Flume 优化配置 自定义拦截器 拦截原理 了 拦截器实现 Java
java·大数据·数据仓库·hive·hadoop·数据挖掘·flume