Jersy、Jetty和Servlet

时间:2023-03-09 19:01:33
Jersy、Jetty和Servlet

1、Jersy框架

  Jersey RESTful WebService框架是一个开源的、产品级别的JAVA框架,是JAX-RS的参考实现。Jersey提供自己的API,其API继承自JAX-RS,提供更多的特性和功能以进一步简化RESTful service和客户端的开发。

  Jersey可以跑在Jetty容器中, 也可以在tomcat或glassfish等容器中。

2、Jetty

  Jetty是一个提供HTTP服务器、HTTP客户端和javax.servlet容器的开源项目。

  Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器(Jetty存在HTTPS Servlet服务类,可用于创建web服务器)。它有一个基本数据模型,这个数据模型就是 Handler(处理器),所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你管理这些 Handler。

3、Servlet

  3.1定义

  Servlet是sun公司提供的一门用于开发动态web资源的技术。Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
    1、编写一个Java类,实现servlet接口。
    2、把开发好的Java类部署到web服务器中。
  按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet。

  3.2 Servlet执行过程

  Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
  ①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
  ②装载并创建该Servlet的一个实例对象。 
  ③调用Servlet实例对象的init()方法。
  ④创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。

  Servlet的生命周期描述如下:

   (1).生命周期:Servlet 加载--->实例化--->服务--->销毁

   (2).init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()

    (3).service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do

     (4).destroy()

4.Jetty和Servlet

  Servlet自身是无法和客户端进行通信的,那么它是如何发挥作用的呢?这就需要Servlet引擎了,Servlet引擎负责和服务端进行通信,解析request并将任务分配给正确的servlet程序进行处理,并负责将Servlet的处理结果返回给客户端。

  Jetty存在一个servcie类,可用于创建一个HTTP Servlet服务器。前面我们说到,Servlet.init()负责初始化Servlet对象,会生成多个service,这些service由一个handle进行统一管理(handle.addServlet)。Jetty的基本数据模型就是handle,将handle添加到 Server 中,Jetty 将会负责管理这些Handler,上述过程用代码表示为:

 server = new Server();//创建Jetty服务器
 servlet.setInitParameter();//初始化,service
 handler.addServlet();//handle  管理servlet
 server.setHandler();//加载到服务类