当前位置:文档之家› servlet技术简介

servlet技术简介

servlet技术简介
servlet技术简介

servlet技术简介

1.Servlet 是什么?

Servlet是使用Java Servlet 应用程序设计接口(API)及相关类和方法的Java 程序。除了 Java Servlet API,Servlet 还可以使用用以扩展和添加到 API 的 Java 类软件包。Servlet 在启用 Java 的 Web 服务器上或应用服务器上运行并扩展了该服务器的能力。Java servlet对于Web服务器就好象Java applet 对于Web浏览器。Servlet装入Web服务器并在Web服务器内执行,而applet

装入Web浏览器并在Web浏览器内执行。Java Servlet API 定义了一个servlet 和Java使能的服务器之间的一个标准接口,这使得Servlets具有跨服务器平台的特性。

Servlet 通过创建一个框架来扩展服务器的能力,以提供在 Web 上进行请求和响应服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让 Servlet 建立起服务器返回给客户机的响应。当启动 Web 服务器或客户机第一次请求服务时,可以自动装入 Servlet。装入后, Servlet 继续运行直到其它客户机发出请求。Servlet 的功能涉及范围很广。例如,Servlet 可完成如下功能:

(1) 创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML页面。

(2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面(HTML 片段)。

(3) 与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。

(4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。例如,Servlet 可以是多参与者的游戏服务器。

(5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至applet的新连接,并将该连

接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下,applet也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准(如 IIOP)进行通信。

(6) 对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端包括(SSI)。

(7) 将定制的处理提供给所有服务器的标准例行程序。例如,Servlet 可以修改如何认证用户。

2.Servlet 的生命周期

Servlet 的生命周期始于将它装入 Web 服务器的内存时,并在终止或重新装入 Servlet 时结束。

(1) 初始化

在下列时刻装入 Servlet:

如果已配置自动装入选项,则在启动服务器时自动装入

在服务器启动后,客户机首次向 Servlet 发出请求时

重新装入 Servlet 时装入 Servlet 后,服务器创建一个 Servlet 实例并且调用 Servlet 的 init() 方法。在初始化阶段,Servlet 初始化参数被传递给Servlet 配置对象。

(2) 请求处理

对于到达服务器的客户机请求,服务器创建特定于请求的一个“请求”对象和一个“响应”对象。服务器调用 Servlet 的 service() 方法,该方法用于传递“请求”和“响应”对象。service() 方法从“请求”对象获得请求信息、处理该请求并用“响应”对象的方法以将响应传回客户机。service() 方法可以调用其它方法来处理请求,例如 doGet()、doPost() 或其它的方法。

(3) 终止

当服务器不再需要 Servlet, 或重新装入 Servlet 的新实例时,服务器会调用 Servlet 的 destroy() 方法。

3. Java Servlet API

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

javax.servlet 和 javax.servlet.http。可从sun公司的Web站点下载 Java Servlet 开发工具。下面主要介绍javax.servlet.http提供的HTTP Servlet 应用编程接口。

HTTP Servlet 使用一个 HTML 表格来发送和接收数据。要创建一个 HTTP Servlet,请扩展 HttpServlet 类,该类是用专门的方法来处理 HTML 表格的GenericServlet 的一个子类。 HTML 表单是由

标记定义的。表单中典型地包含输入字段(如文本输入字段、复选框、单选按钮和选择列表)和用于提交数据的按钮。当提交信息时,它们还指定服务器应执行哪一个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()这三个方法时,均需要“请求”和“响应”对象作为参数。“请求”对象提供有关请求的信息,而“响应”对象提供了一个将响应信息返回给浏览器的一个通信途径。javax.servlet 软件包中的相关类为ServletResponse和ServletRequest,而javax.servlet.http 软件包中的相关类为HttpServletRequest 和HttpServletResponse。Servlet 通过这些对象与服务器通信并最终与客户机通信。Servlet 能通过调用“请求”对象的方法获知客户机环境,服务器环境的信息和所有由客户机提供的信息。Servlet 可以调用“响应”对象的方法发送响应,该响应是准备发回客户机的。

4.2 创建HTTP Servlet

创建一个 HTTP Servlet,通常涉及下列四个步骤:

1. 扩展 HttpServlet 抽象类。

2. 重载适当的方法。]如覆盖(或称为重写)doGet() 或doPost()方法。

3. 如果有 HTTP 请求信息的话,获取该信息。用 HttpServletRequest 对象来检索 HTML 表格所

提交的数据或 URL 上的查询字符串。“请求”对象含有特定的方法以检索客户机提供的信息,有3个可用的方法:

getParameterNames(),

getParameter(),

getParameterValues()。

4. 生成 HTTP 响应。HttpServletResponse 对象生成响应,并将它返回到发出请求的客户机上。它

的方法允许设置“请求” 标题和“响应”主体。“响应”对象还含有getWriter() 方法以返回一个 PrintWriter 对象。使用 PrintWriter 的

print() 和 println() 方法以编写 Servlet 响应来返回给客户机。或者,直接使用out对象输出有关HTML文档内容。

一个servlet样例(ServletSample.java)如下:

import java.io.*;

import java.util.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class ServletSample extends HttpServlet { // 第一步:扩展HttpServlet 抽象类。

public void doGet (HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException { // 第二步:重写doGet()方法

String myName = ""; // 第三步:获取HTTP 请求信息

java.util.Enumeration keys = request.getParameterNames();

while (keys.hasMoreElements());

{

key = (String) keys.nextElement();

if (key.equalsIgnoreCase("myName"))

myName = request.getParameter(key);

}

if (myName == "")

myName = "Hello";

// 第四步:生成 HTTP 响应。

response.setContentType("text/html");

response.setHeader("Pragma", "No-cache");

response.setDateHeader("Expires", 0);

response.setHeader("Cache-Control", "no-cache");

out.println("Just a basic servlet");

out.println("");

out.println("

Just a basic servlet

");

out.println ("

" + myName + ", this is a very basic servlet that writes an HTML

page.");

out.println ("

For instructions on running those samples on your WebSphere应用服务器, "+

"open the page:");

out.println("

http://https://www.doczj.com/doc/be18668614.html,/IBMWebAs/samples/i ndex.aspl
");

out.println("where https://www.doczj.com/doc/be18668614.html, is the hostname of your WebSphere应用服

务器.");

out.println("");

out.flush();

}

}

上述ServletSample类扩展 HttpServlet 抽象类、重写doGet()方法。在重写的doGet()方法中,获取HTTP 请求中的一个任选的参数(myName),该参数可作为调用的 URL 上的查询参数传递到 Servlet。使用示例如下:

https://www.doczj.com/doc/be18668614.html,/servlet/ServletSample?myname=Michael。

*调用 Servlet

要调用 Servlet 或 Web 应用程序,请使用下列任一种方法:由 URL 调用、在

标记中调用、在 标记中调用、在 JSP 文件中调用、在 ASP 文件中调用。

1. 由 URL 调用 Servlet

这里有两种用 Servlet 的 URL 从浏览器中调用该 Servlet 的方法:

(1) 指定 Servlet 名称:当用 WebSphere应用服务器管理器来将一个Servlet 实例添加(注册)到服务器配置中时,必须指定“Servlet 名称”参数的值。例如,可以指定将hi作为HelloWorldServlet 的 Servlet 名称。要调用该 Servlet,需打开 https://www.doczj.com/doc/be18668614.html,/servlet/hi。也可以指定Servlet 和类使用同一名称(HelloWorldServlet)。在这种情况下,将由https://www.doczj.com/doc/be18668614.html,/servlet/HelloWorldServlet 来调用 Servlet 的实例。

(2) 指定 Servlet 别名:用 WebSphere应用服务器管理器来配置

Servlet 别名,该别名是用于调用 Servlet 的快捷 URL。快捷 URL 中不包括Servlet 名称。

2. 在 标记中指定 Servlet

可以在 标记中调用 Servlet。HTML 格式使用户能在 Web 页面(即从浏览器)上输入数据,并向 Servlet 提交数据。例如:

    AM

    FM

(用于放置文本输入区域的标记、按钮和其它的提示符。)

ACTION 特性表明了用于调用 Servlet 的 URL。关于METHOD 的特性,如果用户输入的信息是通过 GET 方法向 Servlet 提交的,则 Servlet 必须优先使用 doGet() 方法。反之,如果用户输入的信息是通过 POST 方法向 Servlet 提

交的,则 Servlet 必须优先使用 doPost() 方法。使用 GET 方法时,用户提供的信息是查询字符串表示的 URL 编码。无需对 URL 进行编码,因为这是由表单完成的。然后 URL 编码的查询字符串被附加到 Servlet URL 中,则整个 URL 提交完成。URL 编码的查询字符串将根据用户同可视部件之间的交互操作,将用户所选的值同可视部件的名称进行配对。例如,考虑前面的 HTML 代码段将用于显示按钮(标记为 AM 和 FM),如果用户选择 FM 按钮,则查询字符串将包含name=value 的配对操作为broadcast=fm。因为在这种情况下,Servlet 将响应HTTP 请求,因此 Servlet 应基于 HttpServlet 类。Servlet 应根据提交给它的查询字符串中的用户信息使用的 GET 或 POST 方法,而相应地使用 doGet() 或 doPost() 方法。

3.在 标记中指定 Servlet

当使用 标记来调用 Servlet 时,如同使用

标记一样,无需创建一个完整的 HTML 页面。作为替代,Servlet 的输出仅是 HTML 页面的一部分,且被动态嵌入到原始 HTML 页面中的其它静态文本中。所有这些都发生在服务器上,且发送给用户的仅是结果 HTML 页面。建议在 Java 服务器页面(JSP)文件中使用 标记。请参阅有关 JSP 技术

原始 HTML 页面中包含 标记。 Servlet 将在这两个标记中被调用,且 Servlet 的响应将覆盖这两个标记间的所有东西和标记本身。如果用户的浏览器可以看到 HTML 源文件,则用户将看不到 标记。要在 Domino Go Webserver 上使用该方法,请启用服务器上的服务器端包括功能。部分启用过程将会涉及到添加特殊文件类型 SHTML。当Web 服务器接收到一个扩展名为 SHTML 的 Web 页面请求时,它将搜索

标记。对于所有支持的 Web 服务器,WebSphere应用服务器将处理 SERVLET 标记间的所有信息。下列 HTML 代码段显示了如何使用该技术。

使用 NAME 和 CODE 属性带来了使用上的灵活性。可以只使用其中一个属性,也可以同时使用两个属性。 NAME 属性指定了 Servlet 的名称(使用WebSphere应用服务器管理器配置的),或不带 .class 扩展名的 Servlet 类名。CODE 属性指定了 Servlet 类名。使用 WebSphere应用服务器时,建议指定 NAME 和 CODE,或当 NAME 指定了 Servlet 名称时,仅指定 NAME。如果仅指定了 CODE,则会创建一个 NAME=CODE 的 Servlet 实例。装入的 Servlet 将假设 Servlet 名称与 NAME 属性中指定的名称匹配。然后,其它 SHTML 文件可以成功地使用 NAME 属性来指定 Servlet 的名称,并调用已装入的 Servlet。NAME 的值可以直接在要调用 Servlet 的 URL 中使用。如果 NAME 和 CODE 都存在,且 NAME 指定了一个现有 Servlet,则通常使用 NAME 中指定的 Servlet。由于 Servlet 创建了部分 HTML 文件,所以当创建 Servlet 时,将可能会使用HttpServlet 的一个子类,并优先使用 doGet() 方法(因为 GET 方法是提供信息给 Servlet 的缺省方法)。另一个选项是优先使用 service() 方法。另外,CODEBASE 是可选的,它指定了装入 Servlet 的远程系统的 URL。请使用WebSphere应用服务器管理器来从 JAR 文件配置远程 Servlet 装入系统。

在上述的标记示例中,initparm1 是初始化参数名,value 是该参数的值。可以指定多个“名称-值”对的集合。利用 ServletConfig 对象(被传递到Servlet 的 init() 方法中)的 getInitParameterNames() 和getInitParameter() 方法来查找参数名和参数值的字符串数组。在示例中,parm1 是参数名,并在初始化 Servlet 后被才被设置某个值。因为只能通过使用“请求”对象的方法来使用以 标记设置的参数,所以服务器必须调用 Servlet service() 方法,以从用户处传递请求。要获得有关用户的请求信息,请使用 getParameterNames()、getParameter() 和 getParameterValues() 方法。

初始化参数是持续的。假设一台客户机通过调用一个包含某些初始化参数的SHTML 文件来调用 Servlet。并假设第二台客户机通过调用第二个 SHTML 文件来调用同一个 Servlet,且该 SHTML 中未指定任何初始化参数。那么第一次调用 Servlet 时所设置的初始化参数将一直可用,并且通过所有其它 SHTML 文件而调用的所有后继 Servlet 都不会更改该参数。直到 Servlet 调用了

destroy() 方法后,才能重新设置初始化参数。例如,如果另一个 SHTML 文件指定了另一个不同的初始化参数值,虽然已此时已装入了 Servlet,但该值仍将被忽略。

4.在 JSP 文件中调用 Servlet

可以从 JavaServer 页面(JSP)文件中调用 Servlet。请参阅JSP技术部分。

5.在 ASP 文件中调用 Servlet

如果在 Microsoft Internet Information Server(IIS)上有遗留的 ASP 文件,并且无法将 ASP 文件移植成 JSP 文件时,可用 ASP 文件来调用 Servlet。在 WebSphere应用服务器中的 ASP 支持包括一个用于嵌入 Servlet 的ActiveX 控制,下面介绍ActiveX 控制AspToServlet 的方法和属性。

该方法说明如下:

(1) String ExecServletToString(String servletName);执行ServletName,并将其输出返回到一个字符串中。

(2) ExecServlet(String servletName);执行 ServletName,并将其输出直接发送至 HTML 页面。

(3) String VarValue(String varName);获得一预置变量值(其它格式)。

(4) VarValue(String varName, String newVal);设置变量值。变量占据的总大小应小于 0.5 个千字节(Kbyte)。且仅对配置文件使用这些变量。

其属性如下:

Boolean WriteHeaders;若该属性为真,则 Servlet 提供的标题被写入用户处。缺省值为假。

Boolean OnTest;若该属性为真,服务器会将消息记录到生成的 HTML 页面中。缺省值为假。

下列ASP 脚本示例是以 Microsoft Visual Basic Scripting(VBScript)书写的。

<%

' Small sample asp file to show the capabilities of the servlets and the ASP GateWay ...

%>

Starting the ASP->Java Servlet demo

<%

' Create a Servlet gateway object and initialize it ...

Set javaasp = Server.CreateObject("AspToServlet.AspToServlet")

' Setting these properties is only for the sake of demo.

' These are the default values ...

javaasp.OnTest = False

javaasp.WriteHeaders = False

' Add several variables ...

javaasp.VarValue("gal") = "lag"

javaasp.VarValue("pico")= "ocip"

javaasp.VarValue("tal") = "lat"

javaasp.VarValue("paz") = "zap"

javaasp.VarValue("variable name with spaces") = "variable value with spaces"

%>


Lets check the variables

<%

Response.Write("variable gal = ")

Response.Write(javaasp.VarValue("gal"))

%>


<%

Response.Write("variable pico = " & javaasp.VarValue("pico"))

%>



<%

galout = javaasp.ExecServletToString("SnoopServlet")

If javaasp.WriteHeaders = True Then

%>

Headers were written <%

Else

%>

Headers were not written <%

End If

Response.Write(galout)

%>

The End ...

tomcat工作原理深入详解——How Tomcat Works 中文版

How Tomcat Works中文版 介绍 概要 欢迎阅读《How Tomcat Works》这本书。这本书解剖了Tomcat4.1.12和5.0.18版本,解释了它的servlet容器的内部运行机制,那是一个免费的,开源的,最受欢迎的servlet容器,代号为Catalina。Tomcat是一个复杂的系统,由许多不同的组件构成。那些想要学习Tomcat运行机制的朋友大部分知道从何入手。这本书会提供一个蓝图,然后为每一个组件构造一个简化版本,使得可以更加容易的理解这些组件。在这之后才会对真实的组件进行解释。 你应该从这份简介开始阅读,因为它解释了这本书的结构,同时给你勾画了这个项目构造的简洁轮廓。“准备前提软件”这一节会给你一些指示,例如你需要下载什么样的软件,如何为你的代码创建目录结构等等。 本书为谁而作 这本书是为任何一个使用Java技术进行工作的人而准备的。 ?假如你是一个servlet/jsp程序员或者一个Tomcat用户,而且对一个servlet容器是如何工作这个问题你感兴趣的话,这本书就是为你准备 的。 ?假如你想加入Tomcat的开发团队的话,这本书就是为你准备的,因为你首先需要学习那些已存在的代码是如何工作的。 ?假如你从未涉及web开发,但你对一般意义上的软件开发感兴趣的话,你可以在这本书学到一个像Tomcat一样的大型项目是如何进行设计和开发 的。 ?假如你想配置和自定义Tomcat,你也应该读读这本书。

为了理解书中的讨论,你需要了解Java面向对象编程技术以及servlet编程。假如你对这些不熟悉的话,这里有很多书籍可以参考,包括Budi的《Java for the Web with Servlets, JSP, and EJB》。为了让这些材料更容易理解,每一章开始都会有便于理解所讨论主题的必要的背景资料介绍。 Servlet容器是如何工作的 servlet容器是一个复杂的系统。不过,一个servlet容器要为一个servlet 的请求提供服务,基本上有三件事要做: ?创建一个request对象并填充那些有可能被所引用的servlet使用的信息,如参数、头部、cookies、查询字符串、URI等等。一个 request对 象是javax.servlet.ServletRequest或 javax.servlet.http.ServletRequest 接口的一个实例。 ?创建一个response对象,所引用的servlet使用它来给客户端发送响应。 一个response对象 javax.servlet.ServletResponse或 javax.servlet.http.ServletResponse接口的一个实例。 ?调用servlet的service方法,并传入request和response对象。在这里servlet会从request对象取值,给 response写值。 当你读这些章节的时候,你将会找到关于catalina servlet容器的详细讨论。 Catalina架构图 Catalina是一个非常复杂的,并优雅的设计开发出来的软件,同时它也是模块化的。基于“Servlet容器是如何工作的”这一节中提到的任务,你可以把Catalina看成是由两个主要模块所组成的:连接器(connector)和容器(container)。在Figure I.1中的架构图,当然是简化了。在稍后的章节里边,你将会一个个的揭开所有更小的组件的神秘面纱。 现在重新回到Figure I.1,连接器是用来“连接”容器里边的请求的。它的工作是为接收到每一个HTTP请求构造一个request和response对象。然后它把流程传递给容器。容器从连接器接收到requset和response对象之后调用servlet的service方法用于响应。谨记,这个描述仅仅是冰山一角而已。这里容器做了相当多事情。例如,在它调用servlet的service方法之前,它必须加载这个servlet,验证用户(假如需要的话),更新用户会话等等。一个容器

Java基础入门教程(适合所有初学者)

第1章 Java语言概述与面向对象思想 1 1.1 Java语言的发展 1 1.1.1 Java语言的产生 1 1.1.2 Java语言的发展 1 1.2 Java语言的特点 2 1.3 面向对象与面向过程的差异 3 1.3.1 面向过程思想回顾 4 1.3.2 面向对象思想介绍 4 1.4 面向对象程序设计中的主要概念和特征 4 1.4.1 主要概念 5 1.4.2 主要特征 5 *1.5 Java与C++的差异 5 1.6本章小结5 习题 5 第2章 Java语言开发环境 6 2.1 JDK 6 2.1.1 JDK的简介6 2.1.2 JDK的构成6 2.1.3 JDK的使用6 2.2 IDE 8 2.2.1 IDE简介8 2.2.2 JBuilder 9 2.2.3 Eclipse 9 2.2.4 相关资源9 2.3 Project管理9 2.3.1 Project的含义9 2.3.2 可行的Project组织模式9 2.3.3 主要开发工具的Project目录10 2.4 本章小结10 习题10 第1章 Java语言概述与面向对象思想 1.1 Java语言的发展 1.1.1 Java语言的产生以介绍面向对象编程的基本概念、基本理论为重点,结合Java语言的语法规则、编程特点和设计思想、强调容易发生错误和编程应注意的地方,使学生能对Java 技术有一个总体了解,通过本课程学习,使学生掌握Java语言的基础知识,理解和掌握面向对象程序设计的基本思想,熟练地使用Java语言进行程序的编写、编译以及调试工作 上世纪90年代初期,Sun公司在研究一种适用于未来的智能设备的编程语言,该语言要具有一些新的特性,以避免C++的一些不足。 该语言起初命名为Oak,来源于语言作者Gosling办公室窗外的一棵橡树(Oak)。后来在注册时候遇到了冲突,于是就从手中的热咖啡联想到了印度尼西亚一个盛产咖啡的岛屿,中文名叫爪哇,Java语言得名于此。 随着Internet的迅速发展,Web应用日益广泛,Java语言也得到了迅速发展。1994年,Gosling

英文文献及翻译(Servlet和JSP技术简述)

An Overview of Servlet and JSP Technology Nagle ,Wiegley Abstract: Servlet program running in the server-side, dynamically generated Web page with the traditional CGI and many other similar compared to CGI technology, Java Servlet with a more efficient, easier to use, more powerful and has better portability, more savings to invest. . Keywords: JSP Technology;Servlet;HTTP server 1. A Servlet's Job Servlets are Java programs that run on Web or application servers, acting as a middle layer between requests coming from Web browsers or other HTTP clients and databases or applications on the HTTP server. Their job is to perform the following tasks, as illustrated in Figure 1-1. Figure 1-1Web middleware role 1.1 Read the explicit data sent by the client. The end user normally enters this data in an HTML form on a Web page. However, the data could also come from an applet or a custom HTTP client program. 1.2 Read the implicit HTTP request data sent by the browser. Figure 1-1 shows a single arrow going from the client to the Web server (the layer where servlets and JSP execute), but there are really two varieties of data: the explicit data that the end user enters in a form and the behind-the-scenes HTTP information. Both varieties are critical. The HTTP information includes cookies, information about media types and compression schemes the browser understands, and so on. 1.3 Generate the results. This process may require talking to a database, executing an RMI or EJB call, invoking a Web service, or computing the response directly. Your real data may be in a relational database. Fine. But your database probably doesn't speak HTTP or return results in HTML, so the Web browser can't talk directly to the database. Even if it could, for security reasons, you probably would not want it to. The same argument applies to most other applications.You need the Web middle layer to extract the results inside a document.

Java_Web总结

选择题: 1、Servlet类文件放置的位置是()。 A.WEB-INF/lib B.WEB-INF/servlet C.WEB-INF/web D.WEB-INF/classes 2、在JSP中,page指令的()属性用来引入需要的包或类。 A.extends B.import C.languge D.contentType 3、一个servlet源文件的后缀名是()。 A..jsp B..exe C..class D..java 4、J2EE中,JSP EL 表达式${user.loginName}的执行效果等同于()。 A.<% = user.getLoginName()%> B.<%user.getLoginName();%> C.<% = user.loginName%> D.<% user.loginName;%> 5、在Web容器中,以下哪个类的实例代表HTTP的请求()。 A.HttpRequest B.HttpServletRequest C.HttpServletResponse D.HttpPrintWriter 6、Web应用中,常用的会话跟踪方法不包括()。 A.URL重写B.Cookie C.隐藏表单域D.有状态HTTP协议 7、以下对PayServlet的定义正确的是()。 A.class PayServlet implements javax.servlet.servlet B.class PayServlet extends javax.servlet.GenericServlet C.class PayServlet extends javax.servlet.http.HttpServlet D.class PayServlet extends javax.servlet.ServletRequest 8、aa.jsp把请求转发给bb.jsp。aa.jsp在请求范围内存放了一个String类型的name 属性,bb.jsp如何获取该属性()。 A.<% String name=request.getAttribute("name"); %> B.<% String name=(String)request.getAttribute("name"); %> C.<% String name=request.getParameter("name") %> D.<% String name=(String)application.getAttribute("name") %> 9、在JSP页面中,作用域范围由小到大依次是()。

用 Servlet 进行文件上传的原理和实现

用Servlet 进行文件上传的原理和实现 Servlet 是用 Java 编写的、协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案。使用 Servlet 可以方便地处理在 HTML 页面表单中提交的数据,但 Servlet 的 API 没有提供对以 mutilpart/form-data 形式编码的表单进行解码的支持,因而对日常应用中经常涉及到到文件上传等事务无能为力。 如何用 Servlet 进行文件的上传,必须编程实现。 一、基本原理 通过 HTML 上载文件的基本流程如下图所示。 浏览器端提供了供用户选择提交内容的界面(通常是一个表单),在用户提交请求后,将文件数据和其他表单信息编码并上传至服务器端,服务器端(通常是一个 cgi 程序)将上传的内容进行解码了,提取出 HTML 表单中的信息,将文件数据存入磁盘或数据库。 二、各过程详解 A)填写表单并提交

通过表单提交数据的方法有两种,一种是 GET 方法,另一种是 POST 方法,前者通常用于提交少量的数据,而在上传文件或大量数据时,应该选用 POST 方法。在 HTML 代码中,在 标签中添加以下代码可以页面上显示一个选择文件的控件。 在页面中显示如下(可能随浏览器不同而不同) 可以直接在文本框中输入文件名,也可以点击按钮后弹出供用户选择文件的对话框。 B)浏览器编码 在向服务器端提交请求时,浏览器需要将大量的数据一同提交给 Server 端,而提交前,浏览器需要按照 Server 端可以识别的方式进行编码,对于普通的表单数据,这种编码方式很简单,编码后的结果通常是 field1=value2&field2=value2&…的形式,如name=aaaa&Submit=Submit。 这种编码的具体规则可以在 rfc2231 里查到,通常使用的表单也是采用这种方式编码的,Servlet 的 API 提供了对这种编码方式解码的支持,只需要调用 ServletRequest 类中的方法就可以得到用户表单中的字段和数据。 这种编码方式( application/x-www-form-urlencoded )虽然简单,但对于传输大块的二进制数据显得力不从心,对于传输这类数据,浏览器采用了另一种编码方式,即 "multipart/form-data"的编码方式,采用这种方式,浏览器可以很容易的表单内的数据和文件一起。这种编码方式先定义好一个不可能在数据中出现的字符串作为分界符,然后用它将各个数据段分开,而对于每个数据段都对应着 HTML 页面表单中的一个 Input 区,包括一个 content-disposition 属性,说明了这个数据段的一些信息,如果这个数据段的内容是一个文件,还会有Content-Type 属性,然后就是数据本身。

第八章 Servlet技术习题

第八章 Servlet技术 一、选择题 1.下面对Servlet、Applet的那一项描述错误?()A)Servelt与Applet相对应 B)Applet运行在客户端浏览器 C)Servlet运行在Web服务器端 D)Servlet和Applet不可以动态从网络加载2.下面哪一项不在Servlet的工作过程中?()A)服务器将请求信息发送至Servlet B)客户端运行Applet C)Servlet生成响应内容并将其传给服务器 D)服务器将动态内容发送至客户端 3.下列哪一项不是Servlet中使用的方法?()A)doGet() B)doPost() C)service() D)close() 4.关于MVC架构的缺点,下列的叙述哪一项是不正确的?() A)提高了对开发人员的要求 B)代码复用率低C)增加了文件管理的难度 D)产生较多的文件5.下面哪一项对Servlet、JSP的描述错误?()

