Servlet 为何物?

1、概念:

一个Servlet程序就是实现了特殊接口的Java类,它由支持Servlet的Web服务器(具有Servlet引擎)调用和启动运行。一个Servlet程序负责处理它所对应的一个或则一组URL的访问请求,并用于接受客户端的访问请求信息和和产生响应内容。

2、基本功能

  • 获得客户端通过HTML的Form表单提交的数据和URL后面的参数信息。

  • 创建客户端的响应内容。

  • 访问服务端的文件系统。

  • 连接数据并开发基于数据库的应用。

  • 调用其他Java类。

3、ServletAPI

Sun公司定义了一套专门用于开发Servlet程序的Java类和接口,这些类和接口提供了Servlet程序开发中所涉及的各种功能,它们统称为Servlet API。Servlet引擎与Servlet程序之间采用Servlet API进行通信。因此Servlet引擎与Servlet程序都需要用到Servlet API,事实上,一个Servlet程序就是一个在Web服务器端运行的调用了或实现了Servlet API 的Java类。

4、Servlet接口

Servlet程序必须实现Servlet API中的Servlet接口,此接口时Servlet程序和Servlet引擎的通信协议的约定。为了简化Servlet的编写,Servlet API提供了此接口的简单实现类GenericServlet,同时还是实现了专职与HTTP的Servlet实现,即HttpServlet,此类为GenericServlet的子类。为了充分利用Http协议的功能,我应该继承自HttpServlet类。

  • inti(ServletConfig paramServletConfig)

    在Servlet整个生命周期中仅被Servlet引擎调用一次,以作Servlet程序的初始化工作。例如传递代表Servlet容器和Servlet配置信息的ServletConfig接口实现类对象。

  • getServletConfig()

    返回ServletConfig对象,其封装了Servlet容器信息和Servlet配置信息,后面将详细讲解。

  • service(ServletRequest paramServletRequest,ServletResponse paramServletResponse)

    用于处理Servlet请求的方法,每次请求时均调用此方法。

  • getServletInfo()

    返回Servlet一些描述性信息。

  • destory()

    在结束Servlet生命周期之前调用此方法,以释放掉Servlet程序占用的资源。

5、Servlet特点

Servlet技术_接口

1、接收到访问某个Servlet的HTTP请求之后,Servlet引擎首先检查是否已经装载并创建了该Servlet的实例对象,如果已经装载了并创建了该Servlet的实例对象,Servlet引擎则直接执行第4步,否则,执行第2步。

2、装载并创建Servlet的一个实例对象。

3、调用Servlet实例对象的init()方法,以便执行Servlet的一些初始化工作。

4、创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应的对象HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进入。

5、在一个Web应用程序被停止或重新启动之前,Servlet引擎将卸载其中运行的Servlet。在卸载Servlet之前,Servlet引擎将调用Servlet的destroy()方法,以便在这个方法中执行Servlet的一些清尾工作,例如释放依稀被该Servlet占用的资源。Servlet引擎卸载某个Servlet以后,该Servlet实例对象变成垃圾,等待Java虚拟机的垃圾收集器将其彻底从内存清除。

6、Servlet线程安全性

Servlet引擎是多线程的,但是Servlet程序却不提供线程安全的访问,因此需要开发人员控制线程的安全性。

7、ServletConfig接口

  • getInitParameterNames()

  • getInitParameter(String paramName)

  • getServletName()

  • getServletContext()

    在Servlet程序中,每个Web应用程序(Servlet容器)都用一个各自的ServletContext对象来表示,ServletConfig对象中包含了ServletContext对象的引用,getServletContext方法用于返回ServletConfig对象中所包含的ServletContext对象的引用。

8、application域范围的属性

由于一个Web应用程序中的所有Servlet都共享同一个ServletContext对象,所以ServletContext对象被称之为application对象(Web应用程序对象)。ServletContext接口中定义了4个分别用于增加、删除、访问application域范围的属性的方法。

  • getAttributeNames方法

  • getAttribute方法

  • removeAttribute方法

  • setAttribute方法

9、访问资源文件

ServletContext接口中还定义了一些用于访问Web应用程序的内部资源的方法,这些资源文件是指Web应用程序内部的各种形式的文件。包括Web-INF和META-INF不被客户端直接访问的目录资源。

  • getResourcePaths

  • getResource

  • getResourceAsStream

10、获得虚拟路径所映射的本地路径

  • getRealPath

    要返回Web应用程序的根目录所映射的本地文件系统的路径,传递给getRealPath方法的路径字符串中可以只有一个“/”字符,也可以是一个空字符串。