Servlet第一篇-Web基础

前言

好久没更新博客了,我没有偷懒哈哈哈,因为最近在学习Java基础,其他学习方向就放置了。有过一门编程基础之后,学习其他语言真的是可以为所欲为(其实没有!!)

python是脚本语言,跟Java还是有很多地方不一样的。

好了,先回归正题,接下来更新的系列是:Serlvet 。这个系列要求读者有一些Java基础。(嗯,下面这些基本够了)



Serlvet 是很久之前的技术吧,先谈谈我为什么还要学他。现如今的JavaEE,Spring一家独大,一门新技术的出现可能意味着其他内容的消亡。但是有一句话说的话——万变不离其宗。在我调研了几天发现 Serlvet还是被依赖的技术。所以,不仅要学,还要学深。

但是例如SSH框架、JSP,就没有学习的必要了。为什么? 没有为什么,听我的,全听我的。



知识铺垫

HTTP基础

哈哈哈,之前说的这两篇就很详细啦!!没看过的旁友迅速瞄一下。

  1. 计算机网络Day6-应用层协议
  2. 爬虫Day1-HTML基础

C/S架构

这是个老生常谈的东西啦,看图就能看懂的(get!)


从浏览器地址行输入一个URL

这是一个面试很常考的问题:“在地址栏输入一个网址,浏览器实际上做了什么?”
我们知道,要在互联网上访问另一台主机(服务器也是主机),需要通过IP地址形式。但是,IP地址不便于人类记忆,因此我们采用域名形式进行映射(baidu.com),通过域名可以找到该主机。


  1. 首先浏览器会访问电脑上的hosts文件。
1
2
- 如果找得到,则直接解析地址,例如localhost,映射为127.0.0.1
- 如果没找到,则向DNS发出解析请求
  1. DNF服务器收到后,会在DNS缓存中寻找该域名对应的IP地址映射。

    1
    2
    - 如果找到了,返回给浏览器
    - 如果没找到,接着向上级DNS请求解析,直到拿到解析内容为止
  2. 这时,浏览器就拿到了网址的IP地址。

  3. 浏览器向该IP地址发出HTTP请求连接,可能直接请求服务器的静态资源,或者是个动态的请求信息。

  4. 服务器解析浏览器发来的请求(假设一切正常)

1
2
- 如果是静态资源则直接返回
- 如果是动态请求,例如url后面拼接的(?username=xx)。则会运行服务器端的程序,获得响应内容后再回送给浏览器
  1. 浏览器拿到响应内容后进行渲染,呈现页面给用户。

图解:

Just so cool,对吧~



概况

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序。

Servlet带给我们最大的作用就是能够处理浏览器带来HTTP请求,并返回一个响应给浏览器,从而实现浏览器和服务器的交互


环境准备:

  1. IDEA(好用)
  2. 去Apache官网下载tomcat
  3. JDK8

关于环境搭建,网上教程一大把,由于文章篇幅问题,我就不写在这里面了。


简单的Servlet程序

一、继承HttpServlet


二、复写方法

  • service方法中定义的内容,是我们每一次请求Servlet服务所运行的方法。也就是说,当我们在url上请求我们的项目z资源时,它就会运行一次service方法。
  • 在上面我们重写的是Servlet的接口,要实现5个方法。这样太麻烦了!而HttpServlet接口已经实现了Servlet接口的所有方法(该接口的具体实现tomcat已经帮你写好了哦,我们只关心如何“用”),编写Servlet时,只需要继承HttpServlet,然后重写你需要的方法即可
  • 一般我们都会重写doPost()或doGet()方法,当Servlet被访问时,会先去找service方法,如果没有,会继续找到我们复写的get、post方法(划重点)

三、配置注解

我们需要在web.xml中配置项目映射

  • servlet-name由我们自己分配,只要两个servlet-name相同,即可对应上。
  • url-pattern就是我们在url上请求的资源路径,他会经过当前项目的web.xml文件进行过滤,当本项目文件没有遭到规则拦截,会去全局的web.xml继续匹配。再没有则报出404错误。

当我们的servlet的版本是3.0以后时,我们可以通过更简便的方法——注解

简单多了有没有!!!


四、运行Servlet实例

  • 可以看到,在控制台输出了“HelloWorld”。我们入了个门,不是么,嘻嘻~

Servlet生命周期

  1. 加载Servlet。当Tomcat第一次访问Servlet的时候,Tomcat会负责创建Servlet的实例
  2. 初始化。当Servlet被实例化后,Tomcat会调用init()方法初始化这个对象
  3. 处理服务。当浏览器访问Servlet的时候,Servlet 会调用service()方法处理请求
  4. 销毁。当Tomcat关闭时或者检测到Servlet要从Tomcat删除的时候会自动调用destroy()方法,让该实例释放掉所占的资源
  5. 卸载。当Servlet调用完destroy()方法后,等待垃圾回收。
  • 简单总结:只要访问Servlet,service()就会被调用。init()只有第一次访问Servlet的时候才会被调用。 destroy()只有在Tomcat关闭的时候才会被调用。而加载与卸载这两部分不用我们关心,这是Servlet容器自动处理的。


后记

Servlet第一节就到这了,后面还有很多知识没讲,我们下篇再见,peace!