搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
精通Struts 2:基于MVC的Java Web应用开发实战
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787115178770
  • 作      者:
    陈云芳编著
  • 出 版 社 :
    人民邮电出版社
  • 出版日期:
    2008
收藏
编辑推荐
  内容覆盖了Struts 2基础、Struts 2框架核心和Struts 2高级,特性,流行框架整合开发等知识,三大综合案例开发演示,帮助读者提高项目开发水平,网络商店系统(Struts 2+Hibernate+Velocity),网络文件管理系统(Struts 2+Hibemate+FreeMarker),网上购书系统(Struts 2+Hibernate+Ajax)。
展开
内容介绍
  本书由浅入深、循序渐进地介绍了使用Struts 2框架进行Web应用开发的基本原理和方法。
  全书共分为4篇,第一篇Struts 2快速入门,主要介绍了基本的Web开发技术,Struts 2的基础知识,并通过简单应用实例,讲解了Struts 2的框架结构。第二篇Struts 2框架核心,包括Action、Interceptor、Result、多视图和数据持久化支持等方面的知识。第三篇Struts 2高级特性,介绍了数据验证、类型转换和国际化等方面的内容。第四篇Struts 2综合项目实践,介绍了3个综合实例(网络商店系统、网络文件管理系统、网络购书系统)的开发过程,每个实例均按照需求分析、项目设计、代码开发、程序测试及项目部署等实际开发流程编写,力求使读者在学习理论的同时,能够进一步通过现有的程序实例加深理解,提升实战能力。
  随书附赠光盘上有本书全部已经调试通过的程序源代码。
  本书重点突出,理论与实践并重,适合于具有一定Java基础,进行Web应用开发的程序员阅读,也可作为相关培训机构的教材,以及高等院校相关专业师生的参考用书。
