zoukankan      html  css  js  c++  java
  • Servlet


    虽然目前servlet可能看起来和jsp一样过时,但是很多框架的底层,服务端和客户端通信都是用的这个

    servlet

    servlet是用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。简单的理解就是服务器端,接受客户端过来的数据,通过解析request,返回respond的工具,可以理解为一个有5个方法的接口,一般来说实现了servlet的类都可以叫做servlet。
    但是如果一个单独的servlet是不能跟客户端通信的,实际通信的是tomcat,tomcat监听端口(一般是8080),请求过来后,根据url等信息,确定要将请求交给哪个去处理,然后调用那个servlet的service方法,service方法返回一个response对象,tomcat再把这个response返回给客户端。

    基本实现

    servlet是具有5个方法的类,一般都是直接采用继承的方式重写就行,5个方法包括3个周期方法和2个其他方法

    • init(ServletConfig config)
    • destroy
    • service
    • getServletInfo
    • getServletConfig

    其中对于init 和destroy周期方法只调用一次,而对于service方法,只要请求进来就会调用一次,所以我们的业务逻辑都是写在service方法里面的,查看源码,servlet不会直接实现service方法,需要自己实现get post操作,这样肯定很麻烦,所以大多数操作都是直接继承HttpServlet方法实现其中的service方法,对于HttpServlet类,这是一个抽象类,不允许被实例化,也就就是不能被new,继续查看httpServlet的源码会发现,这个类继承了一个GernericServlet类,这类也是个抽象类,但是这里直接实现了servlet,对于Servlet,没有直接实现其中的service方法。
    那么为什么这么麻烦,我们直接实现HttpServlet,并且HttpServlet直接继承Servlet就行了,为什么要隔一层GenericServlet,查看GenericServlet可以看到基本方法都没有什么用,只是周期函数init中,加了两行

    public void init(ServletConfig config) throws ServletException{
      this.config=config;
      this.init();
    }
    

    这里作用

    C'est la vie
    GitHub:Fourous的GitHub
    MyWebBlog:Fourous的Blog
    zhihu: Fourous的知乎
  • 相关阅读:
    TCP/IP协议栈之QEMU
    FreeRTOS-Plus-CLI中添加一个自己的命令行
    FreeRTOS A57
    log日志库
    函数解读:ioremap / ioremap_nocache / ioremap_wc / ioremap_wt
    Makefile 使用小结
    41. 缺失的第一个正数(First Missing Positive)
    42. 接雨水(Trapping Rain Water)
    关于C++内联和静态成员函数的问题
    C++11 线程并发问题
  • 原文地址:https://www.cnblogs.com/fourous/p/11457866.html
Copyright © 2011-2022 走看看