A)HTML、Java和脚本语言混合在一起的程序可读性较差,维护起来较困难。 B)JSP技术是在Servlet之后产生的,它以Servlet 为核心技术,是Servlet技术的一个成功应用。 C)当JSP页面被请求时,JSP页面会被JSP引擎翻译成Servelt字节码执行 D)一般用JSP来处理业务逻辑,用Servlet来实现页面显示。 6.下面哪一项对Servlet、JSP的描述错误?()A)Servlet可以同其他资源交互,例如文件、数据库 B)Servlet可以调用另一个或一系列Servlet E)服务器将动态内容发送至客户端 E)Servlet在表示层的实现上存在优势 7.下面哪一项对Servlet描述错误?()A)Servlet是一个特殊的Java类,它必须直接或间接实现Servlet接口 B)Servlet接口定义了Servelt的生命周期方法C)当多个客户请求一个Servlet时,服务器为每一个客户启动一个进程 D)Servlet客户线程调用service方法响应客户的请求

外文文献及翻译----Servlet和JSP技术简述

毕业设计(论文) 外文文献翻译 专业 学生姓名 班级 学号 指导教师 XX 学院

外文资料名称:An Overview of Servlet and JSP Technology 外文资料出处:Internet 附件: 1.外文资料翻译译文 2.外文原文 指导教师评语: 签名: 年月日