展开
精彩书摘
  第1章 Web应用开发概览
  本章从Web开发的基础讲起,将Web开发的来龙去脉展现给各位读者。同时读者还将了解Web应用中采用MVC模式的根本原因以及MVC模式在Web开发框架中的发展现状,Web应用开发的各种开源框架及其比较,Struts 2高级特性介绍。几种流行的开源框架和Struts2的比较,明确Struts 2的优缺点,使Web开发应用更具有针对性。
  1.1  Web应用与Web开发框架
  1.1.1  Web应用开发历程
  Java技术是目前流行的Web开发语言,特别是基于J2EE平台的Java web开发模式已经被广泛使用,用户接触的很多动态网站都是采用了Java技术开发的。而Java web开发技术的发展是和Internet、浏览器的发展密不可分的。
  Internet是一个遵循一定协议自由发展的国际互联网,它利用覆盖全球的通信系统使各类计算机网络及个人计算机联通,从而实现智能化的信息交流和资源共享。
  Internet早已从最初学术科研网络变成了一个拥有众多商业用户、政府部门、机构团体和个人的综合的计算机信息网络。在发展规模上,目前Internet已经是世界上规模最大、发展最快的计算机互联网。TCP/IP协议簇是目前Imemet主流网络协议,它可提供任意互联的网络间的通信,几乎所用的网络操作系统都支持TCP/IP协议簇。在TCP/IP协议簇中,Web服务以其使用的方便性占据了TCP/IP应用的绝大部分。Web服务所采用的HTTP位于应用层,如同TCP/IP成为事实上的标准Imemet网络协议一样,HTTP所支持的Web应用成为Intemct的最主要应用有一定的历史机遇和偶然性,而这种偶然性在很大程度上与浏览器的发展密不可分,浏览器的发展在一定程度上也决定了web技术的发展。
  提到Web浏览器,大多数人都会想到无处不在的微软公司的Intemet ExplOrer,简称IE,直到最近像Firefox、Safari和Opera之类的浏览器推出,这种情况才稍有改观。1993年,堪萨斯大学开发人员编写了一个基于文本的浏览器,叫做Lynx。1994年,挪威奥斯陆的一个小组开发了Opera,到1996年这个浏览器得到了广泛使用。1994年12月,Netscape发布了Mozilla的1.0版,第一个盈利性质的浏览器从此诞生。1996年夏天,微软公司发布了IE 3.0版,几乎一夜之间人们纷纷拥向IE。当时,因为Netscape的浏览器是要收费的,而微软公司
  则免费提供IE。关于浏览器领域谁主沉浮,很多人担心Microsoft会像在桌面领域一样,在Web领域也一统天下。到1999年发布IE 5.0时,它已经成为使用最广泛的浏览器。2002年,继承了Netscape的开源版本的Firefox浏览器异军突起,夺回了大量的市场份额。
  Internet提供了网络连接的基础架构,而浏览器则带给了Internet更为广泛的实际应用。下面让我们来深入了解一下影响浏览器发展的一个重要因素——web应用需求都经历了怎样的变化。回顾Web应用的发展历程及展望其光明前景,我们可以将其大致分为3个阶段:已经基本成为历史的1.0时代,正在曰益发展的2.0时代和尚在萌芽中的3.0时代。
  Web 1.0时代,在计算机世界大行其道的是最先由Borland公司提出来的C/S(客户机/服务器)结构模式。在这种模式下,服务器被启动,就随时等待响应客户程序发来的数据请求,这些请求通常只是一些数据库操作语句,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向它发出请求,服务器程序根据预定的规则作出应答,返回结果。
  C/S模式首次将程序和数据彻底分离,数据可以为不同程序所用,性能比文件服务器结构要强,维护起来比文件服务器结构容易,利用网络所带来的数据库的数据查询维护便利。然而,这种胖客户机/瘦服务器的模式使得资源没有合理使用,客户机程序配置复杂,开发难度大,难以使应用系统动态适应企业日益增长的业务需求,开发缺乏标准,系统的可用性和性能受到怀疑,同时也不便于异构系统的互连和扩充,难以保证应用系统的安全性。
  C/S模式的缺陷和不足很快就被微软公司注意到了,微软公司对Borland公司的C/S模式进行了小幅度的改动,然后提出了自己的B/S模式。这种B/S模式一般采用三层结构。
  客户层(browser):用户接口和用户请求的发出地,典型应用是网络浏览器。
  服务器层(Web server):典型应用是Web服务器和运行业务代码的应用程序服务器。
  数据层(datatier):典型应用是关系型数据库和其他后端数据资源等。
  B/S模式极大地统一并简化了客户端,使用户的操作变得异常简单和一致。B/S结构是对C/S结构的一种改进,用户工作界面是通过浏览器来实现的,浏览器根据获得的极少部分事务逻辑在前端(Browser)实现,主要事务逻辑在服务器端(Server)实现。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。然而,B/S模式的三层结构只是简单把数据层分开,没有把程序代码按照逻辑分开,代码重用难度大,显示逻辑和业务功能逻辑没有分开,耦合性和移植性都比较差。
  无论是C/S还是B/S结构都存在这样一些缺点:数据安全性低,对服务器要求过高,数据传输处理速率低等。例如,通过浏览器进行大量的数据输入或进行报表的应答,专用性打印输出都比较困难和不便,由此我们引出了一种分层的Web应用。它的体系结构如图1.1所示。
  把显示逻辑从业务逻辑中分离出来,这就意味着业务代码是独立的,可以不关心怎样显示和在哪里显示。
  业务逻辑层处于中间层,不需要关心由哪种类型的客户来显示数据,也可以与后端系统保持相对独立性,有利于系统扩展。多层结构具有更好的移植性,可以跨不同类型的平台工作,允许用户请求在多个服务器间进行负载平衡。
  分层的Web应用由于以上优势迅速成为Web应用的主体,其间动态网页由于交互性受到了广泛的关注并得到了长足的发展。目前,常用的Web动态网页开发技术有以下几种:CGl、ASP、PHP、JSP。这些动态网页的工作原理大致相同,简单归纳如下。
  1.当用户请求一个木.asp(*.jsp、*.php、*.cgi等)页面时,web服务器响应HTTP请求,调用ASP(JSP、PHP、CGl等)引擎,解释(编译)被申请的文件。
  2.若脚本中含有访问数据库的请求,就通过ODBC或者(JDBC)与后台数据库相连,由数据库访问组件执行访问操作。
  3.ASP脚本在服务器端解释(JSP在服务器端是编译)执行,根据访问数据库的结果集自动生成符合HTML语言的主页,去响应用户的请求。所有相关的发布工作由www服务器负责。
  除了这些纷繁的动态页面生成技术,丰富的Web页面表现技术也不断涌现。在过去的几年里经过长足发展的页面技术有Applet、JavaScript和Ajax等,正是这些技术使得Web应用更加动态,更加智能,并且更具表现力。
  Web l.0是以信息的增值服务,围绕信息的搜集、获取、整理和发布而展开的。它的发
  展忽视了用户的能动性,用户只能浏览由网页编辑搜集整理的信息,而不能参与其中并加入讨论。网站对于用户来说形同生人。这样的一种模式不仅无法长时间地吸引用户,并且网站形式及网站内容极易被其他网站和个人所复制,发展也受到人员和资金的限制。用户需要一种主观的投入,能够与网站展开互动,网站所需要做的事情就是发掘用户的需求并满足用户的需求,把复杂的技术开发留给自己,而把简单的使用体验交给用户,伴随着用户需求的改变,Web 2.0就应运而生了。
  一般来说,Web 2.0(也有人称之为互联网2.0)是相对web1.0新的一类互联网应用的统称。Web 2.0跟Web 1.0的最大区别在于没有了编辑,也就没有了信息控制,体现了一种“去中心化”的趋势。更注重用户的交互作用,用户既是网站内容的消费者,也是网站内容的制造者。Blogger Don在他的“Web2.0概念诠释”一文中提到:Web 2.0是以Flickr、.Craigslist、Linkedin、Tribes、gyze、Friendster、43Things.tom等网站为代表,以Bl09、TAG、SNS、RSS、wiki等社会软件的应用为核心,依据六度分隔、XML、Ajax等新理论和技术实现的互联网新一代模式。
  如果说Web l.0时代的标准语言是HTML,那么Web 2.0时代的标准语言就是XML(eXtensible Markup Language,可扩展标记语言)。这个“下一代网络应用的基石”自从它被提出来时就几乎得到了业界所有大公司的支持,丝毫不逊于当年HTML被提出来的热度。
  1998年2月,W3C(World Wide Web Consoutium)正式公布了XML的1.0版语法标准。XML功能强大的主要原因在于XML是一种“元语言”(meta.1anguage)。换言之,XML是一种用来定义其他语言的语法系统。随着XML的发展,W3C开发了一系列技术来规范和促进XML的发展。这一系列技术包括DTD、XML Schema(XMLS)、RELAX NG DOM、SAX、Xpath XSL、XSLT、XSL-Fo、CSS XLink、XPointer、Xquery等。
  如果说Web1.0体现的网站和用户之间是一种陌生人的关系,Web 2.0体现的网站和用户之间是主人和客人的关系的话,那么,到了Web3.0时代,每一个用户都是Web的主人。
  2005年圣诞节,Bill.Gates讲述了公司的互联网战略,主要围绕一个互联网新的概念模式展开,并给这种互联网模式一个新的名词Web 3.0。从目前看来,未来的Web 3.0主要包含以下3个基本特征。
  1.网站内的信息可以直接和其他网站相关信息进行交互和转换,能通过第三方信息平台同时对多家网站的信息进行整合使用。
  2.用户在互联网上拥有自己的数据,并能在不同网站上使用。
  3.完全基于Web,用浏览器即可以实现复杂的系统程序才具有的功能。
  1.1.2 为什么需要Web框架
  Web应用开发从lntemet诞生以来就一直在发展着,从传统的CGl到更加高效的Servlet,其间经历了无数技术上的变革。回顾Web的发展历史不难发现,实现高效的用户与服务器之问或者用户与用户之间的交互可以说就是Web应用的本质,这种交互需要技术上的不断进步来支持。
  Web层作为三层架构中的核心层,承担着Web应用的核心功能,在具备较大灵活性的同时,也不可避免地带来一些开发上的制约。由于技术发展的历史原因,虽然目前主流的Web应用开发工具(PHP、JSP、ASP)都提供了服务器端的页面展示、业务逻辑处理和数据访问等功能,但是这些功能并没有形成一个完整的整体,三层架构中Web层的混乱程度几乎到了难以忍受的地步,代码编写困难,调试更加困难。
