JavaWeb | Servlet学习笔记(一)

Servlet为创建基于web的应用程序提供了基于组件,独立于平台的方法。

一、简介

1、Servlet是什么

Java Servlet是运行在web服务器或应用服务器上的程序。他是作为来自web浏览器或其他HTTP客户端请求和HTTP服务器上的数据库或应用程序之间的中间层。
可以完成收集来自网页表单的用户输入、呈现来自数据库或其他源的记录、动态创建网页等功能。
优点:Servlet在Web服务器的地址空间内执行,独立于平台。

2、Servlet的架构

架构图

3、Servlet任务

(1)读取客户端(浏览器)发送的显式数据,包括网页上的HTML表单或者也可以是来自applet或自定义的HTTP客户端程序的表单。
(2)读取客户端(浏览器)发送的隐式的HTTP请求数据,包括cookies、媒体类型和浏览器能理解的压缩格式等。
(3)处理数据并生成成果。
(4)发送显式数据(即文档)到客户端(浏览器),文档的格式多种多样,可以是文本文件(HTML或XML)、二进制文件(GIF、图像)Excel等。
(5)发送隐式HTTP响应到客户端(浏览器)。

4、Servlet包

javax.servlet 和 java.servlet.http

二、Eclipse JSP/Servlet 工程创建

在Eclipse中创建Servlet程序时即新建Dynamic Web Project即可。

1、Dynamic Web Project目录解释

deployment descriptor:部署的描述
Web App Libraries:自己加的包可以放在里面
build:放入编译后的文件
WebContent:放进写入的页面

2、Servlet文件创建

在Eclipse中可以选择直接新建Servlet文件,要注意需对web.xml进行修改。
(如何进行修改将在后续的笔记中记录)

三、Servlet生命周期

1、综述

Servlet生命周期可以被定义为从创建到毁灭的整个过程。
Servlet初始化后调用用init()方法;
Servlet调用service()方法来处理客户端的请求;
Servlet销毁前调用destroy()方法;
Servlet由JVM的垃圾回收器进行垃圾回收。

2、init()方法

只被调用一次,在第一次创建Servlet的时候被调用,用于一次性初始化。
Servlet创建于用户第一次调用对应于该Servlet的URL时,但也可以制定Servlet在服务器第一次启动时被加载。
当用户调用一个Servlet时,就会创建一个Servlet实例,每一个用户请求都会产生一个新的线程,适当的时候移交给doGet或doPost方法.
init()方法简单地创建或加载一些数据,将被用于Servlet地整个生命周期。

public void init() throws ServletException{
//初始化值代码
}

3、service()方法

service方法是执行实际任务的主要方法,Servlet容器(即Web服务器)调用service()方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
每次服务器接收到一个Servlet请求时,服务器会产生一个新的线程并调用service()。则service()方法会检查HTTP请求的类型(GET POST PUT DELETE等),并在适当的时候调用doGet doPost doPut doDelete等方法。即service()方法是由Servlet容器调用,从而在适当的时候调用doGet等方法,则不需要对service方法做任何动作,只需要根据来自客户端的请求类型来重写doGet或doPost方法(最常用的两种方法)。

public void service(ServletRequest request, ServletRespond repond) throws ServletException, IOException{
}

4、doGet()和doPost()方法

(1)doGet
GET请求来自于一个URL的正常请求或者来自于一个未制定METHOD的HTML表单,由doGet()方法处理。
(2)doPost
Post请求来自于一个特别制定了METHOD未POST的HTML表单,由doPost方法处理。
(3)doGet是接受网页用get方法时调用的,doPost是用来接受post方法的。
get方法就像在网页的地址栏里看到的一堆乱码,即url后面有参数;post就是用表单传过去的,就好像把数据都打包发过去一样。既使无法区分也可以选择在servlet中把功能都写到一起,即在一个方法中调用另一个方法。

5、destroy()方法

destroy()方法只会被调用一次,在Servlet生命周期结束时被调用。destro()方法可以使Servlet关闭数据库连接,停止后台线程,把Cookie列表或点击计数器写入到磁盘中,并执行其他类似的清理活动。在调用destroy()方法后,servlet对象被标记未垃圾回收。

public void destroy(){
}

6、架构图

架构图
(1)第一个到达服务器的HTTP请求被委派到Servlet容器,容器调用init()方法加载Servlet;
(2)Servlet加载后,Servlet容器调用service方法处理该HTTP请求;
(3)然后,Servlet容器处理由多个线程产生的多个请求,每个线程执行一个单一的Servlet实例的service方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值