Servlet和JSP技术简述 Nagle and Wiegley XX译 摘要:Servlet程序在服务器端运行,动态地生成Web页面与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。 关键字:JSP技术,Servlet,HTTP服务 1.1Servlet的功能 Servlets是运行在Web或应用服务器上的Java程序,它是一个中间层,负责连接来自Web浏览器或其他HTTP客户程序的请求和HTTP服务器上的数据库或应用程序。Servlet的工作是执行西门的任务,如图1.1所示。 图1.1Web中间件的作用 (1)读取客户发送的显式数据。 最终用户一般在页面的HTML表单中输入这些数据。然而,数据还有可能来自applet或定制的HTTP客户程序。 (2)读取由浏览器发送的隐式请求数据。 图1.1中显示了一条从客户端到Web服务器的单箭头,但实际上从客户端传送到Web服务器的数据有两种,它们分别为用户在表单中输入的显式数据,以及后台的HTTP信息。两种数据都很重要。HTTP信息包括cookie、浏览器所能识别的媒体类型和压缩模式等。 (3)生成结果。 这个过程可能需要访问数据库、执行RMI或EJB调用、调用Web服务,或者直接计算得出对应的响应。实际的数据可能存储在关系型数据库中。该数据库可能不理解HTTP,或者不能返回HTML形式的结果,所有Web浏览器不能直接与数据库进行会话。即使它能够做到这一点,为了安全上的考虑,我们也不希望让它这么做。对应大多数

