Servlet

Java Servlet开发工具(JSDK)提供了多个软件包,在编写Servlet时需要用到这些软件包。其中包括两个用于所有Servlet的基本软件包,分别是javax.servlet和javax.servlet.http。

可从Sun公司的Web站点下载Java Servlet开发工具。

HTTP Servlet使用一个HTML表格来发送和接收数据。要创建一个HTTP Servlet,应扩展HttpServlet类,该类是用专门的方法来处理HTML表格的GenericServlet类的一个子类。HTML表单是由<FORM>和</FORM>标记定义的。典型的表单中包含输入字段(如文本输入字段、复选框、单选按钮和选择列表)和用于提交数据的按钮。当提交信息时,它们还指定服务器应执行哪一个Servlet(或其他的程序)。

HttpServlet类包含init()、destroy()和service()等方法。其中init()和destroy()方法是继   承的。

1.init()方法

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

默认的init()方法通常是符合要求的,但也可以用定制init()方法来覆盖它,典型的是管理服务器端资源。例如,可以编写一个定制的init()用于一次装入GIF图像,改进Servlet返回GIF图像和含有多个客户机请求的性能。另一个示例是初始化数据库连接。默认的init()方法设置了Servlet的初始化参数,并用它的ServletConfig对象参数来启动配置,因此所有覆盖init()方法的Servlet应调用super.init()以确保仍然执行这些任务。在调用service()方法之前,应确保已完成了init()方法。

2.service()方法

service()方法是Servlet的核心。每当一个客户请求一个HttpServlet对象,该对象的service()方法就要被调用,而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。在HttpServlet中已存在service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。例如,如果HTTP请求方法为GET,则默认情况下就调用doGet()。Servlet应该为Servlet支持的HTTP方法覆盖do功能。因为HttpServlet.service()方法会检查请求方法是否调用了适当的处理方法,不必覆盖service()方法,只需覆盖相应的do方法即可。

当一个客户通过HTML表单发出一个HTTP POST请求时,doPost()方法被调用。与POST请求相关的参数作为一个单独的HTTP请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用doPost()方法。

当一个客户通过HTML表单发出一个HTTP GET请求或直接请求一个URL时,doGet()方法被调用。与GET请求相关的参数添加到URL的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用doGet()方法。

Servlet的响应可以是下列类型:

一个输出流,浏览器根据它的内容类型(如text/HTML)进行解释。

一个HTTP错误响应,重定向到另一个URL、Servlet、JSP。

3.destroy()方法

destroy()方法仅执行一次,在服务器停止且卸装Servlet时执行该方法。典型的是将Servlet作为服务器进程的一部分来关闭。默认的destroy()方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源。例如,如果Servlet在运行时会累计统计数据,则可以编写一个destroy()方法,该方法用于在未装入Servlet时将统计数字保存在文件中。另一个示例是关闭数据库连接。

当服务器卸载Servlet时,将在所有service()方法调用完成后,或在指定的时间间隔过后调用destroy()方法。一个Servlet在运行service()方法时可能会产生其他的线程,因此请确认在调用destroy()方法时,这些线程已终止或完成。

4.GetServletConfig()方法

GetServletConfig()方法返回一个ServletConfig对象,该对象用来返回初始化参数和ServletContext。ServletContext接口提供有关Servlet的环境信息。

5.GetServletInfo()方法

GetServletInfo()方法是一个可选的方法,它提供有关Servlet的信息,如作者、版本和版权。

当服务器调用Sevlet的Service()、doGet()和doPost()这3个方法时,均需要"请求"和"响应"对象作为参数。"请求"对象提供有关请求的信息,而"响应"对象提供了一个将响应信息返回给浏览器的通信途径。javax.servlet软件包中的相关类为ServletResponse和ServletRequest,而javax.servlet.http软件包中的相关类为HttpServletRequest和HttpServlet Response。Servlet通过这些对象与服务器通信并最终与客户机通信。Servlet能通过调用"请求"对象的方法获知客户机环境、服务器环境的信息和所有由客户机提供的信息。Servlet可以通过调用"响应"对象的方法发送响应,该响应是准备发回客户机的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值