展开
目录
第1篇 Struts 2快速入门
第1章 Web应用开发概览
1.1 Web应用与Web开发框架
1.1.1 Web应用开发历程
1.1.2 为什么需要Web框架

1.2 MVC模式和Struts
1.2.1 什么是MVC模式
1.2.2 MVC模式的Web框架映射
1.2.3 Struts 2对MVC模式的改进

1.3 Struts 2框架概览
1.3.1 Struts 2框架的演变
1.3.2 Struts 2的特性
1.3.3 与其他Web框架的比较
1.4 小结

第2章 第一个Struts 2应用
2.1 Struts 2开发环境配置
2.1.1 JDK1.5.10和Tomcat的安装与配置
2.1.2 MyEclipse的安装和配置
2.1.3 Struts 2的安装

2.2 创建配置文件
2.2.1 配置web.xml文件
2.2.2 配置Struts 2的xml文件
2.2.3 配置Struts 2的properties文件

2.3 第一个Action
2.3.1 创建helloworld.action
2.3.2 在struts.xml中配置Action
2.3.3 创建视图hello.jsp
2.3.4 测试Action

2.4 体验Struts 2更高级功能
2.4.1 处理输入
2.4.2 执行结果
2.4.3 拦截器
2.5 小结

第2篇 Struts 2框架核心
第3章 Action
3.1 Action简介
3.1.1 返回类型
3.1.2 execute()方法

