Java Web编程实战宝典——JSP+Servlet+Struts 2+Hibernate+Spring+Ajax(光盘内容另行下载,地址见书封底)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-23 06:22:50

点击下载

作者:李宁,刘岩,张国平

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Java Web编程实战宝典——JSP+Servlet+Struts 2+Hibernate+Spring+Ajax(光盘内容另行下载,地址见书封底)

Java Web编程实战宝典——JSP+Servlet+Struts 2+Hibernate+Spring+Ajax(光盘内容另行下载,地址见书封底)试读:

前言

在前几年JSP+Servlet+JavaBean是采用Java语言进行Web开发的常用技术,但后来Struts 2框架逐渐流行起来,再后来Spring框架成了当仁不让的霸主,而Hibernate框架则成了持久层处理技术的代表。如果细细比较,可以发现这几种技术各有千秋,因此Struts 2+Spring+Hibernate的组合成了采用Java语言进行Web开发的主流。为了使读者尽快了解和掌握如何使用Struts 2+Spring+Hibernate 这3个框架整合的方式来开发Web应用系统,笔者花费了大量的时间来完成这本关于Struts 2 + Spring +Hibernate 整合的书。为了尽可能保证内容的准确和权威性,笔者查阅了大量的官方文档,并针对关键部分阅读了相应的源代码。

本书的写作目标就是力争让读者尽可能地掌握JSP+Servlet+JavaBean和Struts 2+ Spring+Hibernate这两个解决方案,以及相关框架整合的相关知识。本书以现实职场中经典模块和完整系统的项目为背景,通过多种前台技术和后台技术的不同组合,让读者深入地了解这些流行架构的使用方法。本书有何特色

1. 从基础开始,由浅入深

JSP/Servlet技术是Java Web技术的基础,很多初学者在学习SSH之前并没有很好地掌握该技术,因此本书考虑这个原因,在第1篇讲解了如何搭建Java Web开发环境,第2篇介绍了JSP+Servlet+JavaBean技术解决方案,使读者对Java Web开发技术有一个初步的了解。同时每一篇的章节按照由浅入深、循序渐进的顺序编排,从而可以使读者渐进式地学习本书的知识。

2. 各篇独立,内容完整

本书的每一篇都是相对独立的。如第3篇讲解了Struts 2的各种技术;第4篇讲解了Hibernate的主要技术,而且每一篇讲解的技术比较完整。这样就会给想学习SSH整合技术,但却未掌握SSH中的一项或几项技术的读者带来方便,至少不需要同时准备几本书,从而给读者节省了大量的时间和金钱。

3. 各章实例丰富,使读者更容易理解书中的知识

本书几乎在每一章都提供了大量的实例。这些实例充分展现了相关知识点的实现细节。读者可以在学习相关知识点后,通过上机实践这些例子来更深入地了解并掌握这些知识点。

4. 提供了完整的实例,使读者更进一步体会SSH开发模式的精髓

本书以现实职场中经典模块和完整系统的项目为背景,结合当前Java Web技术的主流开发技能需求,组织和编写最后两个完整的实例(网络硬盘和论坛系统)。这两个实例都采用了SSH模式进行开发。通过对这两个实例的深入研究,读者可以比较全面地掌握基于SSH模式的Web应用程序的开发步骤和开发方法,并可将实例中所采用的技术应用到自己的项目中。

5. 使用最新版本的开发工具和框架

本书所使用的开发工具和相关的框架在笔者写作本书时都是最新版本,如MyEclipse 10.6、Struts 2.3、Hibernate 4.1和Spring 3.2等。读者可以在学习SSH开发技术的同时,接触到目前最新版本的开发工具和框架。即使读者目前所使用的软件版本低于本书所使用的软件版本,也可以为未来的工作奠定基础。

6. 配有源代码与视频光盘,方便读者使用

为了方便读者实验本书提供的实例程序,特将所有的源代码都收录到了配书光盘中,以方便读者使用。另外,作者特别为本书录制了近20小时高清教学视频,将书中的一些相关操作直观地展示给读者,以达到更好的学习效果。另外,光盘中还赠送了大量的进阶学习视频和实例源代码。本书内容

本书共28章,分为5篇,结合目前最新软件开发环境MyEclipse 10.6,全方位介绍了关于Java Web开发的基本概念和各种解决方案。从搭建Java Web环境讲起,然后详细介绍了JSP+Servelt+JavaBean解决方案、Struts 2框架、Hibernate框架和Spring框架,最后结合笔者的经验,利用Struts 2+Spring+Hibernate解决方案讲解了两个完整项目。

第1篇 Web开发基础篇(第1~6章)

本篇首先介绍了Java Web环境的搭建过程,包括JDK 7、Eclipse 4、MyEclipse 10、Eclipse IDE for Java EE Developers和Tomcat 7等软件的下载、安装和配置,然后详细讲解了Windows平台下数据库MySQL软件和数据库客户端SQLyog软件的安装和配置过程。接着重点介绍了JSP+Servlet+JavaBean技术解决方案和通过该方案实现项目的过程。其中前者首先介绍了Web技术的发展历史和JSP的两种模型,然后详细介绍了Java Web的客户端技术、Servlet技术和JSP技术。为了便于读者掌握JSP+Servlet+JavaBean技术解决方案,最后以用户注册登录系统为例,详细讲解了其开发过程。

第2篇 Struts 2篇(第7~16章)

本篇主要介绍了Struts 2框架和通过该框架实现项目的过程。其中前者首先介绍了Struts 2框架的体系结构、MVC模式和相关基础知识,例如Struts 2 Action、处理结果、模型驱动和异常处理;然后详细介绍了Struts 2框架的各种高级知识,如拦截器技术、类型转换器、输入校验技术、文件上传技术、国际化技术和Struts 2标签。为了便于读者掌握Struts 2框架,最后以用户注册登录系统为例,详细讲解了其开发过程。

第3篇 Hibernate篇(第17~21章)

本篇主要介绍了Hibernate框架的基础知识和高级知识。其中前者首先介绍了Hibernate框架基础知识,例如ORM技术、Hibernate与EJB关系等;然后详细介绍了Hibernate框架的各种核心知识,通过配置文件和注释,对Hibernate进行配置、O/R映射、会话的基本操作、标准(Criteria)查询API技术等。最后又简单介绍了Hibernate框架的一些高级技术,例如事务、锁、拦截器、事件和过滤器。

