Servlet基本概念

来源:互联网 发布:nodejs 面向对象编程 编辑:程序博客网 时间:2024/05/17 07:05

Servlet

  1. Servlet(服务器端小程序)是使用Java语言编写的服务器端程序,可以像JSP一样,生成动态的WEB页,Servlet主要运行在服务器端,并由服务器调用执行,是一种按照Servlet标准开发的类。
  2. Servlet程序是Java对CGI程序的实现,但是与传统CGI的多进程处理操作不同的是,Servlet采用了多线程的处理方式,这样就使得Servlet程序的运行效率比传统的CGI更高,而且Servlet还保留有Java的可移植性的特点,这样使得Servlet更易使用,功能也更加强大。 

Servlet处理的基本流程:
  1. 客户端(很可能是Web浏览器)通过HTTP提出请求。
  2. WEB服务器接收该请求并将其发送给servlet。如果这个servlet尚未被加载,web服务器将把它加载到Java 虚拟机并且执行它。
  3. Servlet程序将接收该HTTP请求并执行某种处理。
  4. Servlet会将处理后的结果向Web服务器返回应答。
  5. WEB服务器将从Servlet收到的应答发回给客户端。 
在整个Servlet程序之中最重要的就是Servlet接口,在此接口下定义了一个GenericServlet的子类,但是一般不会直接继承此类,而是根据所使用的协议选择GenericServlet的子类继承,例如:现在是采用HTTP协议处理的,所以一般而言当需要使用HTTP协议操作时用户自定义的Servlet类都要继承HttpServlet类。

编写Servlet程序
  1. 一个Servlet程序就是一个实现了javax.servlet.Servlet接口的Java类,Servlet接口定义了Servlet引擎与Servlet程序之间通信的协议约定。
  2. javax.servlet.GenericServlet类实现了Servlet接口,它实现了Servlet程序的基本特征和功能。 
  3. javax.servlet.http.HttpServlet类是GenericServlet的子类,它在GenericServlet类的基础上进行了一些针对HTTP特点的扩充。
  4. 客户端每次访问一个支持HTTP的Servlet程序时,Servlet引擎都将调用Servlet的service方法来进行处理。service方法接受两个参数,一个是用于封装HTTP请求消息的对象,其类型为HttpServletRequest,另一个是代表HTTP响应消息的对象,其类型为HttpServletResponse。
  5. 调用HttpServletResponse对象的getWriter方法可以获得一个文本输出流对象,向这个流对象中写入的数据将作为HTTP响应消息的实体内容部分发送给客户端。

WebApplication的概念

Web Application Name
WEB-INF
web.xml  web app的配置文件
lib  web app用到的库文件
classes  存放编译好的servlet
META-INF 存放该web app的上下文信息,符合J2EE标准


web.xml的配置

<servlet>

       <servlet-name>HelloWorldServlet</servlet-name>

       <servlet-class>HelloWorldServlet</servlet-class>

    </servlet>

    <servlet-mapping>

       <servlet-name>HelloWorldServlet</servlet-name>

       <url-pattern>/HelloWorldServlet</url-pattern>

    </servlet-mapping>


Servlet运行过程

  1. Servlet引擎检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
  2. 装载并创建该Servlet的一个实例对象。
  3. 调用Servlet实例对象的init()方法。
  4. 创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
  5. WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。





0 0
原创粉丝点击