zoukankan      html  css  js  c++  java
  • Servlet

    一、概念

    ​ 在服务器上的Java类必须遵守一定的规范,这样才能被服务器(例如Tomcat)识别并执行。只有这样的类浏览器才可以访问到。Servlet就定义了这样的一套规范,Servlet本质上其实就是一个接口。在服务器上定义的Java类就需要实现Servlet接口并实现其中的所有抽象方法。我们常常也可以把一个实现了Servlet接口的实现类称作一个Servlet。

    二、使用方式

    1. 创建Java EE项目,选择Servlet3.0及以上的版本(因为Servlet3.0及以上版本支持注解配置,这样就不再需要web.xml了)。
    2. 定义一个类实现Servlet接口并实现其中的所有抽象方法。
    3. 在类上使用@WebServlet注解,进行配置。举例:@WebServlet("/demo1")

    三、执行原理

    1. 当服务器接收到客户端浏览器的请求后,会解析请求的URL地址,获取要访问的类的资源路径。
    2. 在服务器中查找是否有类的注解能够对应上该资源路径。
    3. 若有,服务器会将该类的字节码文件加载进内存。自动创建该类的对象并调用方法。

    四、Servlet中的生命周期方法

    1. init()方法:

      ​ 默认情况下,当第一次被访问时,Servlet被创建。Servlet中的init()方法只会执行一次,因此一个Servlet在内存中只存在一个对象,即Servlet是单例的。

      【注】当多个用户同时访问该对象时,可能存在线程安全问题。因此,尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要有对其修改值的操作。

    2. service()方法:

      ​ 提供服务,可以被多次执行。当每次访问Servlet时,Service方法都会被自动调用一次。

    3. destory()方法:

      ​ 当服务器关闭时,Servlet被销毁。destory()方法在Servlet被销毁之前执行,一般用于释放资源,只会执行一次。

      【注】只有当服务器正常关闭时,才会执行destroy方法。

    五、Servlet的继承体系结构

    Servlet —— 接口

    ​ |

    GenericServlet —— 抽象类

    ​ |

    HttpServlet —— 抽象类

    • GenericServlet抽象类将Servlet接口中的其他方法都做了默认空实现,只将service()方法作了抽象。因此当需要定义Servlet实现类时,可以继承GenericServlet抽象类,然后只需要实现service()方法即可。

    • HttpServlet抽象类是对HTTP协议的一种封装,更为常用。

      // HttpServlet抽象类的service方法
      // 判断请求方式
      String method = req.getMethod();
      if("GET".equals(method)){
      	doGet();
      }else if("POST".equals(method)){
      	doPost();
      }
      

      我们在继承HttpServlet时,只需要重写doGet()方法和doPost()方法即可。

  • 相关阅读:
    Windows 右键添加用记事本打开的选项
    shell 脚本常用写法
    常用命令--dig
    电子表格数字式的小时化成时分秒格式
    Kaggle猫狗图像分类竞赛Baseline
    阿里巴巴用户体验研究专员暑期实习生笔试 经验分享 2019
    sysctl -w net.core.somaxconn=65535
    src/stream/ngx_stream_proxy_module.c:542: 错误:‘ngx_stream_upstream_t’没有名为‘ssl_name’的成员
    ssl.cpp:333: error: ‘SSL_set_tlsext_host_name’ was not declared in this scope
    fiddler QuickExec
  • 原文地址:https://www.cnblogs.com/jiajun107/p/12960553.html
Copyright © 2011-2022 走看看