第4篇 Spring篇(第22~25章)

本篇主要介绍了Spring框架和通过该框架实现项目的过程。其中前者首先介绍了Spring框架的主要特性和核心技术;然后详细介绍了Spring框架的各种核心知识,如反向控制技术(Ioc)、数据库技术和AOP技术。

第5篇 综合实例篇(第26~28章)

本篇首先介绍了SSH 5三大框架的整合思路和流程,然后重点介绍了Java Web技术的应用和实战开发。其中,用Struts 2+Hibernate 4+Spring 3技术解决方案实现网络硬盘项目。为了便于读者掌握该项目,在具体讲解时按照面向应用的方式对该系统分成4层,即持久对象层、数据访问层、业务逻辑层和Web表示层,然后详细介绍了各层。最后介绍了一个网络论坛系统的实现,该系统不仅使用Struts 2+Hibernate 4+Spring 3技术解决方案实现,而且还涉及一个Web编辑器(FCKEditor)的安装和使用。本书超值DVD光盘内容□ 本书各章涉及的实例源文件;□ 19.4小时本书配套教学视频;□ 15.5小时Struts 2+Hibernate+Spring整合开发教学视频;□ 19个Java Web典型模块源程序及9.2小时教学视频;□ 5个Java Web项目案例源程序及1.3小时教学视频。适合阅读本书的读者□ 需要全面学习Java Web开发技术的读者;□ 初步掌握Java技术,想进一步学习Java Web开发的读者;□ 对SSH整合技术有了一定的了解,想进一步提高的读者;□ 正在使用SSH整合技术开发项目,想作为参考的程序员;□ 大中专院校的学生;□ 社会培训学生;□ 需要作为案头必备手册的程序员。本书作者

本书第1~8章主要由李宁编写,第9~16章主要由南阳理工学院的刘岩编写,第17~28章主要由张国平编写。其他参与编写的人员有陈一东、高阳、蒋欣、卢晓洋、秦婧、张婉婉、周萌、祝翠、宾光富、陈非凡、陈泓石、陈曦、崔晓明、房伟、高素芳、高志雷、郭靖、郭晓博、胡敏、黄翌、姜艳丽、黎敬硕、李海涛、李槐、李锐、林映红、马航、宁伟斌、邵明洋、孙浏毅、唐颂侃、王倩、王永静。

本书的编写对笔者而言是一个“浩大的工程”。虽然作者投入了大量的精力和时间,但只怕百密难免一疏。若有任何疑问或疏漏,请发邮件至bookservice2008@163.com。最后祝读者读书快乐!编著者第1篇 Web开发基础篇★ 第1章 搭建开发环境★ 第2章 Java Web应用开发基础★ 第3章 Web开发必会的客户端技术★ 第4章 Java Web的核心技术——Servlet★ 第5章 JSP技术★ 第6章 用Servlet和JSP实现注册登录系统第1章 搭建开发环境

在开始学习本书的内容之前,首先介绍了一下本书所使用的JDK、开发工具和各种jar包、框架的版本和安装方法。读者可以通过本章的内容来搭建Java Web开发环境。如果读者的机器上已经安装了本章所介绍的开发环境,可以略过本章,从下一章开始学习。本章的主要内容如下:□ JDK 7的下载与安装;□ Eclipse 4的下载与安装;□ MyEclipse 10的下载与安装;□ Eclipse IDE for Java EE Developers的下载与安装;□ Tomcat 7的下载与安装;□ 配置MyEclipse 10;□ 配置Eclipse IDE for Java EE Developers;□ MySQL 5数据库的下载与安装;□ SQLyog 9数据库客户端的下载与安装。1.1 各种软件和框架的版本

进行Java Web项目开发,第一步不是学习各种语言的语法,而是熟练掌握Java Web环境的配置。本书开发环境中所涉及JDK、开发工具和主要框架的版本如下:□ JDK 7 Update 9;□ Eclipse 4.2;□ MyEclipse 10.6;□ Tomcat 7.0.32;□ MySQL 5.5.13;□ SQLyog 9.6.3;□ Struts 2.3.4;□ Hibernate 4.1.8;□ Spring 3.2.0。1.2 下载与安装JDK 7

JDK(Java SE Development Kit)全称是Java标准版开发工具包,是Java开发和运行的基本平台。Java语言程序代码的运行离不开该JDK,使用它可以编译Java源代码为类文件。在笔者写作本书时,JDK 7的最新版本是JDK7 Update 9,读者可以从如下网址下载JDK 7的最新版本。

如图1.1是JDK 7 Update 9的下载页面。图1.1 JDK 7的下载页面

如果读者使用的是Windows操作系统,可以下载Windows版的JDK,该版本是一个可执行的exe文件。双击安装程序即可安装JDK。1.3 下载与安装Eclipse 4

Eclipse是替代IBM Visual Age for Java(以下简称IVJ)的下一代IDE开发环境,但它未来的目标不仅仅是成为专门开发Java程序的IDE环境。根据Eclipse的体系结构,通过开发插件,它能扩展到支持任何语言的开发和支持任何类型项目。

如果读者只想开发基于控制台的Java程序,可以使用Eclipse进行开发。在笔者写作本书时Eclipse的最新版本是Eclipse 4.2,读者可以从如下网址下载最新的Eclipse版本。

如图1.2是Eclipse 4.2的下载页面。

Eclipse的发行文件是一个zip压缩包,解压后运行eclipse.exe文件即可启动Eclipse IDE。图1.2 Eclipse的下载页面1.4 下载与安装MyEclipse 10

MyEclipse是由Genuitec公司开发的一款商业软件,从本质上讲其是基于Eclipse的Java EE方面的插件。该软件除了支持代码编写、编译和测试等,还增加了UML双向建模工具、JSP/StrutsDesigner、可视化的Hibernate/ORM工具、Spring和Web services等各个方面的功能

本书开发Java EE程序使用的是MyEclipse 10.6。在笔者写作本书时MyEclipse的最新版本是10.6。读者可以从下面的网址下载MyEclipse 10.6。

