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()
执行了一次
本人是菜鸟一枚,当做学习笔记写博客。谢谢各路大咖驻足审阅