Servlet GenericServlet HttpServlet 简介

/ 0评 / 0

    在过了一下Servlet基础之后发现实现的办法十分活跃,而Servlet作为Java类的工作方式也是十分特殊(前些日子的Struts2不玩这一套,但是听说理解底层原理有助加深对框架的使用//不知道谁说的)其中最常用的办法就是实现Servlet接口。

Servlet接口


    非常标准的五个方法

        1、init():在Servlet实例化后,Servlet容器会调用init()方法,来初始化该对象,主要是为了让Servlet对象在处理客户请求前可以完成一些初始化的工作。例如:建立数据库连接,获取配置信息等。对于每一个Servlet实例,init()方法只能被调用一次。init()方法有一个类型为ServletConfig的参数,Servlet容器通过这个参数向Servlet传递配置信息。Servlet使用ServletConfig对象从Web应用程序的配置信息中获取以名-值对形式提供的初始化参数。另外,在Servlet中,还可以通过ServletConfig对象获取描述Servlet运行环境的ServletContext对象,使用该对象,Servlet可以和它的Servlet容器进行通信。

        2、getServlet():该方法返回了容器调用init()方法时产生的配置信息。

        3、service():核心方法,执行前一定要保证init方法被正确执行,而其包括了响应请求发出响应体这些内容

        4、destroy():当容器检测到一个Servlet对象应该从服务中被移除的时候,容器会调用该对象的destroy()方法,以便让Servlet对象可以释放它所使用的资源,保存数据到持久存储设备中。

        5、getServletInfo():返回有关Servlet的信息。

    所以可以利用以下方式来实现:

GenericServlet抽象类

    这个类实现了Servlet但是并没有将里面所有的方法都去实现,而是将service方法继续写成抽象方法。


    而究其源码:

    所以可以通过这样的方式来继续去实现:

HttpServlet类

    该类又是继承了GenericServlet抽象类


    该类花了很多时间来将HTTP请求的各种方式定义并判断再执行,而doGet和doPost作为浏览器最常用的两种方式来请求返回,所以一定程度service方法是可以替代这两种的,而doGet方法和doPost和service一起出现的时候,优先级是比后者低的。可以用以下测试程序测试:

    到目前我对Servlet的理解还不是特别深刻,至于详细的区别探索不深入,会补档 -暂时到这里。

发表评论

电子邮件地址不会被公开。 必填项已用*标注