在MyEclipse下载页面可以发现该工具有两种发行方式。一种是以集成的方式发行,该发行版本集成了Eclipse和JRE。在安装的过程中不需要网络连接。在下载完集成版的MyEclipse 10.6后,直接运行安装程序,并按着提示一步步安装即可。如图1.3是集成发行版本的安装界面。图1.3 集成发行版本的安装界面

除此之外,MyEclipse还提供了pulse发行方式。该发行版本的安装程序非常小(6MB左右),也是一个可执行的安装程序。在运行该安装程序后,会自动从MyEclipse的官方网站下载当前版本的MyEclipse。也就是说,该发行版本的安装文件虽小,但在安装时需要稳定的网络连接。1.5 下载与安装Eclipse IDE for Java EE Developers

虽然本书使用MyEclipse 10.6开发Java EE程序,但读者也可以采用其他的Java IDE来开发Java EE程序。如Eclipse IDE for Java EE Developers就是其中之一。读者可以从以下网址下载这个IDE。

这个IDE的下载页面如图1.4所示。图1.4 IDE的下载页面

Eclipse IDE for Java EE Developers的下载文件是一个zip压缩包,但其中并不包含JRE或JDK,因此,在运行该IDE之前,读者机器上必须安装JDK或JRE,并设置JAVA_HOME环境变量。在解压zip包后,直接运行eclipse.exe文件即可。1.6 下载与安装Tomcat 7

本书使用了Tomcat的最新版本7.x作为Web服务器。读者可以从http://tomcat.apache.org/download-70.cgi下载Tomcat的最新版。Tomcat 7的下载页面如图1.5所示。

如果下载Tomcat的压缩包形式的发行文件,直接解压,并运行 \bin\startup.bat命令即可启动Tomcat。Tomcat的默认端口号是8080。如果本机的8080端口已被占用,可以打开\conf\server.xml文件,找到如下的配置代码:图1.5 Tomcat 7的下载页面

将上面配置代码中的8080改成其他不冲突的端口即可。如果其他的端口冲突,也可以在server.xml文件中找到这些冲突端口的配置代码,并将其修改成其他未被占用的端口号。

如果读者下载Tomcat的Windows版本,可以通过执行exe文件的方式安装Tomcat。在安装的过程中可以指定Tomcat的端口号、管理员用户名和密码,如图1.6所示。图1.6 设置Tomcat 7的端口号、管理员用户名和密码

Tomcat的Windows安装版本会安装一个Windows服务来启动Tomcat,如图1.7所示。启动Apache Tomcat服务后,在浏览器地址栏中输入如下URL:

如果在浏览器中显示如图1.8所示的页面,则表示Tomcat已经安装成功,并成功启动了Tomcat。图1.7 Apache Tomcat服务图1.8 Tomcat的首页1.7 在MyEclipse中配置Tomcat

安装完MyEclipse工具后,并不能马上进行关于Java Web的开发,还必须进行一些必要的配置。由于MyEclipse默认使用的服务器是内置的Tomcat,因此读者想使用最新版本的Tomcat,需要在MyEclipse中进行配置。下面讲解配置方法。(1)选择Window|Preferences命令,打开Preferences对话框。(2)在左侧的列表树中选择【MyEclipse|Servers】|【Tomcat|Tomcat 7.x】节点,将在右侧出现设置Tomcat 7.x服务器的界面。(3)单击Browse按钮,按照如图1.9所示配置Tomcat。(4)单击Apply按钮使配置生效,最后单击OK按钮完成配置。图1.9 在MyEclipse中配置Tomcat1.8 在Eclipse IDE for Java EE Developers中配置Tomcat

同1.7节一样,安装完Eclipse IDE for Java EE Developers工具后,也不能马上进行关于Java Web的开发,也需要进行一些必要的配置。在该工具中配置Tomcat和在MyEclipse中配置Tomcat类似。下面讲解配置方法。(1)选择Window|Preferences命令,打开Preferences对话框。(2)在左侧的列表树中选择Server|Runtime Environments节点,将在右侧出现设置Java EE服务器的界面。(3)单击Add按钮,选择要配置的Java EE服务器,在这里选择了Apache Tomcat v7.0,如图1.10所示。(4)单击Next按钮进行配置后,单击Finish按钮完成配置。图1.10 选择Java EE服务器1.9 下载与安装MySQL 5数据库

在本书的项目中,曾多次用到MySQL数据库。该数据库是一款免费的数据库,目前最新的版本为MySQL 5.5.13,读者可以从如下网址下载MySQL 5的最新版本。

如果读者使用的是Windows操作系统,可以下载Windows版的MySQL数据库,该版本也是一个可执行的exe文件。双击安装程序即可安装MySQL。如图1.11是MySQL 5.5.13的下载页面。图1.11 MySQL 5下载页面

下载完mysql-5.5.13-win32后,双击安装程序即可安装MySQL数据库服务器。1.10 下载与安装数据库客户端软件SQLyog

市场上几乎所有的数据库管理系统都是基于客户端/服务器模式的。MySQL数据库也不例外,该数据库最常用的客户端为SQLyog软件。目前该软件最新的版本为SQLyog-9.6.3-0,读者可以从如下网址下载SQLyog 9的最新版本。

如图1.12是SQLyog-9.6.3-0的下载页面。在下载SQLyog产品页面中,关于“SQLyog MySQL GUI”的下载类型有两种,分别为GA (Stable) 9.6.3-0 Trial和GA (Stable) 9.6.3-0 Full,其中前者表示试用版本,可以免费使用30天,而后者如果使用,需要输入相应信息。图1.12 下载SQLyog 9软件

下载完SQLyog-9.6.3-0Trial后,双击安装程序即可安装SQLyog数据库客户端。1.11 小结

本章介绍了书中所使用的各种工具、框架的版本及下载、安装方法。笔者在编写本书时使用了JDK 7 + MyEclipse 10.6 + Struts 2.3 + Spring 3.2 +Hibernate 4.1的整合方案。在这个整合方案中使用的大多数软件都是笔者写作本书时的最新版本。在本书出版后有可能这些软件有了更新的版本。一般软件是向下兼容的,因此读者也可以采用更新的软件版本来运行和调试本书提供的例子程序。1.12 实战练习

简答题

1. 如何搭建一个Java Web开发环境?【提示】安装本书所介绍的各种软件。

