购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 Servlet 2.4 简介

Servlet是Java Web应用开发的核心技术,JSP及其他许多优秀的Web框架都是基于Servlet实现的。因此,在学习JSP技术之前,我们一起来揭开Servlet的神秘面纱,迈出学习JSP技术的第一步。

3.1.1 Servlet概述

·Servlet(Java服务器端小程序)是用Java编写的与平台无关的服务器端组件。

·Servlet在Servlet容器(如Tomcat)中运行,其生命周期由容器管理。

·由于Servlet运行在服务器上,因此可以调用服务器端的很多资源。

·Servlet与客户采用“请求/响应”的模式进行通信。

·Servlet以多线程的方式处理客户的请求。

·在Web应用开发中,主要用到Servlet 的HttpServlet抽象类。

·HttpServlet通过两个对象(HttpServletRequest对象和HttpServletResponse对象)与客户进行交互。

·HttpServletRequest对象中封装了客户的请求信息,HttpServletResponse对象中封装了对客户的响应信息。

·Servlet通常用做控制器,根据不同的请求,经过加工处理后,将处理结果转发给其他组件。

·Servlet容器在启动加载Web应用时,为每个应用创建唯一的ServletContext。ServletContext是应用级的共享内存区,利用ServletContext可以在整个应用范围内共享某些数据。

·最后记得将自己编写的Servlet注册到web.xml配置文件中。

3.1.2 Servlet的生命周期及请求响应时序

当Servlet被装载到容器中后,首先调用init()方法进行初始化,初始化后,调用service()方法处理客户请求,并将处理结果封装到HttpServletResponse中返回给客户。当Servlet实例从容器中移除时调用destroy()方法。

Servlet生命周期示意图及请求响应时序如图3-1 和图3-2所示。

图3-1 Servlet生命周期示意图

图3-2 Servlet请求响应时序图

3.1.3 HttpServlet相关对象的方法列表

HttpServlet是Servlet的抽象类,HttpServlet通过HttpServletRequest对象和HttpServlet Response对象与客户进行交互。其中HttpServletRequest对象负责封装存放HTTP请求信息,HttpServletResponse对象负责封装存放处理得到的响应结果。

另外,Servlet容器启动加载Web应用时,会为每个Web应用创建一个ServletContext对象用于存放整个Web应用的共享数据,因此,我们可以把ServletContext对象看成Web应用的共享内存区。

下面将HttpServletRequest、HttpServletResponse及ServletContext类的常用方法列表以供参考。

·HttpServletRequest的常用方法见表3-1。

表3-1 HttpServletRequest的常用方法

·HttpServletResponse的常用方法见表3-2。

表3-2 HttpServletResponse的常用方法

·ServletContext的常用方法见表3-3。

表3-3 ServletContext的常用方法

3.1.4 创建HttpServlet实例

在Java Web应用开发中,创建HttpServlet一般遵循如下步骤。

(1)创建自己的类并继承HttpServlet。

(2)重载HttpServlet的doGet( )或doPost( )等方法。

(3)获取HTTP请求信息(如表单数据),进行业务逻辑处理。

(4)生成HTTP响应结果,以流形式输出到客户端浏览器或输出到磁盘文件。

(5)在web.xml配置文件中注册HttpServlet。

(6)启动Servlet容器进行测试。

下面以访问计数器为例(见图3-3)讲解HttpServlet的具体开发过程。本实例旨在演示HttpServlet如何将HttpServletRequest对象、HttpServletResponse对象及ServletContext对象有机结合,完成一次HTTP请求的响应处理。

图3-3 访问计数器实例逻辑模型图

从图3-3 可看出,用户通过填写index.html(见例程3-1)中的表单,提交后,Servlet容器将整个HTTP请求信息封装到一个HttpServletRequest对象中,传入MyServlet.java(见例程3-2),由MyServlet维护ServletContext对象中一个计数器count属性,最后将处理的响应结果封装到一个HttpServletResponse对象中,通过HttpServletResponse对象的PrintWriter输出流对象将响应结果输出到用户的浏览器上。

例程3-1 index.html

例程3-2 MyServlet.java

HttpServlet开发完以后,必须在web.xml中配置以后才能被用户通过浏览器访问,MyServlet在web.xml中的配置情况见例程3-3。

例程3-3 web.xml

本实例的运行效果如图3-4所示。

图3-4 访问计数器运行效果 Xk2x2emEF7byhlEltBVGQMbwpjWNEOjfGIYnysvg4rt7hoSZP/yna/Dt1jgmTbtu

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开