JavaWeb 学习笔记(二)Servlet生命周期
2017-06-01 18:40
483 查看
Servlet概述
五个方法,三个生命周期方法,其中有两个只执行一次生命周期方法:
void init (ServletConfig config):出生之后(1次)
void service(ServletRequest req,ServletResponse res):每次处理请求时都会被调用
void destroy():临死之前(1次)
特性:
单例,一个类只有一个对象;当然可能存在多个Servlet类!
线程不安全,效率高
Servlet类由我们来写,但对象由服务器来创建,并且由服务器调用相应的方法。
(1)什么是servlet
Servlet是JavaWeb的三大组件之一,它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:
接收请求数据;
处理请求;
完成响应;
例如客户端发出登陆请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们来自己编写,每个Servle必须实现javax.servlet.Servlet接口
每个Servlet都不同,相当于不同的报员完成自己的任务,在Servlet之前需要进行调度分配。
(2)实现Servlet的方式(由自己来写)
实现Servlet有三种方式:
实现javax.servlet.Servlet接口;
继承javax.servlet.GenericServlet类;
继承javax.servlet.http.HttpServlet类;这个类更方便,它继承自GenericServlet,是专门为Http编写的
通常会继承HttpServlet类来完成我们的Servlet,但学习还是从javax.servlet.Servlet接口开始。查看API帮助文档Servlet的五个方法
public interface Servlet{
public void init (ServletConfig config) throws ServletException;
public ServletConfig getServletConfig();
public void service(ServletRequest req,ServletResponse res)throws ServletException,IOException;
public String getServletInfo();
public void destroy();
}
Servlet中的方法大多数不由我们来调用,而是由Tomcat来调用;并且Servlet的对象也是由Tomcat来创建。
方法解释:
init (ServletConfig config)它是生命周期方法,它会在Servlet对象创建之后马上执行,并只执行一次!(出生之后)Servlet是单例对象
destroy()它是生命周期方法,它会在Servlet被销毁之前调用,并且也只调用一次。这个方法并不是直接摧毁了对象
service(ServletRequest req,ServletResponse res)它是生命周期方法,会被调用多次,每次处理请求都是在调用这个方法
getServletConfig()获取Servlet的配置信息
getServletInfo()获取Servlet的信息,用处不是太多,服务器基本不会调用这个方法
Servlet的生命周期
如何让浏览器访问Servlet:这个是web.xml文件的设置:
servlet-class:是自己实现Servlet接口的.java文件的类名
上下两个xxx的servlet-name要相同
对上面的文件做一下简单的介绍:
给Servlet指定一个Servlet路径!也就是将一个路径配给Servlet(让Servlet与一个路径绑定在一起)这需要在web.xml中对Servlet进行配置
web.xml文件 <servlet> <servlet-name>XXX</servlet-name> <servlet-class>servlet.AServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>XXX</servlet-name> <url-pattern>/xxx.servlet</url-pattern>此处必须以斜线开头,/后代表Servlet的路径 </servlet-mapping>
上面这个文件可以理解浏览器访问的是url-pattern所指定的路径,通过servlet-mapping中提供的名称访问到了响应的servlet
浏览器访问Servlet路径
自己动手写第一个Servlet:
有关Intellij工程如下:
web.xml内容如下:
<servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/HelloWorld</url-pattern> </servlet-mapping>
在HelloWorld.java中类实现了javax.servlet.Servlet接口,每个方法的实现都是
System.out.println("方法名()...");,主要是为了看一下生命周期的过程:
访问localhost:8080/JavaWeb/HelloWorld
当访问了两次Servlet时,可以看到
init()执行了一次,
service()执行了两次,点击关闭服务
destroy()执行了一次
本人是菜鸟一枚,当做学习笔记写博客。谢谢各路大咖驻足审阅
相关文章推荐
- Java for Web学习笔记(十):Servlet(8)下发文件
- 【JAVA WEB】学习笔记——Servlet入门
- Java for Web学习笔记(六二):Controller替代Servlet(4)方法返回值
- Java for Web学习笔记(六一):Controller替代Servlet(3)body映射到参数
- Java Web学习笔记——Servlet
- Servlet学习笔记(一)javaWeb应用基本
- (转)JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板
- Java Web 学习笔记3——Model 2. Servlet的引入
- JavaWEB.Servlet(学习笔记)
- Java for Web学习笔记(五九):Controller替代Servlet(1)请求匹配
- Java for Web学习笔记(八):Servlet(6)doGet()和doPost()是线程还是队列
- Java.Web学习笔记 Servlet
- JavaWeb 学习笔记(三)GenericServlet和HttpServlet介绍
- java_web学习笔记之Servlet
- java for Web学习笔记之Servlet的使用及注意事项
- Java for Web学习笔记(六三):Controller替代Servlet(5)Model和View
- Java for Web学习笔记(六四):Controller替代Servlet(6)Spring Form Tag
- Java for Web学习笔记(六十):Controller替代Servlet(2)方法中的参数
- Java Web 学习笔记(二)servlet
- Java for Web学习笔记(九):Servlet(7)上传文件