2. 安装MyEclipse开发工具后,需要进行一些必须的设置,才能便于Java Web系统的开发。那么对于MyEclipse开发工具需要进行哪些设置呢?【提示】参考本章的1.7节。第2章 Java Web应用开发基础

自从进入21世纪以来,基于B/S(浏览器/服务器)架构的应用程序逐渐成为企业应用的主流。其中B/S中的B就是客户端(浏览器)、S就是服务器端。基于B/S架构的应用程序也被称为Web应用程序。随着Web应用程序规模的不断增大,传统的Web应用模式已经无法满足目前的需求,所以更先进的MVC模式被广泛地应用到Web应用程序中。随之而来的就是一系列基于MVC模式的框架,Struts框架就是其中之一。本章的主要内容如下:□ Web技术的发展;□ Java Web程序的基本组成;□ Java Web程序的目录结构;□ Java Web程序的配置文件;□ JSP模型1和JSP模型2;□ Web应用程序需要的基础服务;□ MVC模式概述;□ 常用的MVC框架。2.1 Web技术的发展

实际上,Web技术早在20世纪90年代初,就已经有了一定范围的应用,但那时的Web应用大多数都是基于静态HTML页面的,就算有一些基于动态页面的Web程序,可是由于当时的硬件环境和Web技术的限制,这些动态程序运行起来并没有现在这么流畅。而如果使用静态页面,只能起到信息发布的作用,这些静态页面是不具备交互能力的。

不管是何种类型的程序,如果没有和用户交互的功能,或者和用户交互的功能很少,是绝对不可能流行的。当然,Web程序也不能例外。因此很多这方面的专家提出了不同的实现动态Web程序的方案,其中最早的解决方案是CGI(通用网关接口),通过CGI技术可以使Web应用程序与客户端浏览器交互。这些交互的动作可以由静态的HTML产生,也可以由CGI程序生成相应的交互页面,当然,这些交互页面也是静态的。CGI还可以访问数据库,这一点非常重要,因为几乎每一个Web程序都需要对数据进行存取,这些数据基本上都保存在数据库中。

CGI程序的诞生,就像阿里巴巴用“芝麻开门”开启宝库大门一样,开启了动态Web应用的时代,给了这种技术无限的可能性。但CGI技术也存在很多不足之处,如实现CGI程序的难度较大,而且CGI的性能也面临考验。

1998年是值得纪念的一年,在这一年里,Java家族迎来了第一个支持动态Web技术的成员,这就是Servlet。由于Servlet是由Java实现的,因此,Servlet将继承Java的所有优点。Servlet的主要优势可归纳为如下几点:□ 由于Java是跨平台的,Servlet也就自然成了跨平台的技术。如果在Java支持的操作系统平台上的Web服务器包含Servlet引擎,Servlet程序就可以在该操作系统平台上运行。□ 由于Java可以通过JDBC访问数据库,而且支持JDBC的数据库非常多,因此Servlet也就可以利用Java的这项特性访问更多的数据库。□ 除此之外,Java还具有更高级的特性,如多线程、网络等技术。Servlet自然也就可以利用这些技术增强Web程序的功能了。

实际上,Servlet程序的运行原理就相当于远程方法调用。在服务端的Servlet程序中(一个Servlet程序就是HttpServlet类的子类)有一个service方法。当客户端提交请求时,Web服务器接收到这个请求,就将该请求交给Servlet引擎来处理。当Servlet引擎找到该请求指定的Servlet时,就会调用Servlet类中的service方法,并且将请求信息和响应信息传入service方法。

所有的响应和请求的服务端逻辑都要写在service方法中。在service方法中,用户可以在处理完逻辑时给客户端返回相应的信息,当然,也可以什么都不返回。从这一点可以看出,在客户端访问Servlet,就相当于发送一个远程调用服务端组件的方法的请求。如图2.1是Servlet请求响应流程。图2.1 Servlet的请求响应流程

从图2.1所示的请求响应流程可以看出,浏览器首先向Web服务器发送请求,然后Web服务器接收到请求后,将该请求提交给了Servlet引擎,并且由Servlet引擎负责调用Servlet对象实例的service方法,最后返回相应的客户端代码(HTML、JavaScript等)。

Servlet虽然可以实现全部的动态Web应用程序的功能,但是用Servlet显示用户接口时,必须将客户端代码使用HttpServletResponse对象发送到客户端。如果客户端的页面非常复杂,则这样做的工作量是相当大的,而且代码不易维护。

为了使设计页面更方便,Sun公司在1999年发布了JSP规范。JSP和ASP非常相似,它们都是在同一个页面中混合了客户端代码和服务端代码。在ASP页面中可以将HTML、JavaScript等客户端代码和VBScript等服务端脚本混合在一起,而JSP页面中可以使用Java代码作为服务端脚本。

Sun公司为了充分利用已有的Servlet技术,在第一次访问JSP页面时,JSP页面会被JSP引擎翻译成Servlet,然后再交由Servlet引擎来运行。因此,JSP页面在本质上也属于Servlet的一种。图2.2是JSP页面的请求、响应和运行流程。图2.2 JSP页面的请求、响应和运行流程

从图2.2所示的流程可以看出,当浏览器请求Web服务器中的JSP页面时,Web服务器会判断该JSP页面是否第一次被访问(根据该JSP页面是否已生成相应的Servlet程序来判断)。如果是第一次请求,则将该请求交给JSP引擎,并由JSP引擎将JSP页面翻译成Servlet,再交由Servlet引擎来运行由JSP页面生成的Servlet程序。

如果该页面不是第一次被访问,则Web服务器会直接将请求交由Servlet引擎来运行由JSP生成的Servlet程序。因此,JSP页面只在第一次被访问时有些慢,当再次访问JSP页面时,就和访问Servlet完全一样了。当JSP页面被改动时,JSP引擎仍然会重新将被修改的JSP页面翻译成Servlet,关于JSP原理的详细内容,将在第5章介绍。2.2 了解Java Web技术

Java Web技术主要指JSP/Servlet,这两项技术也是Java Web的核心技术。目前支持JSP/Servlet的Web服务器非常多,如轻量级的Tomcat、还有重量级的JBoss、Weblogic等。在本书中将采用Tomcat作为Web服务器。本节将介绍Tomcat下的Java Web程序的组成和结构。2.2.1 认识Java Web程序的基本组成

