Servlet生命周期及请求相应基本知识点

一、servlet生命周期和API

        ①  容器要加载类、调用servlet的无参构造函数,并调用servlet的init()方法,从而初始化servlet。
        ②  init()方法在servlet一生中只调用一次,往往在servlet为客户请求提供服务之前调用。
        ③  init()方法使用可以访问ServletConfig和ServletContext对象,servlet需要从这些对象得 到有关servlet配置和Web应用的信息。
        ④  容器通过调用servlet的destroy()方法来结束servlet的生命。
        ⑤  servlet一生的大多数时间都是在为某个客户请求运行service()方法。
        ⑥  对service() 方法的每个请求都是在一个单独的线程中运行!任何特定servlet类都只有一个实例。
        ⑦  自定义servlet一般都会继承javax.servlet.http.HeepServlet,并由此继承service()方法的一个实现,它取出一个 HttpServletRequest和一个HttpServletResponse作为参数。
        ⑧  HttpServlet扩展了javax.servlet.GenericServlet,这是一个抽象类,实现了大多数基本servlet方法。
        ⑨  GenericServlet实现了Servlet接口。
        ⑩  Servlet相关的类(除了与JSP有关的类)都在以下两个包中:
                      >  javax.servlet
                      >  javax.servlet.http
        ⑪  可以覆盖init()方法,而且必须覆盖一个服务方法(doGet()、doPost()等)。


二、HTTP和HttpServletRequest

        ①  HttpServlet的doGet()和doPost()方法取一个HttpServletRequest和一个HttpServletResponse作为参数。
        ②  service()方法根据HTTP请求的HTTP方法(GET、POST等)来确定运行doGet()还是doPost()。
        ③  POST请求有一个请求体,GET请求则没有,不过GET请求可以把参数追加到请求URL的后面。
        ④  GET请求本质上讲是幂等的。他们应当能多次运行而不会对服务器产生任何副作用。GET请求不应该修改服务器上的任何东西。但是可以写一个非幂等的doGet()方法(不建议)。
        ⑤  POST本质上讲不是幂等的,所以当一个客户错误的将一个请求提交多次时,应该适当的设计代码处理这种情况。
        ⑥  如果HTML表单没有明确地指出"method=POST"的话,请求就会作为一个GET请求发送,若servlet中无doGet(),这个请求就会失败。
        ⑦  可以用getParameter(String paramname)方法从请求得到参数,返回值为String类型。
        ⑧  如果对应一个给定的参数名有多个参数值,要使用getParameterValues(String paramname)方法来返回一个String数组。
        ⑨  从请求对象还可以得到其他东西,包括首部、cookie、会话、查询串和输入流。

三、HttpSevletResponse

        ①  使用相应向客户发回数据。
        ②  对相应对象(HttpServletResponse)调用的最常用的方法是setContentType()和getPrintWriter()
        ③  实际上得到书写器的方法是getWriter()。
        ④  利用getWriter()方法可以完成字符I/O,向流写入HTML或其他内容。
        ⑤  还可以使用相应来设置首部、发送错误、以及增加cookie。
        ⑥  在实际中,可能会使用JSP发送大多数HTML相应,但仍有可能使用一个响应流向客户发送二进制数据。
        ⑦  要得到二进制流,需要在响应上调用getOutputStream()方法。
        ⑧  setContentType()方法告诉浏览器如何处理响应数据。如“text/html”、"application/pdf"、"image/jpeg"等。
        ⑨  可以使用addHeader()或setHeader()设置相应首部。
        ⑩  可以使用sendRedirect(String url)重定向访问。
        ⑪  重定向需发生在写入流之前。
        ⑫  请求分派在服务器端发生,重定向在客户端运行。请求分派把请求传递给服务器上的另一个组件,而重定向则是让浏览器去访问另一个URL。

 


      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值