JAVAWEB经验总结之SERVLET API

基本类和接口 一、javax.servlet.Servlet接口 servlet抽象集是javax.servlet.Servlet接口,它规定了必须由Servlet类实现由servlet引擎识别和管理的方法集。 Servlet接口的基本目标是提供生命期方法init()、service()和destroy()方法。 servlet接口中的方法 void init(ServletConfit config)throws ServletException在servlet被载入后和实施服务前由servlet引擎进行?次性调用。如果init()产生溢出UnavailableException,则servle退出服务。ServletConfig getServletConfig()返回传递到servlet的init()方法的ServletConfig对象void 果 String getServletInfo()返回描述servlet的一个字符串 void destory()当servlet将要卸载时由servlet引擎调用service(ServletRequest request, ServletResponse response)throws ServletException,IOException处理request对象中描述的请求,使用response对象返回请求结 二、javax.servlet.GenericServlet类(协议无关版本) GenericServlet是一种与协议无关的servlet,是一种跟本不对请求提供服务的servlet,而是简单地从init()方法启动后台线程并在destory()中杀死。它可以用于模拟操作系统的端口监控进程。servlet API提供了Servlet接口的直接实现,称为GenericServlet。此类提供除了service()方法外所有接口中方法的缺省实现。这意味着通过简单地扩展GenericServlte可以编写一个基本的servlet。 除了Servlet接口外,GenericServlet也实现了ServletConfig接口,处理初始化参数和servlet 上下文,提供对授权传递到init()方法中的ServletConfig对象的方法。 GenericServlet类中的方法 void destory()编飞组成单词“destory”的一个注册入口 String getInitParameter(String name)返回具有指定名称的初始化参数值。通过凋用config.getInitParameter(name)实现。 Enumeration getInitParameterNames()返回此serv]et已编码的所有初始化参数的?个枚举类型值。调用config.getInitParameterNames()获得列表。如果未提供初始化参数,则返回?个空的枚举类型值(但不是null) ServletConfig getServletConfig()返回传递到init()方法的ServletConfig对象ServletContext getServletContext()返回在config对象中引用的ServletContext String getServletInfo()返回空字符串 void init(ServletConfig config)throws ServletException在一实例变量中保存config对象。编写组成单词“init”的注册入口,然后调用方法init() void init()throws ServletException可以被跳过以处理servlet初始化.在config对象被保存后init(ServletConfig config)的结尾处自动被调用.servlet作者经常会忘记调用super.init(config) void log(String msg)编写注册servlet的入口.为此调用servlet上下文的log()方法.servlet的名字被加到消息文本的开头。 void log(String msg,Throwable t)编写一个入口和servlet注册的栈轨迹。此方法也是ServletContext中相应方法的一个副本。 abstract void service(Request request,Response response)throws ServletException,IOException 由servlet引擎调用为请求对象描述的请求提供服务。这是GenericServlet中唯一的抽象方法。因此它也是唯一必须被子类所覆盖的方法。 第1/7页

