第15章 Java Web编程 Web编程是Java语言尤其擅长的一个方面。在Java语言整个体系结构中,提供了Servlet和JSP技术支持Web开发。Servlet和JSP是相辅相成的两种技术,具有相同的基本原理,又保持了各自的灵活性。本章包括以下知识点。 Sevlet技术的主要内容(包括运行、生命周期、请求和应答、Cookie、会话) JSP技术的主要内容(包括指令、脚本元素、动作)
15.1 Servlet技术 Servlet是用Java编写的服务器端程序,由服务器端调用和执行。下面将从概述、运行、生命周期等几个方面对其进行详细介绍。
15.1.1 Servlet概述 Servlet是位于Web 服务器内部的服务器端Java应用程序,可以动态生成Web页面。与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。Servlet通过创建一个框架扩展服务器的能力,采用请求-应答模式提供Web服务。当客户机发送请求至服务器时,服务器将请求信息发送给Servlet,Servlet生成响应内容并将其传给Server,然后再由Server将响应返回给客户端。
15.1.2 运行Servlet Servlet需要运行在Web服务器环境下,由Web服务器加载执行。目前,已有多种商业服务器可供选择部署在生产环境中。而对于入门用户的开发环境来说,Web服务器通常可以选择Tomcat。有关Tomcat的安装、配置以及在Tomcat下发布Web应用等方面的内容请查看有关书籍,这里不再详细叙述。假设当前的开发环境中已经安装好Tomcat,并且能正常启动,访问端口为8080。下面介绍如何在Tomcat环境下运行Servlet。 1.编写Servlet程序 2.添加到Web应用 3.调用Servlet
15.1.3 Servlet生命周期 每个Servlet都有其创建、服务、消亡的过程,这些过程组成了Servlet的生命周期。Servlet存在于Servlet容器中,所以其生命周期也由Servlet容器进行管理。在javax. servlet. Servlet接口中,定义了一些与Servlet生命周期有关的方法。在生命周期的不同阶段,通过接口中的相应方法可以实现各种有针对性的操作。对于Servlet生命周期的不同阶段,下面分别进行介绍。 1.初始化 2.服务 3.消亡
15.1.4 请求和应答 处理客户端的请求并对其进行应答是Servlet的基本功能。在Servlet中,定义了HttpServletRequest和HttpServletResponse接口分别用来表示请求和应答。下面分别对其进行详细介绍。 1.请求 2.应答
15.1.5 Cookie Cookie是一种能够让服务器将少量数据储存到客户端本地的一种技术。在客户端与服务器的交互过程中,服务器通过浏览器将体积很小的纯文本信息发送给客户端,在客户端本地以Cookie的形式保存。Cookie主要用于记录用户访问过的网页相关信息,如用户ID、密码、浏览过的网页、停留的时间等。用户以后访问同一个Web服务器时,浏览器会把它们原样发送给服务器,从而方便用户的访问。 在Java语言中,javax.servlet.http包中定义了Cookie类,该类包含了操作Cookie相关信息的各种方法。
15.1.6 会话 Sevlet的HTTP会话是基于Cookie或者URL重写机制的。在具体实现时,HTTP会话能够自动采取适用的实现策略。如果客户端浏览器支持Cookie,则使用Cookie;如果浏览器不支持Cookie或者Cookie功能被关闭,则自动使用URL重写方法。Sevlet提供了专门的应用程序接口HttpSession API来实现HTTP会话机制。开发者无需关心细节问题,API为其提供了可以方便管理会话信息的各种方法。 在Servlet中,定义了HttpSession接口用于表示会话。会话的使用主要包括创建、使用和关闭三个方面,下面分别进行介绍。 1.创建会话 2.使用会话 3.关闭会话
15.2 JSP技术 JSP是一种基于Java语言的动态网页开发技术。JSP文件在运行时最终都要转换为Servlet,然后在服务器端执行。下面将从概述、指令、脚本元素、动作等几个方面对其进行详细介绍。
15.2.1 JSP概述 Java Server Pages简称JSP,是由Sun公司组织开发的一种动态网页制作技术。该技术以HTML和Java语言为基础,能够方便、快捷的构建动态页面。JSP页面是在传统的HTML页面中加入了Java代码和JSP标签,页面文件的扩展名为.jsp。使用JSP技术构建动态网页的好处是使得内容的生成与显示进行分离。另外,JSP技术还提高了软件的复用程度,JSP标签的使用使页面代码更加简洁。 JSP本身定义了一些内置对象,不需要声明,直接可以在JSP页面中使用。
15.2.2 JSP指令 JSP指令用于提供JSP页面生成的Servlet类的全局结构信息,如引入的包、错误处理、引入标签库等。JSP指令的一般语法格式如下所示。 <%@ directive {attribute=”value”}%> 其中,参数directive为指令名称。参数attribute为该指令的属性名称,value为属性值。该形式(attribute=”value”)的值对可以包含多个,中间用空格隔开。 在JSP中,共包括三种指定:page、include、taglib。下面分别进行介绍。 1.page指令 2.include指令 3.taglib指令
15.2.3 JSP脚本元素 JSP脚本元素属于JSP页面的程序代码部分,可以直接包含符合java语法的java语言代码。JSP脚本元素主要包括三种格式:声明、表达式、脚本。对这三部分内容,下面分别进行介绍。 1.声明 2.表达式 3.脚本
15.2.4 JSP动作 JSP动作采用基于XML的语法格式,用来影响生成的Servlet的输出流。使用JSP动作,可以在JSP页面中创建、使用对象,动态地插入文件以及请求重定向等。JSP动作包括主要包括useBean、setProperty、getProperty、include、forward、plugin。 1.<jsp:useBean>动作 2.<jsp:setProperty>动作 3.<jsp:getProperty>动作 4.<jsp:include>动作 5.<jsp:forward>动作 6.<jsp:plugin>动作
15.3 上机实践 1.编写程序,用Servlet实现向客户端输出10个“hello!”字符串的功能。 15.3 上机实践 1.编写程序,用Servlet实现向客户端输出10个“hello!”字符串的功能。 2.用JSP实现一个简单的计数器,可以统计页面的访问次数。
15.4 小结 本章介绍了使用Servlet和JSP技术进行Web开发的基础知识。具体介绍了有关Sevlet的运行、生命周期、请求和应答、Cookie、会话,JSP中的指令、脚本元素、动作。在本书的第十八章将专门给出一个Java Web编程的综合实例。其中,Servlet和JSP技术的综合使用是本章的重点和难点。为了更好的掌握该Java语言Web开发技术,读者可以在学习本章的基础上结合其他教程进一步深入学习。下一章将介绍Java语言数据库编程的实例。
15.5 本章习题 1.Servlet与JSP有什么区别与联系? 2.举例说明Servlet保持用户状态的几种方式。 15.5 本章习题 1.Servlet与JSP有什么区别与联系? 2.举例说明Servlet保持用户状态的几种方式。 3.JSP指令都有哪些?举例说明如何使用。 4.在JSP中,include指令与include动作有什么区别?