zoukankan      html  css  js  c++  java
  • Javaee----重新回顾servlet

    最近的项目涉及到servlet开发,不得不回顾一下java servelt 。 发现lz的基本功还是很差

    1. 每一个servlet都必须实现servlet接口,GenericServlet是个通用的、不特定于任何协议的Servlet,它实现了Servlet接口,而且HttpServlet继承与GenericServlet,因此HttpServlet也实现了Servlet接口,所以我们定义的Servlet只需要继承HttpServlet父类即可。

    2. servlet 接口中定义了一个service方法,HttpServlet 对该方法进行了实现,实现方式就是将 ServletRequest 与 ServletResponse 转换为HttpServletRequest 与 HttpServletResponse。然后重载service方法。

     

    3.  在该 service 方法中, 首先获得到请求的方法名, 然后根据方法名调用对应的 doXXX 方法,比如说请求方法为 GET,那么就去调用 doGet方法;请求方法为 POST,那么就去调用 doPost 方法。

    4. 在 HttpServlet 类中所提供的 doGet、doPost 等方法都是直接返回错误信息,所以我们需要在自己定义的 Servlet 类中 override 这些方法

    5.  Servelt 核心 API 之间的关系 UML 图:

     

    6. Servlet 的启动 (默认是单例Servlet)(默认第一次调用servlet时,执行init方法)

    • 在下列时刻Servlet容器装载Servlet:
      – Servlet容器启动时自动装载某些Servlet
      – 在Servlet容器启动后,客户首次向 Servlet 发出请求
      – Servlet的类文件被更新后,重新装载Servlet

    • Servlet被装载后,Servlet容器创建一个 Servlet 实
      例并且调用 Servlet 的 init()方法进行初始化。在
      Servlet的整个生命周期中,init方法只会被调用一次。

      a) 使得Servlet容器启动时自动装载某些Servlet(配置load-on-startup属性)

        

    7 对于request.setAttribute("key", "value"); 实际上是维护了一个ConcurrentHashMap

      因为request对象时tomcat产生的。所以得冲tomcat的源码中查看。

      

  • 相关阅读:
    Linux安装软件时90%的人会遇到这个报错,如何解决?
    mongo下查询ObjectId(id)类型的数据
    解决nohup启动logstash生成的文件过大的问题
    ES集群服务器下线节点扩容后上线的流程
    knife4j的使用记录
    mongodb的update函数更新数据,更新文档中的某个具体字段的数据
    Python celery异步框架
    VueX插件使用
    Vue-router插件使用
    Vue 自定义指令
  • 原文地址:https://www.cnblogs.com/chihirotan/p/5862115.html
Copyright © 2011-2022 走看看