美文网首页
Servlet简介

Servlet简介

作者: 有心丶人 | 来源:发表于2019-05-10 20:02 被阅读0次

Servlet 主要功能

Servlet 主要功能在于交互式地获取和响应数据,生成动态 Web 内容。这个过程为:

1.客户端发送请求信息到服务器

2.服务器将请求信息封装并交给Servlet

3.Servlet接收请求信息、处理数据,并生成响应信息

4.Servlet将响应信息封装并交给服务器

5.服务器返回响应信息给客户端

图解


Servlet生命周期

●什么是生命周期

生命周期指的是一个对象从创建到销毁的过程(从出生--->死亡)

●Servlet的生命周期

Servlet的生命周期指的是Servlet对象从创建到销毁的过程(创建对象,初始化操作,运行操作,销毁操作)

●谁来管理?

Servlet对象的整个生命周期都是由Tomcat来管理的(Servlet的创建,初始化,运行,销毁的行为/方法都是Tomcat来负责调用的)

●javax.servlet.Servlet接口中的方法

void init(ServletConfig config):初始化Servlet对象方法

void service(ServletRequest req, ServletResponse resp):服务方法,Web动态网页的操作就编写在该方法.

void destroy():销毁Servlet对象方法.

-------------------------上面三个方法是生命周期相关的方法---------------------------------

ServletConfig getServletConfig():获取Servlet的配置信息对象.

String getServletInfo():获取Servlet的信息(Servlet的作者,版本,版权相关).

●生命周期方法执行时机

(构造器:在服务端程序第一次被请求的时候,调用,只被调用一次)

void init(ServletConfig config):在构造器执行完毕之后,调用init方法,也只会执行一次.

void service(ServletRequest req, ServletResponse resp):每一次请求都会执行该方法.

void destroy():正常关闭Tomcat才会执行(该方法不一定会被执行,我们没必要在其中编写扫尾的操作).

代码演示

简易版

●总结:

1)执行流程:构造器--->init方法---->[ service方法 ]循环 ---->destory方法

2)重要结论:Servlet是单例的,只会在第一次请求时被创建一次.(多线程访问可能有线程安全问题,如何解决? 避免使用成员变量,要使用局部变量)

●注意:

  Servlet类的构造器必须使用public、无参构造器.(Tomcat通过反射获取public构造器创建Servlet对象的)



Servlet的请求流程

  1:浏览器发送请求到Tomcat:http://localhost:80/hello.

  2:Tomcat解析HTTP请求:/hello.

  上下文路径:“”;资源的名称:/hello

  3:Tomcat解析/conf/server.xml文件,获取其中所有的<Context/>元素,并找到path属性为“”的元素.

<Context docBase="web项目根路径" path=""/>.

再获取该<Context/>元素中docBase属性值,该属性值就是要访问的web项目的根路径.

  4:从该web项目根路径/WEB-INF下找到web.xml文件.并寻找值为:/hello的<url-pattern>.

  找不到: 报404错误.

  找  到: 继续.

  5:通过/hello,找到当前Servlet的全限定名.com.test.hello.HelloServlet.

  6:从Servlet的实例缓存池中去获取com.test..hello.HelloServlet对应的对象.

        Map<String,Servlet> cache = .....;

        Servlet obj = cache.get("com.test.hello.HelloServlet");

        if(obj == null{

            //第一次请求:TO 7.

      }else{

            //非第一次请求:TO 10;

     }

    7:使用反射创建Servlet对象并存储到Servlet实例缓存池中,供下一次请求使用.

        Servlet obj = Class.forName("com.test.hello.HelloServlet").newInstance();

    cache.put("com.test.hello.HelloServlet",obj);

  8:容器创建ServletConfig对象,并调用init方法,来完成初始化操作.

        obj.init(config);

  9:容器创建ServletRequest和ServletResponse对象,并调用service方法,处理请求.

        obj.service(req,resp);

  10:在service方法中,对当前请求的客户端做响应.

相关文章

  • Servlet入门

    Servlet简介 Servlet(Servlet Applet)是Java Servlet的简称,称为小服务程序...

  • JavaWeb之Servlet

    六、Servlet 目录:Servlet简介、HelloServlet、Servlet原理、Mapping问题、S...

  • Servlet

    Servlet简介: Servlet响应客户请求过程: Servlet容器响应客户请求的过程: Servlet生命...

  • Servlet

    1.Servlet 学习大纲 servlet 概念以及相关接口简介 servlet 执行过程 servlet 路径...

  • javaweb学习总结——Servlet学习笔记(17.09.1

    servlet 简介 1.servlet叫什么 Servlet(Server Applet)是Java Servl...

  • servlet 简介

    servlet 是运行在 Web 服务器(tomcat或者apache)中的小型 Java 程序。servlet ...

  • Servlet简介

    Servlet:是server applet的简写 Servlet能干什么? 创建Servlet的三种方式 Ser...

  • Servlet简介

    简介 Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用...

  • Servlet简介

    Servlet主要任务 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 a...

  • Servlet 简介

    Servlet 是什么?Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 We...

网友评论

      本文标题:Servlet简介

      本文链接:https://www.haomeiwen.com/subject/whjzoqtx.html