• 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、会话、查询串和输入流。
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    python修改pip源
    python if条件判断dataframe是否为空
    bowtie和bowtie2使用条件区别及用法
    bat批处理for循环嵌套
    常用的数据标准化方法
    python学习——利用循环实现分类散点图绘制
    python学习——通过命令行参数根据fasta文件中染色体id提取染色体序列
    python学习——把读取fasta文件的代码封装成函数
    python学习——把计算GC含量的代码封装成函数
    python学习——使用argparse参数解释器传递命令行参数
  • 原文地址:https://www.cnblogs.com/zoeyqq/p/6835024.html
Copyright © 2020-2023  润新知