3.2 Action接口
3.3 ActionSupport基类
3.4 Action实例
3.4.1 实现Action接口的实例
3.4.2 实现ActionSupport基类的实例

3.5 在Action中实现基本校验
3.5.1 使用Action的execute()方法
3.5.2 使用ActionSupport的validate()方法
3.5.3 使用注释实现校验
3.6 ActionContext
3.7 小结

第4章 Interceptor
4.1 Interceotor基础
4.1.1 理解Interceptor
4.1.2 Interceptor何时调用
4.1.3 Interceptor接口
4.1.4 Interceptor相关类

4.2 使用预定义的Interceptor
4.2.1 预定义Interceptor类
4.2.2 LoggingInterceptor示例

4.3 使用自定义的Interceptor
4.3.1 自定义Interceptor的配置
4.3.2 实现自己的Interceptor

4.4 Interceptor应用实例
4.4.1 execAndWait拦截器源码分析
4.4.2 项目概述
4.4.3 Action实现文件
4.4.4 页面文件
4.4.5 配置文件
4.4.6 运行
4.5 小结

第5章 Result
5.1 自定义Result
5.1.1 实现自定义Result
5.1.2 配置自己的Result
5.1.3 运行测试Result

5.2 常用的Result
5.2.1 Dispatcher
5.2.2 Redirect
5.2.3 Chain
5.3 其他的Result
5.4 小结

第6章 标签
6.1 标签介绍
6.2 自定义标签
6.2.1 标签的实现
6.2.2 标签的配置
6.2.3 运行

6.3 Struts 2标签概览
6.3.1 标签简介
6.3.2 使用标签的准备

6.4 非UI标签
6.4.1 数据标签
6.4.2 控制标签
6.4.3 其他标签

6.5 UI标签
6.5.1 通用属性
6.5.2 简单UI标签
6.5.3 高级UI标签
6.6 小结

第7章 表达式语言OGNL
7.1 OGNL的基本特性
7.1.1 常量的声明
7.1.2 方法调用
7.1.3 变量引用

7.2 操作集合
7.2.1 操作列表Lists
7.2.2 操作映射Maps
7.2.3 操作数组 Array
7.2.4 集合操作

7.3 OGNL的高级特性
7.3.1 类型转换
7.3.2 与值栈的联系
7.3.3 lamuda表达式
7.3.4 Java和OGNL的比较

7.4 在JSP中使用OGNL
7.4.1 项目概述
7.4.2 工程代码编写
7.4.3 运行
7.5 小结