在一个典型的Java Web程序中应该包含Servlet、JSP页面、HTML页面、Java类等Web组件。总之一句话,一个Java Web应用程序是由一个或多个Web组件组成的集合。这些Web组件一般被打包在一起,并在Web容器中运行。下面是一个典型Java Web应用程序的组成列表:□ Servlet;□ Java Server Pages(JSP);□ JSP标准标签(JSTL)和定制标签;□ 在Web应用程序中使用的Java类;□ 静态的文件,包括HTML、图像、JavaScript和CSS等;□ 描述Web应用程序的元信息(web.xml)。2.2.2 认识Java Web程序的目录结构

通常一个Java Web应用程序中的所有文件会放在一个目录下。Tomcat的默认Web根目录是\webapps。所有放在该目录下的Java Web应用程序都会自动发布。假设有一个论坛系统的根目录是forum,则该系统通常会有如下的目录结构。□ forum:论坛系统的根目录。□ forum\WEB-INF:保存论坛系统的一些配置文件、Java类和jar包等资源。□ forum\WEB-INF\classes:保存论坛系统所需要的Java类(.class文件)。□ forum\WEB-INF\lib:保存论坛系统所需要的jar包。

除此之外,在forum\WEB-INF目录下一般会有一个web.xml文件用于配置Java Web系统。该论坛系统的结构如图2.3所示。

从图2.3所示的目录结构可以看出,在Tomcat的webapps目录下还有一些其图2.3 论坛系统的目录结构他的目录,如ROOT,这些都是Tomcat自带的例子程序或文档。2.2.3 了解Java Web程序的配置文件

配置文件是所有Java Web应用程序的支柱。这里的配置文件主要指位于WEB-INF目录的web.xml文件。该文件几乎配置了Java Web应用程序需要的所有东西。除此之外,在\conf目录中有一个web.xml文件。这个配置文件对于当前的Tomcat服务器是全局的。也就是说,在这个web.xml文件中配置的信息,将对所有运行在当前Tomcat服务器中的Java Web应用程序有效。web.xml文件中配置的主要内容如下:□ ServletContext初始化参数;□ Session配置;□ Servlet/JSP定义;□ Servlet/JSP映射;□ 标签库引用;□ MIME类型映射;□ 欢迎页;□ 错误页;□ 安全信息。2.3 了解MVC模式与MVC框架

Servlet/JSP技术虽然在很长时间内被广泛应用,但随着时间的推移,人们逐渐发现Servlet/JSP技术存在着很多弊端。如JSP页面将静态的HTML代码、JavaScript、CSS和动态的JSTL、Java代码混在一起,这样非常不利于后期的程序维护。为了解决这个问题,有人提出了将页面和服务端代码分离,这就是MVC模式的基本思想之一。2.3.1 认识JSP模型1和JSP模型2

Sun公司在引入JSP/Servlet技术时,制定了两种开发模型来建立基于JSP的Web应用程序,这就是众所周知的Model 1和Model 2。Model 1要比Model 2简单得多,在JSP被引入的初期,基于JSP的Web应用程序大多数使用的都是Model 1。然而随着时间的推移,应用程序的规模越来越大,Model 1已经不能满足程序开发的需要了,这时,Model 2走进了我们的视线。Model 2的核心思想是MVC模式。基于MVC模式的框架,如Struts 2,也已经成为目前开发大型Web应用程序的首选。

1. JSP Model 1

Model 1非常简单,一般由3部分组成,这3部分是客户端浏览器、服务端程序(JSP/Servlet)和数据库。Model 1在JSP/Servlet中处理所有的服务端工作,其中包括接收请求、商业逻辑、表现层逻辑和产生响应。Model 1的构架如图2.4所示。图2.4 Model1的构架

虽然这种模型在概念和使用上非常简单,但将商业逻辑和表现层逻辑及其他的处理代码都写在JSP/Servlet中,将大大降低程序的灵活性和可维护性。假设有一个JSP页面的客户端代码使用的是HTML,并且在JSP页面中混有很多的服务端程序,如Java代码,如果要想使这个JSP页面拥有多个表现层接口,如为其增加WML(无线标记语言),这就意味着所有的商业逻辑和表现层逻辑都要进行修改。在这种情况下,使用Model 1来开发JSP页面就会大大增加工作量,并且非常容易出错。

2. JSP Model 2

Model 2是现今最流行的开发模式,这个模型是基于MVC模式的。MVC是模型(Model)-视图(View)-控制器(Controller)的简称。Model 2可以解决很多Model 1的遗留问题。在MVC模式中,以控制器为中心。在一般情况下,用Servlet来充当控制器,负责接收视图(一般是JSP页面)的请求,并向视图发送响应信息。同时也和模型进行交互,来获得数据库的信息,或者向数据库中写入信息。Model 2的构架如图2.5所示。图2.5 Model 2的构架

MVC模式将表现层(视图)、商业逻辑层(控制器)和数据层(模型)分开处理。因此,很容易替换其中的任何一部分,如需要不同的表现层接口时,只需要修改视图即可,其他两层并不需要进行修改,这样将会达到最大限度的代码重用。2.3.2 认识Web应用程序的基础服务

Java Web应用程序除了需要将页面和服务端代码分离外,还有一些基础功能在很多页面都会重复出现。为了尽可能地减少重复代码量,就需要通过框架的方式来完成这些基础功能。Java Web应用程序需要的主要基础服务如下。□ 页面导航:该功能就是从一个页面切换到另一个页面。这些功能最好放在服务端逻辑中,而不要直接放到JSP页面中。□ 页面布局:这是几乎每一个JSP页面所必须做的工作。为了对这项工作统一管理,最好通过一些标准的方法来实现页面布局。□ 数据验证和错误处理:这个功能虽然和业务逻辑没太大关系,但是为了系统的健壮,应该根据系统中数据的要求加入相应的验证机制。对于很多数据的验证都是有规律可循的,如字段不能为空、输入字符串长度的范围、日期格式等。这些有规律的验证如果使用框架实现,将是一个非常不错的想法。□ 业务逻辑的重用:有很多系统的业务逻辑是类似或相同的。开发人员往往很“懒”,并不想为每一个相似的逻辑重新编写代码,这就要求在编写Web应用程序时应将业务逻辑从系统中分离,形成一系列和其他层相互独立的组件,这样重用起来就非常容易了。