J2EE HttpServletRequest详解

ServletRequest详解 一个用来向服务器提供客户端请求信息的对象. servlet container产生一个ServletRequest,然后将它作为参数传递给servlet的service方法. Servlet可以提供如下数据:参数和对应值,属性,输入流. 实现ServletRequest的接口可以提供另外的协议有关的数据(例如,HttpServletRequest可以提供HTTP数据). 方法详解: Object getAttribute(String name): 以对象的形式返回指定的属性值,如果属性值不存在,则返回null. 属性值可以通过两种方法设置: servlet container可能设置属性,以便请求的特定信息可以被访问. 例如, 使用HTTPS发送的请求, javax.servlet.request.X509Certificate能够被用来查询客户端certificate信息. 属性同样可以使用setAttribute()方法进行设置. 这可以在调用RequestDispatcher之前将信息嵌入到request中. 属性的名字,应该同样遵循报名的传统. getAttributeNames(): 返回请求所有可用属性的枚举. 如果request没有可用的属性, 那么将返回空枚举. getCharacterEncoding(): 返回本请求中字符编码的名字. 如果请求没有指定字符编码,那么将返回null. void setCharacterEncoding(String env): 重写本请求所使用的字符编码. 本方法必须在读取请求参数或使用getReader()方法读取输入之前调用, 不然没有效果. int getContentLength(): 以字节的形式返回request body的长度并且made available by the input stream. 如果长度未知,将返回-1. 对于HTTPservlet, 其值和CGI变量CONTENT_LENGTH 值相同. String getContentType(): 返回request body的MIME类型. 如果类型未知, 返回null. 对于HTTP servlet,其值和CGI 变量CONTENT_TYPE相同. ServletInputStream getInputStream(): 使用ServletInputStream返回请求体的二进制数据. 本方法或者getReader()可能被调用, 来读取请求体,但是不会同时使用. String getParameter(String name): 以字符串的形式返回请求参数的值,如果参数不存在,返回null, 请求参数是请求发送的而外信息, 对于HTTP servlet, 参数包含在查询字串(query string)或发送的表格数据中. 应当确定参数只有一个值的时候才使用本方法. 如果参数可能有多个值,硬挨使用getParameterValues(https://www.doczj.com/doc/be18668614.html,ng.String) 如果你对有多个值的参数使用本方法, 返回的值和getParameterValues方法返回数组的第一个值相同. 如果参数是在请求体中发送的(当使用HTTP POST方法的时候, 会出现这中情况), 通过getInputStream()或getReader()直接读取body,将会干扰本方法的执行. Enumeration getParameterNames(): 返回请求中所有参数名的包含字符串数据的枚举, 如果请求没有参数, 本方法返回空枚举. String[] getParameterValues(String name): 返回给定参数的所有值. 如果参数不存在,返回null. 如果参数只有一个值, 数组长度为1. Map getParameterMap(): 返回请求所有参数的映射. String getProtocol(): 以protocol/majorVersion.minorVersion的格式返回请求使用的协议. 该方法返回的值和CGI变量SERVER_PROTOCOL的值相同.

web技术应用基础应用复习

w e b技术应用基础应用 复习 文档编制序号:[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]

填空题 1.JSP把Java作为默认的脚本语言. 2.HTTP的中文含义是超文本传输协议,它的作用是用于传输超文本标记语言 编写的文件。 3.网站一般分为三层,分别是用户界面交互层,应用程序层,数据库层。 4.Servlet的生命周期可以分为4个阶段:载入,初始化,执行,删除(销 毁。 5.在JSP文件中使用〈!————〉对HTML文本进行注释,使用〈%———— %〉符号对JSP语句进行注释。 6.JSP页面在使用Jag标记来调用一个标签文件之前,必须使用Taglib指令 标记引入该Web服务目录下的标记库。 7.在JSP中当执行了查询结果保存在Resultset对象中。 8.在JSP中,连接数据库的方式通常有两种:一种是通过JDBC驱动程序连 接;另一种是通过JDBC-ODBC桥连接。 9.HTML是超文本标记语言,作用是WWW页面内容的格式进行说明。在HTML中 加入CSS的方法主要有嵌入式样式表,内联式样式表,外联式样式表。 10.Request对象的作用是表示客户端对网页的请求,并使用HTTP协议处理 客户端的请求,一个常用的方法是getParameter();其作用为设置作为响应生成内容的类型和字符编码。 11.Reponse对象的作用是处理jsp生成的响应发送给客户端: setContentType(),其作用为设置作为响应生成内部的类型和字符编码。 12.JSP中的五个常见内建对象是out: application: request:reponse:session 13.Servlet中的4个常用方法分别是init():doGet():doPost():destor() 14.在JSP页面中显示用户信息的两种方法是()和〈%= %〉 15.Servlet中实现页面跳转的两种方法是()和().forward() 16.JSP开发网站的两种模式分为Jsp+javabean和jsp+javabean+servlet 17.一个JSP页面可由5种元素组合而成,分别是普通的HTML.标记,JSP标 记,JAVA程序片,JAVA表达式和变量和方法的声明。

第八章 Servlet技术习题

第八章Servlet技术 一、选择题 1.下面对Servlet、Applet的那一项描述错误?() A)Servelt与Applet相对应 B)Applet运行在客户端浏览器 C)Servlet运行在Web服务器端 D)Servlet和Applet不可以动态从网络加载 2.下面哪一项不在Servlet的工作过程中?() A)服务器将请求信息发送至Servlet B)客户端运行Applet C)Servlet生成响应内容并将其传给服务器 D)服务器将动态内容发送至客户端 3.下列哪一项不是Servlet中使用的方法?() A)doGet() B)doPost() C)service() D)close() 4.关于MVC架构的缺点,下列的叙述哪一项是不正确的?() A)提高了对开发人员的要求B)代码复用率低 C)增加了文件管理的难度D)产生较多的文件 5.下面哪一项对Servlet、JSP的描述错误?() A)HTML、Java和脚本语言混合在一起的程序可读性较差,维护起来较困难。 B)JSP技术是在Servlet之后产生的,它以Servlet为核心技术,是Servlet技术的一个成功应用。 C)当JSP页面被请求时,JSP页面会被JSP引擎翻译成Servelt字节码执行 D)一般用JSP来处理业务逻辑,用Servlet来实现页面显示。 6.下面哪一项对Servlet、JSP的描述错误?() A)Servlet可以同其他资源交互,例如文件、数据库 B)Servlet可以调用另一个或一系列Servlet E)服务器将动态内容发送至客户端 E)Servlet在表示层的实现上存在优势 7.下面哪一项对Servlet描述错误?() A)Servlet是一个特殊的Java类,它必须直接或间接实现Servlet接口 B)Servlet接口定义了Servelt的生命周期方法 C)当多个客户请求一个Servlet时,服务器为每一个客户启动一个进程 D)Servlet客户线程调用service方法响应客户的请求 8.下面哪一项对Servlet描述错误?() A)Servlet是一个特殊的Java类,它必须直接或间接实现Servlet接口 B)Servlet接口定义了Servelt的生命周期方法 C)当多个客户请求一个Servlet时,服务器为每一个客户启动一个进程 D)Servlet客户线程调用service方法响应客户的请求 9.下面Servlet的哪个方法载入时执行,且只执行一次,负责对Servlet进行初始化。()A)service() B)init() C)doPost() D)destroy()

