一.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项目
- 添加必要的jar,配置文件,工具类,JavaBean(User类)
- 创建自己的包
- 编写页面
- 编写服务器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页面