为了将上面的功能提炼出来形成可以重用的组件,最常用的方法就是使用MVC模式以及实现MVC模式的各种框架,如Struts。在后面的部分将介绍MVC模式的基本思想及常用的MVC框架。2.3.3 MVC模式概述

虽然现在的MVC应用大多是Web程序,但MVC模式并不是Web程序的专利。实际上,MVC模式是为面向对象语言而提出的,也就是说,所有使用面向对象语言开发出的系统(包括B/S、C/S以及其他类型的程序)都应遵循MVC模式。

MVC模式将一个应用分成3个部分:Model(模型)、View(视图)和Controller(控制器),这3个部分应尽可能少地耦合,从而可提高应用程序的可扩展性和可维护性。

在通常的MVC模式中,控制器负责接收事件,并根据接收到的事件来处理视图层和模型层的组件。对于Web应用程序来说,事件就是客户端发送的请求。每个模型对应一系列的视图。在后面要讲的Struts 2的模型(Model)类就相当于模型层的组件。而使用Struts 2标签的JSP页面可以看作是视图。

当JSP页面请求Struts 2的Action时(Controller),Action会将模型类和视图层的JSP页面联系起来。也就是说,将JSP页面提交的数据自动封装在模型对象实例中,或者在JSP页面读取模型对象实例中的属性值。如图2.6是Struts 2框架的工作流程。其他基于MVC模式的应用程序的工作流程和图2.6所示的工作流程类似。

从图2.6所示的Struts框架的工作流程可以将MVC模式的主要优势总结如下:□ 多个视图可以对应一个模型,这样有利于代码的重用。如果模型发生改变,也容易升级和维护。□ 由于模型和视图由Controller进行控制,并且模型和视图是分离的,因此,可以通过模型为视图提供不同的数据,如各种类型的数据库、XML和Excel等。□ 由于控制器负责访问视图和模型,因此,可以在控制器中加入权限验证来限制用户对敏感资源的访问。□ 在MVC模式中,3个层次是分离的,降低了各个层次之间的耦合性,这样有利于对系统中的各层进行扩展。图2.6 Struts 2框架的工作流程2.3.4 了解常用的MVC框架

目前基于MVC模式的框架非常多,这些框架都提供了很好的分层能力,并且在实现MVC模式的基础上,还提供了很多辅助开发的类库。目前比较流行的MVC框架如下。

1. Struts 1.x

Struts 1.x是apache的一个开源项目,也是最早实现MVC模式的框架。目前使用Struts 1.x框架的用户群非常大。Struts 1.x中相对于MVC模式有如下3层。□ 视图层(View):该层主要包括JSP、HTML等页面及JavaScript等客户端脚本。该层通过ActionForm和服务端进行交互。□ 控制层(Controller):Struts 1.x的Action属于控制层。通过Action,可以控制视图和模型。□ 模型层(Model):该层主要是一系列处理业务逻辑和操作数据的Java类。

2. Struts 2.x

Struts 2.x虽然从版本号上看是Struts 1.x的升级版本,但实际上Struts 2.x是从Webwork框架升级过来的。Struts 2.x框架虽然在概念上和Struts 1.x类似,但在实现上却大不相同。Struts 2.x的Action类可以是POJO,而Struts 1.x的Action类和ActionForm类需要从特定的类继承。而且Struts 2.x的Action对视图的控制也更灵活(关于Struts 2.x的详细内容请读者参阅第2篇的各个章节)。

3. Spring MVC

Spring MVC是Spring框架自带的一个MVC框架。该框架为视图、模型和控制器之间提供了一个非常清晰的划分,各部分耦合度极低。Spring MVC框架完全基于接口编程,真正实现了与视图无关。在Spring MVC框架中并不要求视图一定要使用JSP。在该框架中视图可以使用Velocity、XSLT或其他的视图技术,甚至可以使用自定义的视图技术,当然,这需要实现View接口。

Spring的控制器由Ioc容器管理,因此,对控制器进行维护更容易。Spring MVC框架通过DispatcherServlet进行控制。DispatcherServlet负责拦截所有的用户请求,并将请求分发给不同的控制器。

Spring MVC虽然很灵活,但由于Spring MVC框架和Servlet API耦合,因此,Spring MVC框架的运行不能脱离Servlet容器,这也限制了Spring MVC框架的扩展性,而且Spring MVC框架的角色划分得太细,使用太繁琐,从而降低了开发效率。2.4 小结

本章介绍了Web技术的历史及其发展过程。随着硬件性能的提高和Web技术的发展,Web程序也从一开始的静态页面发展到了现在的动态和静态页面组合的模式。随着Web应用系统规模的不断增大,往往一个Web程序需要很多人合作才能完成,这就要求有更好的设计模式来满足团队开发的需要。MVC模式就是其中一个比较出色的解决方案。随着MVC模式的不断流行,越来越多的基于MVC模式的框架也不断涌现。本书要讲的Struts 2框架就是被很多人看好的MVC框架之一。在后面的部分将详细讲解Struts 2的各种特性和功能。读者将会从中了解并掌握MVC模式在Struts 2框架中的精彩表现。2.5 实战练习

简答题

1. 简述Web技术的发展?【提示】参考本章的2.1节。

2. 简述目前阶段中,常用的MVC框架?【提示】参考本章的2.3.4节。第3章 Web开发必会的客户端技术

客户端技术是Web程序中最重要的技术之一。客户端技术主要用来设置浏览器中页面元素的布局和显示效果,以及利用JavaScript技术对页面进行控制,与服务端进行通信等。常用的客户端技术主要包括HTML、CSS、DOM、JavaScript和AJAX等。读者通过学习这些客户端技术,可以很容易地编写具有良好用户体验的Web程序页面。本章将主要介绍JavaScript的基本功能,同时还涉及了CSS、DOM、AJAX等技术。本章的主要内容如下:□ 常用JavaScript IDE简介;□ JavaScript的基本语法;□ JavaScript中的内置对象;□ DOM技术;□ 正则表达式;□ CSS基础知识;□ AJAX技术。3.1 学习客户端技术的开发工具

