Servlet介绍

Servlet的理解要先从API开始。

Servlet介绍

通过这个图可以看出来。我们常说的Servlet

在javax.servlet这个包里面。我们点开Servlet之后,可以发现这是一个Servlet接口,这也同样帮助我们理解了Servlet。Servlet是

Servlet运行在服务器端的java小程序,是sun公司提供的一套规范。用来处理客户请求响应浏览器的动态资源的。

这样说可能不是特别的形象,举个例子详细说明一下,就比如说某学校的教务处,是不是进入你们学校的教务处就会有一个界面呢?登陆界面注册界面之类的。假如说是一个登录界面,在里面输入账号密码,然后点击登陆,这就是把请求发给了服务器,发给服务器的哪里呢?就是我们说的servlet。同样的我登陆进去你得让我进主页面呀, 不让我进主页面有啥用,所以Servlet也需要有一个返回给浏览器的功能。

为什么说是提供的一套规范呢?规范其实就是啥,学校的中小学生规范,学生应该要好好学习。在Servlet里面体现出来的规范不就是接口吗,接口定义了很多方法但不实现,比如学生守则规范定义了一个好好学习的方法,让学生自己去实现。

好的,那么也就是说一个java类,只要实现了这个servlet给的规范,也就是implements这个接口。那就是一个Servlet了。

Servlet介绍

我们来看这个,implements这个Servlet接口。然后仔细看是不是报错了,init方法被我注释掉了,实现接口的所有方法这个是java基础知识了。

下面提一下这几个方法。

自己可以测试一下,随便在init里面打印一个东西,然后再service里面打印一个东西,在destory里面打印一个东西。

可以知道:

init在我们启动服务器访问这个Servlet的时候被执行了!

Service在我们访问这个Servlet的时候被执行了!

Destory在关闭服务器的时候被执行了!

 

那么我们思考一个问题,那就是,我啥时候创建了这个对象?为什么个这个方法会被自动执行?又为什么在我们启动服务器的时候自己跳出来一个404?

第一个问题:没有放在main函数里,但是自动被执行了。其实是tomcat干的好事,它在启动的时候,自己给你new了一个对象,然后调用这里的方法,init

第二个问题:每当servlet被访问了(浏览器通过URL),就会调用service函数。

第三个问题:

当启动服务器的时候,一般是会自动的http://localhost:8080/Blog/;这里的blog是某个工程名称,我想强调的意思是,他只会找你的WebContent下的index.jsp,index.html,index.htm这些页面。别问我为什么这就是配置。

Servlet介绍

在你的XML里面,按照这个顺序从上往下找,如果找不到,你那里没有这些页面,当然就404.

 

这里有个知识点是Servlet的生命周期。

以这个为例:

生:默认第一次访问这个Servlet

死:服务器关闭。

 

下面看一看这个方法Service,Service故名思意,就是服务了,怎么服务呢,你点菜下单我给你做。给你送去。

你点菜,就是给我的一个ServletRequest ,我给你一个ResponseRequest

Servlet介绍

这俩个也是接口。

 

那么问题又来了。

这个好像和我们看到的一般的Servlet怎么长得不一样呢/

Servlet介绍

不一样地方在于,那个是implements了一个接口,而这个是extends,说白了还是实现了接口,也就是这个所谓的规范。

然后我们可以发现,原先在创建Servlet的时候,

Servlet介绍

有一个这个选项,里面也有Service方法,但是默认是doGet和doPost