java开发技术总结

数据库 oracle-->数据库管理系统-->SQL、PL/SQL-->Java(JDBC+SQL) DBA,数据库编程程序员 1.概念导论 1)什么是数据库 有组织和结构存储数据。可以存储 字符、字节、图形、图像等类型数据 DB(数据库):数据集合 DBMS(数据库管理系统):对数据集合进行管理和操作的软件 --Oracle --DB2 --MySQL --SQLSERVER JDBC 1.什么是JDBC 全称Java DataBase Connection,Java数据库访问。 JDBC是Java访问数据库的一项技术 JDBC是SUN推出的Java访问数据库的一套标准。由一系列接口构成。 各个数据库厂商负责提供JDBC接口API的实现包。 开发者只需要掌握JDBC接口的使用,就可以实现对各种数据库的操作,不需要了解开发商的实现类。 XML 1、什么是xml(xtendsible markup language可扩 展的标记语言)? 1)定义 基于文本的通用的数据保存格式。 (1)通用的点的坐标 Point类point对象(x=10,y=20) a,序列化 b,数据库表 c,文件 ... (2)数据格式 10 20

HTML 知识准备 1、分层:表现层:UI界面(DOS界面、桌面类型、web类型) 业务层: 数据层:文件、Oracle数据库 2、Web类型的应用程序----B/S类型 打开Browser,输入URL,浏览器将请求发送到服务器 服务器得到请求,分析,返回响应 浏览器得到响应,解析(翻译),显示为页面 3、web学习阶段 客户端技术:HTML+CSS+Javascript---Web基础 服务器端技术:JSP、PHP、https://www.doczj.com/doc/be18668614.html, 4、web基础的课程 HTML:页面的创建 CSS:页面的外观 JavaScript:页面的动态效果和交互行为--3 一:HTML概述 1、超文本标记语言:一种编写页面的纯文本的标记语言,文件以.html或者.htm为后缀,依靠浏览器运行显示----解释性的语言 2、标记:一些用<>括起来的内容,特殊的显示 3、主流浏览器:IE/Firefox/Chrome/ 4、浏览器兼容性:符合标准规范,具体问题 CSS 一:CSS概述 1、CSS:级联样式表(层叠样式表) 2、特征:为页面定义外观的语言,实现内容和表现的分离,多个样式可以合为一个,如果冲突,以优先级为准 二:基础语法 1、语法:属性名称:值;属性名称:值;比如--color:red; 2、如何应用 方式一(内联方式):<元素style=""/>---将样式直接定义在元素的style属性里 方式二(内部样式表):在页面的head里的style里定义样式 方式三(外部样式表):定义一个单独的.css的文件(定义样式);然后,在页面的head里用link引入---推荐方式 3、外部样式表的优点:实现内容和表现的分离,提高代码的可重用性和可维护性

jsp和servlet文献参考

[1]孙卫琴,李洪成.《Tomcat 与JSP Web 开发技术详解》.电子工业出版社,2003年6月:1-205 [2]BruceEckel.《JSP编程思想》. 机械工业出版社,2003年10月:1-378 [3]FLANAGAN.《JSP技术手册》. 中国电力出版社,2002年6月:1-465 [4]孙一林,彭波.《JSP数据库编程实例》. 清华大学出版社,2002年8月:30-210 [5]LEE ANNE PHILLIPS.《巧学活用HTML4》.电子工业出版社,2004年8月:1-319 [6]飞思科技产品研发中心.《JSP应用开发详解》.电子工业出版社,2003年9 月:32-300。 [7]耿祥义,张跃平.《JSP实用教程》. 清华大学出版社,2003年5月1日:1-354 [8]孙涌.《现代软件工程》.北京希望电子出版社,2003年8月:1-246 [9]萨师煊,王珊.《数据库系统概论》.高等教育出版社,2002年2月:3-460 [10]Brown等.《JSP编程指南(第二版)》. 电子工业出版社,2003年3月:1-268 [11]清宏计算机工作室.《JSP编程技巧》. 机械工业出版社, 2004年5月:1-410 [12]朱红,司光亚.《JSP Web编程指南》.电子工业出版社, 2001年9月:34-307 [13]赛奎春.《JSP工程应用与项目实践》. 机械工业出版社, 2002年8月:23- [1] [美]Walter Savitch. Absolute Java[M].北京:电子工业出版社,2005. [2] 计磊,李里,周伟.J2EE整合应用案例[M].北京:人民邮电出版社,2007. [3] 王虎,张俊.管理信息系统[M].武汉:武汉理工大学出版社,2004.7. [4] 启明工作室编著.MIS系统开发与应用[M].北京:人民邮电出版社,2005.1. [5] 王珊,陈红.数据库系统原理教程[M].北京:清华大学出版社,2004.6. [6] 方睿,刁仁宏,吴四九编著.网络数据库原理及应用[M].四川:四川大学出版社,2005.8. [7] 耿祥义,张跃平编著.JAVA2实用教程(第二版)[M].北京:清华大学出版社,2004.11. 1] 俞传正.基于博客的个人知识管理平台研究[D].天津:天津师范大学,2006. [2] 陈明.Blog、Wiki在协作学习中的应用研究[D].武汉:华中师范大学, 2006. [3] 郭华伟.基于内容聚合BLOG学习平台的辅助教学研究与实践[D].北京: 首都师范大学,2006.