工欲善其事,必先利其器。要想提高客户端技术的开发效率,选择一个合适的开发工具是非常必要的。现在几乎所有能开发Web程序的开发工具都支持客户端技术,如MyEclipse、Eclipse、NetBeans、Dreamweaver和Visual Studio 2010等。这些工具在编写客户端技术上各有千秋。在本节将讲解如何在MyEclipse开发工具中使用各种客户端技术。3.1.1 在MyEclipse中使用HTML技术

MyEclipse是本书主要使用的HTML IDE。MyEclipse不仅支持Java EE的开发,也支持HTML的开发。读者可右击Web工程,在弹出的快捷菜单中选择New|Other命令,打开New对话框。在该对话框中选择MyEclipse|Web|HTML(Basic Templates)节点,如图3.1所示。

单击Next按钮,进入下一步操作。在File name文本框中输入一个文件名(不需要带文件扩展名),单击Finish按钮就会创建一个带有“.html”后缀名的HTML程序文件。

MyEclipse中的HTML编辑器支持代码辅助功能,如图3.2所示。图3.1 新建HTML文件图3.2 支持HTML语言3.1.2 在MyEclipse中使用JavaScript技术

MyEclipse是本书主要使用的Java IDE。MyEclipse不仅支持Java EE的开发,同时也支持JavaScript开发。读者可右击Web工程,在弹出的快捷菜单中选择New|Other命令,打开New对话框。在该对话框中选择JavaScript|JavaScript Source File节点,如图3.3所示。

单击Next按钮,进入下一步操作。在File name文本框中输入一个文件名(不需要带文件扩展名),单击Finish按钮就会创建一个带有“.js”后缀名的JavaScript程序文件。

MyEclipse中的JavaScript编辑器支持代码辅助功能,即在JavaScript的内置对象,如window、document等,在输入“.”后,都可以列出这些对象的内部成员。如在输入“window.”后,就会出现如图3.4所示的成员列表,同时还会显示支持这些成员的浏览器,如图3.5所示。图3.3 新建JavaScript文件图3.4 window对象的成员列表图3.5 所支持的浏览器3.1.3 在MyEclipse中使用CSS技术

MyEclipse是本书主要使用的HTML IDE。MyEclipse不仅支持Java EE的开发,同时也支持HTML开发。读者可右击Web工程,在弹出的快捷菜单中选择New|Other命令,打开New对话框。在该对话框中选择MyEclipse|Web|CSS节点,如图3.6所示。

单击Next按钮,进入下一步操作。在File name文本框中输入一个文件名(不需要带文件扩展名),单击Finish按钮就会创建一个带有“.css”后缀名的CSS程序文件。

MyEclipse中的CSS编辑器支持代码辅助功能,如图3.7所示。图3.6 新建CSS文件图3.7 支持CSS语言3.2 学习超文本标签语言HTML

HTML的全称为Hypertext Markup Language,中文意思是超文本标签语言,是一种用来制作超文本文档的简单标签语言,也就是用于制作网页的内容。本节将介绍HTML的基本语法,内容包含该语言的基本结构和基本标签,分别是段落格式标签、超级链接标签、图像标签、表格标签、框架标签和表单标签。3.2.1 HTML基本构成

HTML语言是Web用于创建和识别文档的标准语言,该语言是学习网页编程的基础,其主要应用就是对网页内容的排版。HTML最大的优点就是在浏览器运行时有统一的规则和可用标准。所谓超文本,是因为其可以加入图片、声音、动画、影视等非单一文本内容。一个简单HTML文档的代码如下:

代码说明:

保存上面的文档为html1.html文件,双击该文件,页面的显示如图3.8所示。上述代码中之所以会产生如图3.8所示的结果,最主要是因为代码中的一系列标签,下面将一一介绍这些标签。(1)

标签用来标识HTML文档的开始,而标签HTML文档的结束,两者必须同时出现配套使用,这是HTML语言的最基本标签。(2)

HTML文档开始后,首先遇到的就是该文档的开头部分,其用和标签来标识。在该标签对中可以使用等标签,用来描述HTML文档的相关信息。(3)

HTML文档的开头部分结束后,就进入文档的主体部分,用和标签来标识。在此标签对之间可以使用


等标签,用来描述浏览器中显示出来的内容。同时标签中还可以有以下属性。□ Bgcolor:设置背景颜色。□ Text:设置文本的颜色。□ Link:设置链接的颜色。□ Vlink:设置已使用的链接的颜色。□ Alink:设置被单击的链接的颜色。(4)

在使用和标签对时,会出现一对非常重要的标签,用来修改浏览器窗口标题栏上的文本信息。

通过对基本标签的理解,可以把上述代码分成两部分,如图3.9所示。图3.8 HTML文档的结构图3.9 运行结果注意:标签不区分大小写,所以可以使用代替标签。3.2.2 HTML基本标签——段落格式设置标签

在编写一篇长文章或评论的时候,经常会把文章内容分成一系列段落,以显示作者的逻辑思想,在HTML文档中也可以把文本内容分成多个段落。段落标签可以是:(1)

标签用来创建一个段落,在此标签对之间加入的文本,将按照段落的格式显示在浏览器中。另外,该标签还可以使用align属性来说明对齐方式,而属性值可以是left、Center、和Right这3个中的任何一个。注意:段落标签

用于标记段落的开始,段落结束标签

并非必须,是可以省略的。(2)


是一个很简单的标签,它没有结束标签,因为它用来创建一个回车换行。

如果把
放在

外边,将创建一个大的回车换行,若放在

里将创建一个小的回车换行。

下面代码的具体内容为标签
在标签对

外。

下面代码的具体内容为标签
在标签对

里。

运行上面两段代码结果如图3.10和图3.11所示。图3.10 外边运行结果图3.11 里边运行结果(3)

标签对用于文档分节,也用于格式化表,此标签对的用法与

标签对非常相似。标签用于在行内控制特定内容的显示,如果要为一行内容的某几个字设置特殊的格式,可以使用该标签将这几个文字包围起来,然后设置格式。3.2.3 HTML基本标签——超级链接标签

在HTML语言中超级链接用来实现页面的联系和转换,即当用户单击超级链接时就会进入链接中指定的文档或文件(图形、音频、视频)。超级链接的基本格式如下:

