第三章 servlet技术(书摘)

来源:互联网 发布:php 数组buffer 编辑:程序博客网 时间:2024/04/24 04:53
     Java Servlet是与平台无关的服务器端组件,它可以运行在Servlet容器中。Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet和客户的通信采用“请求/响应”模式。

    当用户开发自己的Servlet类时,Servlet类必须扩展以下两个类中的一个:
          Generic Servlet类
          HttpServlet类

    ServletRequest接口中封装了客户请求信息,如客户请求方式、参数名和参数值、客户端正在使用的协议,以及发出客户请求的远程主机信息。
    ServletResponse接口为Servlet接口提供了返回响应结果的方法。

    Servlet的生命周期开始于被封装到Servlet容器中,结束于被终止或重新装入时。Servlet的生命周期分为3个阶段:初始化阶段、响应客户请求阶段和终止阶段。在java.servlet.Servlet接口中定义了3个方法init()、service()和destroy(),它们将分别在Servlet的不同阶段被调用。
    在Servlet的整个生命周期中,init方法只会被调用一次。
    对于到达Servlet容器的客户请求,Servlet容器将创建特定于这个请求的ServletRequest对象和ServletResponse对象,然后调用Servlet的service方法。service方法从ServletRequest对象获取客户请求信息,并处理该请求,通过ServletResponse对象向客户返回响应结果。
    在destroy方法中,可以释放Servlet所占用的资源。

    HTTP请求由3个部分构成,分别是:
          请求方法URI协议/版本
          请求头(Request Header)
          请求正文
    HTTP响应也由3个部分构成,分别是:
          协议  状态代码  描述
          响应头(Response Header)
          响应正文

    创建用户自己的HttpServlet类,通常涉及下列4个步骤:
          1. 扩展HttpServlet抽象类;
          2. 覆盖HttpServlet的部分方法,如覆盖doGet()或doPost()方法;
          3. 获取HTTP请求信息,例如通过HttpServletRequest对象来检索HTML表单所提交的数据或URL上的查询字符串。无论是HTML表单数据还是URL上的查询字符串,在HttpServletRequeset对象中都以参数名/参数值的形式存放,可以通过以下方法检索参数信息:
                getParameterNames():返回一个Enumeration对象,它包含了所有的参数名信息。
                getparameter(String name):返回参数名name对应的参数值。
                getParameterValues():返回一个Enumeration对象,它包含了所有参数值信息。
          4. 生成HTTP响应结果。通过HttpServletResponse对象可以生成响应结果。

    Servlet容器在启动时会加载Web应用,并为每一个Web应用创建唯一的ServletContext对象。可以把ServletContext看成是一个Web应用的服务器端组件的共享内存。
    在Servlet容器中设置的属性,在Web应用运行期间一直存在。当Web应用被关闭时,Servlet容器会销毁ServletContext对象,存储在ServletContext对象中的属性自然也不复存在。不同的Web应用的ServletContext各自独立。
原创粉丝点击