Java_Servlet入门教程

教学活动首页 基本内容 第 7 章 Java Servlet 教学目的与要求:通过本章的学习让学生了解如何用 servlet 读写文件,用 servlet 访问数据库;理解servlet 工作原理,servlet共享变量的使用;掌握编译和安装 servlet,通过 JSP 页面调用 servlet,HttpServlet 类,掌握会话管理。 教学内容: 7.1 servlet 工作原理 7.2 编译和安装 servlet 7.3 通过 JSP 页面调用 servlet 7.4 servlet共享变量 7.5 HttpServlet 类 7.6 用 servlet 读写文件 7.7 用 servlet 访问数据库 7.8 会话管理 教学基本要求: 了解:用 servlet 读写文件,用 servlet 访问数据库 理解:servlet 工作原理,servlet共享变量 掌握:编译和安装 servlet,通过 JSP 页面调用 servlet,HttpServlet 类,会话管理 教学重点教学难点: servlet 工作原理,编译和安装 servlet,通过 JSP 页面调用 servlet,HttpServlet 类,会话管理 教学方法: 教学手段:多媒体教学和计算机程序演示 教学小结:(见教学进程) 作业与思考:见课后习题 课后记载:

教学进程 第7章 Java Servlet 我们已经知道,SUN公司以Java Servlet为基础,推出了Java Server Page。JSP提供了Java Servlet的几乎所有好处,当一个客户请求一个JSP页面时,JSP引擎根据JSP页面生成一个Java文件,即一个servlet。这一章,将对servlet做一个较详细的介绍,这不仅对于深刻理解JSP有一定的帮助,而且通过学习servlet,还能使我们选择使用 JSP+javabeans+servlet的模式来开发我们的Web应用程序。 我们已经知道,用JSP支持JavaBeans这一特点,可以有效的管理页面的静态部分和页面的动态部分。另外,我们也可以在一个JSP页面中调用一个servlet完成动态数据的处理,而让JSP页面本身处理静态的信息。因此,开发一个Web应用有两种模式可以选择: (1) JSP+javabeans (2) JSP+javabeans+servlet 7.1 Servlet工作原理 servlet由支持servlet的服务器:servlet引擎,负责管理运行。当多个客户请求一个servlet时,引擎为每个客户启动一个线程而不是启动一个进程,这些线程由servlet引擎服务器来管理,与传统的CGI为每个客户启动一个进程相比较,效率要高的多。 7.1.1 Servlet 的生命周期 学习过Java 语言的人对Java Applet(Java小应用程序)都很熟悉,一个Java Applet 是java.applet.Applet类的子类,该子类的对象由客户端的浏览器负责初始化和运行。servlet的运行机制和Applet类似,只不过它运行在服务器端。一个servlet是javax.servlet 包中HttpServlet类的子类,由支持servlet的服务器完成该子类的对象,即servlet的初始化。 Servlet的生命周期主要有下列三个过程组成: (1)初始化servlet。servlet第一次被请求加载时,服务器初始化这个servlet,即创建一个servlet对象,这对象调用init方法完成必要的初始化工作。 (2)诞生的servlet对象再调用service方法响应客户的请求。 (3)当服务器关闭时,调用destroy方法,消灭servlet对象。 init方法只被调用一次,即在servlet第一次被请求加载时调用该方法。当后续的客户请求servlet服务时,Web服务将启动一个新的线程,在该线程中,servlet调用service方法响应客户的请求,也就是说,每个客户的每次请求都导致service方法被调用执行。 7.1.2 init方法 该方法是HttpServlet类中的方法,我们可以在servlet中重写这个方法。 方法描述: public void init(ServletConfig config) throws ServletException servlet第一次被请求加载时,服务器初始化一个servlet,即创建一个servlet对象,这个对象调用init方法完成必要的初始化工作。该方法在执行时,servlet引擎会把一个

文本预览
相关文档 最新文档