资源预览内容
第1页 / 共42页
第2页 / 共42页
第3页 / 共42页
第4页 / 共42页
第5页 / 共42页
第6页 / 共42页
第7页 / 共42页
第8页 / 共42页
第9页 / 共42页
第10页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第5章 Servlet编程 Servlet是Java Web程序的核心。JSP和几乎所有的 Java Web框架(如Struts、Webwork)在底层的实现 都会看到Servlet的影子。因此,充分了解Servlet的原 理和使用方法,对于以后学习Struts等Web框架将起 到非常大的帮助。本章我们将为大家介绍Servlet的 基础知识,并通过具体的示例介绍Servlet的强大功 能。5.1 Servlet基础 Servlet在本质上就是Java类。编写Servlet需要遵循 Java的基本语法,但是与一般Java类所不同的是。 Servlet是只能运行在服务器端的Java类,而且必需遵 循特殊的规范,在运行的过程中有自己的生命周 期。5.1.1 什么是Servlet Servlet是运行于服务器端的、按照其自身规范编写 的Java应用程序。我们可以用图5.1来解释这个概 念。 Servlet的主要功能是用来接受、处理客户端请求, 并把处理结果返回到客户端显示。其作用过程如图 5.2所示。5.1.2 Servlet的生命周期 Servlet需要在特定的容器中才能运行,在这里所说的容器即 Servlet运行的时候所需的运行环境。一般情况下,市面上常见 的Java Web Server都可以支持Servlet,例如Tomcat、Resin、 Weblogic、WebSphere等,在本书中采用Tomcat作为Servlet的 容器,由Tomcat为Servlet提供基本的运行环境。 Servlet的生命周期指的是Servlet从被Web服务器加载到它被销 毁的整个生命过程。这个过程如图5.3所示。5.1.2 Servlet的生命周期 从图5.3中我们呢可以看出,Servlet生命周期的执行大致分为4个步 骤,如图5.4所示。 在以上几个阶段中,Servlet对外提供服务阶段是最重要的。 service()方法是编程人员真正要关心的方法。因为它才是Servlet真 正开始响应客户端请求,并且处理业务逻辑的方法。service()接收 到客户端请求后,再调用该Servlet的相应的方法去处理请求。所 以程序员在编写自己的Servlet时,一般只需要重写方法。在该方 法中去处理客户端请求,并把处理结果返回。5.2 简单Servlet开发配置示例 在这一节中我们主要应用Servlet编写一个HelloWorld程序,实 现向客户端浏览器中输出“HelloWorld”信息。 在系统中创建的第一个Servlet程序系统会为我们自动生成 web.xml配置文件,但是以后的Servlet程序就需要我们自己来配 置了。即一般情况下都需要在当前应用项目的web.xml配置文 件中对各个Servlet进行配置,其中web.xml文件的位置在当前项 目应用的WEB-INF文件夹下。我们就结合图5.8的示例来讲解 如何对Servlet进行配置,如图5.9所示。5.2 简单Servlet开发配置示例 总之,编写一个Servlet要经过以下三个步骤: (1)编写Servlet的功能代码,即实现功能的代码 类。 (2)把编译成功的Servlet功能代码类文件拷贝到当 前应用项目的WEB-INF/classes目录下。 (3)在当前应用项目的web.xml文件中对Servlet进行 配置,即在web.xml中添加配置信息。 经过这样三个步骤我们就可以通过浏览器访问这个 Servlet了。5.3 使用HttpServlet处理客户端请 求 HttpServlet是使用HTTP协议的Web服务器的Servlet 类,这个类已经被系统定义好。该类的一些方法, 如doGet()方法、doPost()方法等,提供了处理客户端 请求的接口。在实际编程中,程序员需要继承这个 类,并重写上述方法,去编写自己的Servlet。使用 重写后的方法,就可以完成对客户端请求进行处 理。5.3.1 处理Get请求doGet doGet()方法是HttpServlet类中用来处理Get请求的方 法。用户通过继承HttpServlet,重写doGet()方法,实 现对客户端的Get请求进行处理。要调用doGet()方法 ,必须在客户端的表单里指定请求的类型为Get。 doGet()方法的语法格式如图5.10所示。5.3.2 处理Post请求doPost doPost()是HttpServlet中用于处理Post请求的方法。如果要调用 doPost()方法,必须在表单中指定Post请求。doPost()方法与 doGet()方法的用法一般来说没什么区别,doGet()方法用于处 理http get请求,doPost()方法用于外理http post请求。至 于它们的不同,简单的说,get是通过http header来传输数据 ,有字数限制,而post则是通过http body来传输数据,没有 字数的限制。doPost()方法的语法格式如图5.14所示。5.3.2 处理Post请求doPost 下面我们来为大家介绍一下javax.servlet.http提供的HTTP Servlet应用编程接口。创建Servlet,需要扩展HttpServlet类, HttpServlet类包含init()、destroy()、service()等方法,其中init() 和destroy()方法是继承的。具体的方法及方法描述如表5.1所 示。 当服务器调用sevlet的Service()、doGet()和doPost()这三个方法 时,均需要“请求”和“响应”对象作为参数。“请求”对象提供有 关请求的信息,而“响应”对象提供了一个将响应信息返回给浏 览器的一个路径。方法名方法描述 init()方法服务器装入Servlet时执行。可以配置服务器,在启动服务器或客户机首次访问Servlet时装入 Servlet service()方法Servlet的核心。每当一个客户请求一个HttpServlet对象,该对象的service()方法就要被调用 ,而且传递给这 个方法一个“请求“(ServletRequest)对象和一个“响应“(ServletResponse)对象 作为参数destroy()方法在服务器停止且卸装Servlet时执行该方法。可以将Servlet作为服务器进程的一部分来关闭 GetServletConfig()方法GetServletConfig()方法返回一个ServletConfig对象,该对象用来返回初始化参数和 ServletContext。ServletContext接口提供有关servlet的环境信息 GetServletInfo()方法GetServletInfo()方法是一个可选的方法,它提供有关servlet的信息,如作者、版本、版权等5.4 JSP页面调用Servlet 在上面HelloWorld的示例程序中,我们直接在浏览器 中输入具体的地址进行访问。在实际的应用中,不 可能让用户在浏览器中直接输入Servlet的地址进行 访问。一般情况下,可以通过调用Servlet进行访问 ,在这里介绍通过提交表单和超链接两种方式调用 Servlet。5.4.1 通过表单提交调用Servlet 在通过提交表单调用Servlet的时候,只需要把表单 的action指向对应的Servlet即可。5.4.2 通过超链接调用Servlet 当用户有输入的内容需要提交给服务器时,我们可 以用表单来调用Servlet。如果在没有输入的数据内 容需要提交的情况下,我们可以直接通过超链接的 方式来调用Servlet,并对其传递参数。5.5 Servlet文件操作 在JSP的开发过程中,我们常常把相关内容存储为文 件。在Servlet中我们可以使用输入输出流实现对文 件的读写。同时,使用Servlet还可以很方便的实现 文件的下载操作。这一节我们就来学习如何实现 Servlet的文件操作。5.5.1 Servlet读取文件 我们举一个实例FileRead.java来读取一个文本文件 content.txt的内容,并且在页面上打印文件的内容。5.5.2 Servlet写文件 Servlet写文件的处理方法和读取文件的处理方法非 常类似,即把文件输入流换成文件输出流。我们也 可以来看一个写文件示例。5.5.3 Servlet下载文件 利用Servlet可以很方便地实现文件的下载,我们只 需要对服务器的响应对象response进行简单的设置即 可。5.6 Servlet的应用 Servlet是与HTTP协议紧密结合的,使用Servlet几乎 可以处理HTTP协议各个方面的内容,在本节的几个 示例程序中,将集中展示Servlet在HTTP方面的具体 应用。5.6.1 获取请求信息头部内容 当用户访问一个页面的时候,会提交一个HTTP请求 给服务器的Servlet引擎,在这个请求中包含了HTTP 文件的详细属性信息。我们可以应用 request.getHeaderNames()方法来获取请求信息头部内 容。5.6.2 获取请求信息 在上面的Servlet示例中,我们取出了HTTP文件头信 息,在Servlet中还可以很方便取出用户发出请求对 象自身的信息。这些信息是和用户的请求密切相关 的,例如用户提交请求所使用的协议,客户提交表 单的方法是POST还是GET等。5.6.3 获取参数信息 有关用户请求的参数信息,也可以通过Servlet来获 取。这种参数既包括以POST方法或者是GET方法提 交的表单,也包括直接使用超链接传递的参数。 Servlet都可以使用request.getParameter()方法取得这 些参数信息并且加以处理。5.6.4 Cookie操作 Cookie是一种在客户端保存信息的技术。读者在浏 览网页时可能会注意到这样的现象,如在打开某个 登录网页时,在第一次打开时,用户名文本框是空 的,当输入一个用户名,并成功登录后。在第二次 打开这个登录网页时,在第一次输入的用户名会被 自动填入这个用户名文本框,就算重启计算机后, 仍然如此。其实这就是Cookie所起的作用。5.6.4 Cookie操作 在Servlet中,使用java.servlet.http.Cookie类来封装一 个Cookie消息,在HttpServletResponse接口中定义了 一个addCookie方法来向浏览器发送Cookie消息(也 就是Cookie对象),在HttpServletRequest接口中定义 了一个getCookies方法来读取浏览器发送的Web服务 器的所有Cookie消息。Cookie类中定义了生成和提取 Cookie消息的各个属性的方法。Cookie类只有一个构 造方法,它的语法结构如图5.47所示。5.6.4 Cookie操作 Cookie类中的其他常用方法如表5.3所示。方法名方法描述getName方法用于获得Cookie的名称setValue和getValue方法分别用于设置和获得Cookie的值setMaxAge和getMaxAge方法分别用于设置和获得Cookie在客户机的有效时间 ,也就是在在客户机上的有效秒数setPath和getPath方法分别用于设置和获得当前Cookie的有效Web路径setDomain和getDomain方法分别用于设置和获得当前Cookie的有效域setComment和getComment方 法分别用于设置和返回当前Cookie的注释部分setVersion与getVersion方法分别用于设置和获得当前Cookie的协议 版本setSecure和getSecure方法分别用于设置和获得当前Cookie是否只能使用安全的协议传输 Cookie5.7 Session技术 session对象用来保存每个用户的用户信
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号