您的位置:首页 > 编程语言 > Java开发

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()
执行了一次





本人是菜鸟一枚,当做学习笔记写博客。谢谢各路大咖驻足审阅
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: