Servlet编程J2EE编程技术

  • 格式:doc
  • 大小:20.50 KB
  • 文档页数:7

百度文库 - 让每个人平等地提升自我

1 Servlet编程

第一个Servlet

在了解Servlet的基础知识后,现在开始编写第一个Servlet。

编写响应HTTP请求的Servlet只需要两个步骤。

(1)创建一个扩展了接口的Servlet类。

接口是的扩展接口,它包含了分析HTTP首部和将客户端信息打包到类中的那些代码。

(2)重写doGet()或doPost()方法实现对HTtP请求信息的动态响应。

这里是Servlet实际完成工作的地方。支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TRACE。GET和POST是基于Intemet的应用程序中使用最普遍的两个方法。根据数据是通过GET还是POST发送,从而覆盖doGet()、doPost()方法之一或全部。DoGet()和doPost()方法都有两个参数,分别为HttpServletRequest类型和HttpServletResponse类型。HttpServletRequest提供访问有关客户端请求信息的方法,例如表

单数据、HTYP请求头,等等。HttpServletResponse除了提供用于指定HTrP应答状态(200,

404等)、应答头(Content-Type,Set-Cookie等)的方法之外,最重要的是它提供了一个用

于向客户端发送数据的PrintWriter对象。对于简单的Servlet来说,它的大部分工作是通过 百度文库 - 让每个人平等地提升自我

2 PrintWriter对象的println语句生成向客户端发送的页面。

提示:doGet()和doPost()这两个方法是由service方法调用的,有时可能需要直接覆盖service()方法,比如Servlet要对GET和POST两种请求采用同样的处理方式。但不推荐这样做,因为有可能带来意想不到的问题。

Servlet也可以重写init()和destroy()方法以实现Servlet特殊的初始化和析构。重写init()和destroy()方法的典型例子是在init()方法中建立数据库连接并在destroy()方法中断开它。

打开Eclipse开发环境,在[File]菜单的[New]选项中选择[Lomboz J2EE Project],弹出[J2EE Proiect Creation Wizardl对话框。通过在[Proiect Namel文本框中输入“ServletStudy”创建一个名为ServletStudy的J2EE项目。[Proiect Content]用于保存工程文件的存储路径,可采用默认路径,也通过取消[Use default]复选框并单击[Browse]按钮来选择路径。

默认其他所有选项设置,单击[Next]按钮进入[Create J2EE

Modules]对话框。

选择[Web Modules]标签,在[Web Modules]选项卡中单击[Add]按钮,添加一个Web模块,通过在[Enter Module Name]文本框中输入“SimpleServlet”将Web模块命名为SimpleServlet,如图3-4所示。

J2EE程序必须在服务器上运行,因此必须为Web模块设置目标服务器。单击[Target Servers]标签在[Target Servers]选项卡中选百度文库 - 让每个人平等地提升自我

3 择J2EE程序运行的服务器。从[Type]下拉列表框中选择已经定义好的服务器类型“”,单击下拉框右侧的[Add]按钮,将服务器添加到列表中,如图3-5所示。单击[Finish]按钮,这样,一个包含Web模块的J2EE项目就自动生成了。本章中所有的Servlet例程都包含在此项目中。

在[File]菜单的[Newl选项中选择[Lomboz ServletWizard],弹出Servlet生成向导对话框,如图3-6所示。[Source Folder]文本框中显示默认的源文件保存路径,也可单击[Browse]按钮选择新的保存路径。在[Package]文本框中输入Servlet类所在的Java包名称“”。在[Name]文本框中输入Servlet名称“FirstServlet”。方法选项区域中包含对应各种类型请求的处理方法。由于所要编写的Servlet只对GET请求进行处理,所以只需要在方法选项区域中选择doGet()方法。对话框中的其他选项采用默认值,单击[Next]按钮进入Servle发布定制对话框。

Servlet作为一个J2EE Web组件必须添加到Web模块且发布到服务器上才能够运行。在Servlet发布定制对话框中,单击[Webmodule]文本框右侧的[Browse]按钮,从下拉列表中选择前面定义的Web模块“SimpleServlet”。

在[Servlet name]文本框中输入“First”。[Servlet name]文本框中的内容为Servlet的显示名称,并不要求等于前面定义的类名。在[Mapping URL]文本框输入Servlet所对应的请求URL“/first”。单击[Finish]按钮,Lomboz自动生成Servlet源文件。 百度文库 - 让每个人平等地提升自我

4 在这个Servlet中,只要求Servlet在接收到请求后向客户端返回一个“Hello,World!”的提示信息。

说明:为节省篇幅,代码中的一些注释信息被省略。另外,有些注释信息是Eclipse自动生成,由于机器环境的不同,读者所生成的注释信息可能与光盘中的不完全一致,如create date、author信息等,这完全正常。

完整代码如程序3-1所示。

程序3-1:

package ;

import javax, class FirstServlet extends HttpServlet

{

protected void doGet(HttpServletRequest request,

HttpServletResponse response) throws

ServletException, IOException {

3C8080”/DTD Web Application /EN"

"">

百度文库 - 让每个人平等地提升自我

5

First

First

/first

404

/ 百度文库 - 让每个人平等地提升自我

6

文件对于一个Web应用非常重要,它作为Web容器与Web应用交互的场所,一定位于应用的WEB-INF子目录下。它包含了Web模块的重要的描述信息,以本例来说,节点用来指明Servlet逻辑名称与Java实现类之间的对应关系;用来指明Servlet逻辑名称与URL请求地址之间的对应关系;节点指明请求Web应用程序时默认显示的欢迎页面:指明Web应用程序发生错误时导向的错误页面。当然还有其他类型节点用来描述Web应用其他方面的信息,详细信息可以查阅DTD(Document Type Defintions,文档类型定义)文档。Web容器正是根据文件描述的信息来操作Web应用的。

程序3-2中的如下代码片段:

First

/first

可以改为:

First

/firstServlet

百度文库 - 让每个人平等地提升自我

7 保存程序3-2,重新发布Web模块,启动IE浏览器,在地址栏中输入",则得到如图3-10所示的运行结果。

404错误代码表示文件无法定位的错误类型。产生错误的原因在于此时FirstServlet对应的请求URL不再是“/first”,而是“/firstServlet”。读者可在地址栏中输入“,看看又会得到什么运行结果页面。