zoukankan      html  css  js  c++  java
  • servlet的生命周期(Head First Servlet+jsp)(二)

    Servlet生命周期和API
    要点:
    1. 容器要加载类、调用servlet的无参构造函数,并调用servlet的init()方法,从而初始化servlet。
    2. init()方法(开发人员可以覆盖)在servlet一生中指调用一次,往往在servlet为客户请求提供服务之前调用。
    3. Init()方法使servlet可以访问ServletConfig和ServletContext对象,servlet需要从这些对象得到有关servlet配置和Web应用的信息。
    4. 容器通过调用servlet的destroy()方法来结束servlet的生命。
    5. servlet一生的大多数时间都是在为某个客户请求运行service()方法。
    6. 对servlet的每个请求都在一个单独的线程中运行,任何特定servlet类都只有一个实例。
    7. 你的servlet一般都会扩展javax.servlet.http.HttpServlet,并由此继承service()方法的一个实现,它取一个HttpServletRequest和一个HttpServletResponse作为参数。
    8. HttpServlet扩展了javax.servlet.GenericServlet,这是一个抽象类,实现了大多数基本servlet方法。
    9. GenericServlet实现了Servlet接口。
    10. Servlet相关的类(除了JSP有关的类)都在以下两个包中:javax.servlet或javax.servlet.http。
    11. 可以覆盖init()方法,而且必须覆盖一个服务方法(doGet(),doPost()等)。
     
     HTTP和HttpServletRequest
    1. HttpServlet的doGet()和doPost()方法取一个HttpServletRequest和一个HttpServletResponse作为参数
    2. service()方法根据HTTP请求的HTTP方法(GET,POST等)来确定运行doGet()还是doPost()
    3. POST请求有一个体;GET请求没有,不过GET请求可以把请求参数追加到请求URL的后面(有时称为查询串)
    4. GET请求本质上讲(根据HTTP规范)是幂等的。它们应当能多次运行而不会对服务器产生任何副作用。GET请求不应该修改服务器上的任何东西。但是你也可以写一个非幂等的doGet()方法(不过这是很糟糕的做法)。
    5. POST本质上讲不上幂等的,所以要由你来适当地设计和编写代码,如果客户错误的把一个请求发送了两次,你也能正确的加以处理。
    6. 如果HTML表单没有明确地指出mthos=POST,请求就会作为一个GET请求发送,而不是POST请求。如果你的servlet中没有doGet(),这个请求就会失败。
    7. 可以用getParameter(paramname)方法从请求得到参数。返回值总是一个string。
    8. 如果对应一个给定的参数名有多个参数值,要使用getParameterValues(paramname)方法来返回一个String数组。
    9.从请求对象还可以得到其他东西,包括首部、cookie、会话、查询串和输入流。
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    polly异常重试、熔断
    ASP.NET Core-Linux发布部署
    ASP.NET Core-扩展Views的几种方式
    ASP.NET Core-使用AspNetCore实现AOP

    Docker-Dockerfile2
    Docker-Dockerfile1
    Docker-搭建私有仓库步骤


  • 原文地址:https://www.cnblogs.com/zoeyqq/p/6835024.html
Copyright © 2011-2022 走看看