第8章 多视图
8.1 Velocity
8.1.1 Velocity简介
8.1.2 语法
8.1.3 Velocity实例分析

8.2 FreeMarker
8.2.1 FreeMarker简介
8.2.2 语法
8.2.3 FreeMarker实例分析
8.2.4 FreeMarker和Velocity的比较

8.3 JasperReports
8.3.1 JasperReports介绍
8.3.2 JasperReports实例分析
8.4 小结

第9章 数据持久化——使用Hibernate
9.1 数据持久化与Hibernate基础
9.1.1 数据持久化基础
9.1.2 Hibernate基础

9.2 Hibernate简单应用
9.3 Hibernate核心
9.3.1 Hibernate的核心接口
9.3.2 Hibernate的配置文件
9.3.3 Hibernate的对象关系映射
9.3.4 Hibernate的检索方式
9.4 Hibernate实例
9.5 小结

第3篇 Struts 2高级特性
第10章 校验框架
10.1 使用Struts 2自带的校验器
10.1.1 配置拦截器
10.1.2 配置校验器
10.1.3 自带校验器实例

10.2 使用自定义校验器
10.2.1 创建自定义校验器
10.2.2 自定义校验器的注册
10.2.3 自定义校验器实例
10.3 小结

第11章 类型转换
11.1 为什么需要类型转换
11.1.1 没有类型转换的实例
11.1.2 类型转换带来的好处

11.2 Struts 2自带的转换器
11.2.1 自带转换器的数据类型
11.2.2 转换器的源码分析

11.3 自定义转换器
11.3.1 编写转换器类
11.3.2 配置

11.4 高级类型转换
11.4.1 空值属性处理
11.4.2 类型转换错误处理
11.5 小结

第12章 国际化
12.1 国际化基础
12.2 Struts 2与国际化
12.2.1 Struts 2对国际化的支持
12.2.2 资源包相关
12.2.3 国际化信息的获取

12.3 Struts 2国际化实现
12.3.1 初始页面的国际化
12.3.2 Action的国际化
12.3.3 校验的国际化

12.4 国际化实例
12.4.1 项目配置与开发
12.4.2 结果测试
12.5 小结

第13章 Struts 2调试
13.1 MyEclipse中的Java程序调试
13.1.1 调试配置
13.1.2 调试视图
13.1.3 控制程序执行

13.2 调试Struts 2程序
13.2.1 调试入门
13.2.2 连接Struts 2的源代码

13.3 Struts 2调试应用
13.3.1 实例的概述
13.3.2 实例工程的源文件
13.3.3 调试工程
13.4 小结

第14章 Struts 2原理探究
14.1 控制反转(IOC)
14.1.1 什么是控制反转
14.1.2 控制反转的设计方式
14.1.3 Struts 2中的控制反转

14.2 源码探究
14.2.1 Struts 2启动
14.2.2 Action处理过程
14.2.3 Interceptor工作机制
14.2.4 ActionContext
14.3 小结

第15章 Struts 2与其他网络框架整合
15.1 与SiteMesh整合
15.1.1 SiteMesh简介
15.1.2 SiteMesh的安装
15.1.3 SiteMesh应用实例

15.2 Quartz作业调度
15.2.1 Quartz简介
15.2.2 作业调度简介
15.2.3 Quartz应用实例

15.3 Acegi-Security用户管理
15.3.1 Acegi-Security简介
15.3.2 Acegi认证过程
15.3.3 保护Web应用程序
15.4 小结

第16章 Ajax与Struts
16.1 Ajax入门
16.1.1 Ajax发展过程
16.1.2 Ajax魅力所在

16.2 Ajax核心
16.2.1 使用XMLHttpRequest对象
16.2.2 发送请求与处理响应
16.2.3 实现基本的Ajax技术

16.3 Struts 2与Ajax框架的整合
16.3.1 Dojo框架
16.3.2 DWR框架
16.3.3 使用JSON插件

16.4 Struts 2的Ajax标签
16.5 小结

第17章 Struts 2测试
17.1 软件测试与JUnit基础
17.1.1 软件测试基础
17.1.2 JUnit基础