在上述定义中链接名称是指向链接目标的链接指针,可以是文字或图片。而链接的目标位置可以使用URL指定。如果链接目标的网页位于同一站点下,可以使用相对URL。如果链接目标的网页位于其他站点,需要使用绝对URL。单击链接的名称,就会跳转到相应链接目标的网页。下面是具体的代码演示。(1)链接到同一站点内的文档。该方式的例子如下:

当单击“示例”这个链接时,可以跳转到同一文件夹下的myhtml.htm文件。(2)链接到其他站点内的文档。该方式的例子如下:

当单击“示例”这个链接时,页面就转到HTTP://www.myWeb.edu.cn网址的首页。(3)E_mail链接。该方式的例子如下:

当单击“示例”这个链接时,将调用系统设定的电子邮件程序,建立一个空白的邮件,mailto中指定的邮件地址被填写到“收件人”一栏中。(4)页面内部链接。首先在页面中给需要链接的位置命名,方法如下:

用name属性把放置此标签的位置命名为myword,之间没有任何内容。然后就可以设置指向该位置的链接了,方法如下:

当单击“转到”这个链接时,就从当前页的当前位置转到标记名为myword的位置。下面代码演示了超级链接的用法。

保存并使用浏览器浏览该页面,结果如图3.12所示。图3.12 网页中链接的运行结果3.2.4 HTML基本标签——图像标签

在网页中经常会用到图像,使用img标签就可以在网页中加入图像,常用的属性如表3.1所示。表3.1 标签img的属性

在使用src属性时,如果图片pic.gif放在HTML文档的同一个目录下,则可以将代码写成;如果图片pic.gif放在当前HTML文档所在目录的一个子目录(子目录名假设为image)下,则代码写成;如果图片pic.gif放在当前HTML文档所在目录的上层目录(根目录下只有一个文件夹名Web)下,则代码写成

下面代码演示了图像的用法。

保存并使用浏览器浏览页面,结果如图3.13所示。图3.13 网页中图像的运行结果3.2.5 HTML基本标签——表格标签

表格标签对于制作网页是很重要的,因为其在一定程度上控制文本和图像在网页中的位置。表格是HTML高级构件之一,其由特定数目的行和列组成。关于表格的标签包含:(1)

该标签对用来创建一个表格,具有的属性如表3.2所示。表3.2 table标签的属性(2)、td>

标签对用于设置表格的一行,具有的属性如表3.3所示。表3.3 tr标签的属性

标签对用于设置表格中除了标题行中单元格的文字格式。具有的属性如表3.4所示。表3.4 td标签的属性

标签对用于设置表格标题行中单元格的文字格式,通常默认的格式是黑体居中。

下面代码演示了表格的用法。

保存并使用浏览器浏览页面,结果如图3.14所示。图3.14 表格的运行结果3.2.6 HTML基本标签——框架标签

框架的标签为Frame,它可以用来向浏览器窗口中装载多个HTML文件,即每个HTML文件占据一个框架,而多个框架可以同时显示在同一个浏览器窗口中,它们组成了一个最大的框架,即一个包含多个HTML文档的HTML文件。常用的方法是在一个框架中放置目录,然后将HTML文件显示在另一个框架中。(1)

标签对放在框架主文档的标签对的外边,也可以嵌在其他框架文档中,并且可以嵌套使用。该标签对有两个属性,即rows属性和cols属性,当使用该标签时必须至少选择一个。

属性rows用来规定主文档中各个框架的行定位,而属性cols用来规定主文档中各个框架的列定义。这两个属性的取值可以是百分数、绝对像素值或星号(“*”),其中星号代表那些没被说明的空间,如果同一个属性中出现多个星号,则将剩下的没被说明的空间平均分配。同时,所有的框架按照rows和cols的值从左到右,然后从上到下排列。(2)

标签放在之间,用来定义某一个具体的框架。标签具有src属性和name属性,这两个属性都是必须赋值的。□ src是此框架的源HTML文件名,浏览器将会在此框架中显示src指定的HTML文件。□ name是此框架的名字,这个名字是用来供超文本链接标签中的target属性,来指定链接的HTML文件将显示在哪一个框架中。注意:标签还有scrolling和noresize属性,scrolling用来指定是否显示滚动条,取值可以是yes、no或auto;noresize属性直接加入标签中即可使用,不需赋值,用来禁止调整一个框架的大小。(3)

标签对也是放在标签对之间,用来在那些不支持框架的浏览器中显示文本或图像信息。在此标签对之间先紧跟标签对,然后才可以使用以前讲过的任何标签。

下面代码演示了框架的用法。3.2.7 HTML基本标签——表单标签

表单是用来输入信息的区域,它是使网页具有交互功能的关键。利用表单可以接收用户输入,以便向服务器传送。服务器端程序接收并处理这些信息,然后动态产生网页。(1)文本框。文本框分为单行文本框和多行文本框,密码框可以认为是一种特殊的文本框。单行文本框的格式如下:

密码文本框的格式如下:

多行文本框的格式如下:(2)按钮。按钮有3种类型,分别是提交按钮、重置按钮和普通按钮。提交按钮的格式如下:

重置按钮的格式如下:

提交按钮的格式如下:(3)单选按钮。一组单选按钮只能有一个单选按钮被选中,同一组内的多个单选按钮必须使用一个名称,格式如下:(4)复选框。跟单选按钮相反,可以有多项被选中。格式如下:(5)下拉菜单。下拉菜单格式如下:

下面代码演示了表单的用法。

运行结果如图3.15所示。图3.15 表单的运行结果3.3 学习JavaScript技术

Web开发中的客户端技术,除了3.2节介绍的HTML语言外,还有JavaScript技术。本节将介绍JavaScript的基本语法,内容包括JavaScript的基本数据类型、引用类型,以及类型之间的转换。在JavaScript中还经常会使用到函数和类,因此本节还介绍了函数的基本使用方法,以及类的编写、使用和继承。3.3.1 实例:编写第一个JavaScript程序:Greet

本节的例子是一个非常简单的JavaScript程序。这个程序通过DOM技术获得了name文本框,并从name文本框中读出用户输入的值,最后使用alert函数将这个值以对话框形式显示,该程序的代码如下:

上面的JavaScript代码嵌入到了HTML中,在这种情况下,必须将JavaScript代码写在

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载