17.2 JUnit的使用
17.2.1 JUnit的安装
17.2.2 创建测试类
17.2.3 创建被测试类
17.2.4 运行测试

17.3 在Eclipse中使用JUnit测试Action
17.3.1 创建Struts 2项目
17.3.2 创建测试类
17.3.3 运行测试

17.4 JUnit高级
17.4.1 类级别的fixture
17.4.2 限时测试

17.4.3 异常测试
17.4.4 忽略测试
17.4.5 测试运行器
17.4.6 测试套件
17.4.7 参数化测试
17.5 小结

第18章 Spring整合
18.1 Spring初步
18.1.1 Spring 概述
18.1.2 Spring准备
18.1.3 入门实例

18.2 Spring基础特性
18.2.1 依赖注入
18.2.2 Spring 封装机制

18.3 Spring高级特性
18.3.1 Spring MVC
18.3.2 数据持久层
18.4 小结

第4篇 Struts 2综合项目实战
第19章 网络商店实例编程(Struts 2+Hibernate+Velocity)
19.1 项目概述
19.1.1 网络商店概况
19.1.2 网络商店的需求分析
19.1.3 网络商店的业务建模
19.1.4 迭代式开发介绍
19.1.5 项目功能模块分割

19.2 迭代一游客浏览商品
19.2.1 本阶段迭代的目标
19.2.2 本阶段页面概述
19.2.3 商品的数据模型和数据库设计
19.2.4 实现步骤

19.3 迭代二用户管理
19.3.1 本阶段迭代的目标
19.3.2 本阶段页面概述
19.3.3 用户数据模型和数据库设计
19.3.4 实现步骤

19.4 迭代三购物车管理
19.4.1 本阶段的迭代目标
19.4.2 本阶段页面概述
19.4.3 购物车的功能需求和设计实现
19.4.4 实现步骤

19.5 迭代四后台管理员功能
19.5.1 本阶段的迭代目标
19.5.2 本阶段页面概述
19.5.3 实现步骤
19.6 小结

第20章 网络文件管理系统(Struts 2+Hibernate+FreeMarker)
20.1 项目概述
20.1.1 网络文件管理系统概况
20.1.2 网络文件管理系统需求分析
20.1.3 网络文件管理系统业务建模
20.1.4 项目功能模块分割

20.2 迭代一实现上传、下载、删除文件
20.2.1 本阶段迭代的目标
20.2.2 本阶段页面概述
20.2.3 文件的数据模型
20.2.4 实现步骤

20.3 迭代二添加用户管理
20.3.1 本阶段迭代的目标
20.3.2 本阶段页面概述
20.3.3 用户以及用户空间的数据模型
20.3.4 实现步骤

20.4 迭代三添加消息处理,备忘录管理
20.4.1 本阶段迭代的目标
20.4.2 本阶段页面概述
20.4.3 消息和备忘录的数据模型
20.4.4 实现步骤

20.5 迭代四添加管理员功能
20.5.1 本阶段迭代的目标
20.5.2 本阶段页面概述
20.5.3 管理员的数据模型
20.5.4 实现步骤
20.6 小结

第21章 基于Struts 2和Ajax的网上购书系统(Struts 2+Hibernate+Ajax+FreeMarker)
21.1 项目概述
21.1.1 购书系统概况
21.1.2 购书系统需求分析
21.1.3 购书系统业务建模
21.1.4 项目功能模块分割

21.2 迭代一用户登录,书籍浏览
21.2.1 本阶段迭代目标
21.2.2 本阶段页面概述
21.2.3 本阶段数据模型
21.2.4 实现步骤

21.3 迭代二用户购书
21.3.1 本阶段迭代目标
21.3.2 本阶段页面概述
21.3.3 实现步骤

21.4 迭代三管理员登录,用户信息查看
21.4.1 本阶段迭代目标
21.4.2 本阶段页面概述
21.4.3 本阶段数据模型
21.4.4 实现步骤

21.5 迭代四管理员添加书籍以及添加用户
21.5.1 本阶段迭代目标
21.5.2 本阶段页面概述
21.5.3 实现步骤
21.6 小结
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证