Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)(附光盘)
定 价:99.8 元
丛书名:
- 作者:刘京华 ,等 著
- 出版时间:2010/1/1
- ISBN:9787302209768
- 出 版 社:清华大学出版社
- 中图法分类:TP312JA
- 页码:1010
- 纸张:胶版纸
- 版次:1
- 开本:16开
- 字数:(单位:千字)
《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为Struts框架篇,内容不仅包括Struts 1.x的内容,也包括Struts 2.x中的内容;第5篇为Hibernate框架篇;第6篇为Spring框架篇;第7篇为EJB与Web服务篇,内容包括EJB 3概述、JPA规范Web服务框架XFire等;第8篇为工具篇,内容包括在Java Web项目中常用的开源工具框架、主要有版本管理工具SVN、日志工具commons-logging与Log4J、报表图形引擎JFreeChart、PDF组件iText等;第9篇为实战篇,内容为两个典型的应用系统:论坛系统(Spring+Struts+Hibernate)、宠物商店(EJB 3+JPA+Struts 2)。
《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》附1张DVD光盘,内容为《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》汲及的源代码和Java Web学习视频。
《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》内容全面,结构清晰,注重实战,非常适合Java Web开发人员学习使用,同时也可以作为软件公司的案头必备参考书。
原创经典,程序员典藏 资深Java程序员耗时一年时间写作,十年开发经验毫无保留。全面、系统、深入介绍Java Web开发的核心技术与主流框架。 一线开发人员全力打造,分享技术盛宴! 内容全面:涵盖了Java Web开发所涉及的所有核心技术与主流框架 针对性强:以SSH框架整合开发为核心,可以满足95%的项目需求 讲解到位:对每种技术都剖析最有价值的核心部分,绝不拖泥带水 代码经典:提供了大量高质量代码供读者理解,并对代码进行了详细注释 示例丰富:提供了600余个从实际项目总结的示例程序,有较高的应用价值 工具详尽:详细介绍了SVN、L094J、JFree Chart、iText等开发工具 案例典型:用不同框架组合实现了论坛系统和分布式宠物商店系统 赠6.5小时视频讲解 《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》读者对象 需要全面学习Java Web开发技术的人员 广大Web开发人员 Java程序员 J2EE开发工程师 希望提高系统设计水平的人员 专业培训机构的学员 软件开发项目经理 需要一本案头必备查询手册的人员 超值DVD光盘 6.5小时Java Web开发视频讲解 《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》涉及的所有源代码 书中涉及的开源工具包 《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》涵盖的见容 Java Web开发概述 搭建Java Web开发环境 深入Servlet 深入JSP 会话跟踪 过滤器Fiter 监听器Listener JSTL标签库 自定义标签 资源国际化 数据库概述 JDBC详解 XML概述 Struts 1.x概述 Struts 1.x高级应用 Struts 2.X概述 Struts 2.X高级应用 Struts 2.X标签 Struts 2.X拦截器与文件上传 Hibernate概述 Hibernate体系结构与参数配置 Hibernate实体映射 Hibernate实体关系映射 Hibernate查询语言HQL Hibernate高级查询 Spring概述 Spring的Core模块 Spring的AOP模块 Spring的DAO模块 Spring的ORM模块 Spring的Web模块 Spring的MVC模块 访问统计系统(Spring+Struts 1+Hibernate) 邮件发送系统(Spring+Struts 2+JPA) EJB 3与JPA规范 Web Service框架XFire 版本管理工具SVN 日志工具commons-logging与log4j 报表图形引擎JFreeChart PDF组件iText 论坛系统(Spring+Struts+Hibemate) 分布式宠物商店(EJB 3+JPA+Struts 2)
前 言
JSP、Servlet、Struts、Hibernate、AOP、WebWork、Spring、EJB……,好复杂,脑袋都大了!这么多技术到底都是干什么的?它们有什么联系呢?
近几年,Web程序发展异常迅猛,不仅出现了形形色色的购物网站、交友网站、银行自助系统等,还出现了像Palm OS Web操作系统、可以替代Office等传统办公软件的Google Document等功能强大的Web程序。这些主要得益于Web程序的瘦客户端的特点,即不需要客户安装任何软件,只需要使用浏览器即可完成操作。
Web程序可以非常简单,简单到只有几个HTML页面、几个图片,例如小型企业的介绍性网站等。也可以非常复杂,例如Google Document网站,完全可以替代Word、Excel、PPT、PDF阅读器等;Google Talk也完全可以替代QQ、MSN等。实现这些Web程序所用到的技术也很多,最流行的有微软的.NET技术和Java相关技术。
Java相关技术作为最流行的开发技术之一,在Web开发领域也有着非常广泛的应用。但Java Web开发所涉及的技术比较繁杂,涉及了很多开发框架和工具,而且它们各有所长,并不完全是一个完善的体系。这对需要掌握Java Web开发的人来说,有一定的困难。笔者曾经任职于IBM中国研究院、诺基亚北京研发中心和用友软件等公司,有幸系统地学习了Java Web开发的方方面面的技术,并从事了大量的实际项目,积累了丰富的开发经验。为了帮助读者更好、更快速地掌握Java Web开发,笔者花费一年多的时间写作本书,把Java Web开发所涉及的方方面面的技术进行了归纳和总结,以最简单易懂的实例进行讲解。相信读者学习完本书内容,可以很全面地掌握Java Web开发所涉及的技术,也会搞清楚它们之间的联系,也相信读者一定会在本书的引导下极大地提升Java Web开发水平。
为了让读者对Java Web开发有一个整体认识,下面先对Java Web开发的背景知识、开发模式、开发框架和开发技术等做一个简单介绍,然后再介绍本书内容特色、知识体系、读者对象及本书学习建议等。
Java Web开发的背景知识
网站有静态、动态之分。静态网站的内容都是静态的、不可变的,网站发布后,无论是谁、什么时候访问,得到的内容都是一样的。静态网站一般不涉及编程,只需要编写几个HTML文件,连同图片等放到服务器上即可。静态网站一般不称为Web程序。
而动态网站的内容是可以变化的。动态网站一般配合数据库使用,数据存储在数据库中,通过网站程序动态添加,显示数据。而程序怎样添加、显示数据,便是本书要讲解的内容。
动态网站可以用多种语言编写,例如CGI、PHP、ASP、JSP(也是Java技术)、.NET、Perl等。其中应用最广的就是Java。因为Java是一种开源的、跨平台的、面向对象的编程语言,有着众多的免费资源和标准可供选择,例如Struts、Hibernate、Spring等。
Java Web开发的模式简介
因为Java Web的官方规范是由一个名为JCP的开放组织制定的,任何人都可以参与标准的制定,因此它的开发模式是走在时代前列的。Java Web提出了一些革命性的、颠覆传统的开发模式,例如分层模式(Model 2模式)、AOP(面向切面编程)等。本书会详细介绍这些模式。
除了JCP制定的官方规范,还有一些广泛流行的非官方的模式和设计思想。大名鼎鼎的Struts、Spring、Hibernate等都是非官方的框架。这些非官方的开发模式甚至超越了官方提出的模式。
Java Web开发所涉及的框架及技术
Java Web编程包括两部分:服务器端执行的代码和客户端(即浏览器端)执行的代码。服务器端执行的代码即Java,用于生成HTML、CSS、JavaScript等浏览器端可以执行的代码。本书的Java Web编程指的就是服务器端编程。服务器端编程可用的技术有Servlet、JSP、Struts、Spring、Hibernate、EJB、Web Service等。
浏览器端能够显示HTML、CSS代码,并能够执行JavaScript脚本程序。注意,JavaScript与Java并不是一种语言,语法不一样,运行的环境也不一样。对于一般的动态网站,可以不使用JavaScript。
JavaScript能够在浏览器中实现一些功能,例如数据校验等,还可以实现Ajax(也就是所说的Web 2.0技术)等复杂功能。跟Java编程一样,JavaScript编程也积累了一些流行的技术,例如Prototype、JQuery、DOJO等。使用这些技术能够显著提高开发效率。本书的一些章节也会用到这些框架和技术。
需要注意的是,本书侧重于服务器端Java的编程,客户端JavaScript的编程也会涉及,但不是本书重点。
本书特色
本书的写作原则是:避免啰里啰唆,长篇大论;而是抽丝剥茧,层层深入,给读者提供大量高质量的代码供读者理解,那些无用的东西与本书无关,不作介绍。本书内容上的主要特色体现在以下几个方面。
1.囊括多种主流技术
本书第14~第34章详细讲解了多种主流的技术。例如Spring、Struts、Hibernate、Web Work、Web Service、EJB 3、JPA、SSH组合、SSH2组合等。95%的Java Web系统都采用这些技术构架程序,学会了这些技术,也就能胜任95%的Java Web开发工作。
2.丰富的原创实例
本书中含有丰富的原创实例,使用效果一目了然,一些实例是国内外教材上都少有的。例如,利用Filter实现给图像动态添加Logo、使用Listener实现单点登录及在线人数统计、利用Ajax实现带进度条上传文件、利用Web Service构架自己的搜索引擎等。
3.详尽的工具讲解
本书详细讲解了SVN、Log4J、JFreeChart、iText等开发工具的使用。使用这些工具进行开发,可以极大地提高工作效率。
4.实战案例丰富
本书实战篇演示了书中所使用系统构架。例如,经典框架组合SSH(Struts+Spring+Hibernate)搭建论坛程序,比较新潮的组合SSJ(Struts 2+Spring 2+JPA)搭建博客系统。
5.标准的分层模式
本书使用接口编程模式与分层模式。书中后面的章节大都使用标准的MVC(Model- View-Control)三层模式,而Control层又分了两层:DAO层与Service层。这是比较科学的设计方式。
6.提供多媒体视频讲解
为了方便读者学习本书内容,本书配书光盘中赠送了400多分钟的Java Web开发学习视频,内容涉及常用开发工具的下载、安装和配置,同时还包括了Struts框架的核心用法。读者通过这些视频可以很直观地学习。
本书内容及体系结构
本书共分为9篇,所涉及的内容与知识体系介绍如下。
第1篇(第1~2章):入门篇。讲解Java Web开发的一些概念、搭建开发环境、并开发部署第一个Java Web程序。
第2篇(第3~7章):基础篇。讲解Servlet规范中的基础技术,包括Servlet、JSP、Cookie、Session、Filter、Listener等,并用详尽的实例演示其功能。本篇中有大量生动的演示实例。
第3篇(第8~13章):高级篇。讲解JSTL标签、自定义标签、资源国际化等高级特性,并介绍数据库的使用、JDBC编程、XML等相关知识。
第4篇(第14~19章):Struts框架篇。分别讲解Struts 1.x、Struts 2.x这两个截然不同的MVC框架,以及它们的高级应用,例如数据校验、文件上传、错误处理等。
第5篇(第20~25章):Hibernate框架篇。讲解Hibernate框架的原理,并使用@注解与XML两种方式演示Hibernate的常用配置,包括单边的及多边的一对多、多对一、多对多等关系,还包括简单的HQL查询、Left Join、Right Join等复杂查询。
第6篇(第26~33章):Spring框架篇。讲解Spring的IoC、AOP特性,并逐一讲解Spring的Core、AOP、DAO、ORM、Web、MVC等6大模块,演示Spring与Struts 1.x、Struts 2.x、Hibernate等框架的结合,以及使用Spring定时器、发送HTML电子邮件等 功能。
第7篇(第34~36章):EJB与Web服务篇。讲解Java EE规范中的EJB 3与JPA,以及Web Service实现。使用JBOSS服务器作为重量级的EJB 3容器。
第8篇(第37~40篇):工具篇。讲解Java EE开发中常用的工具,例如SVN版本控制工具、Log4J日志记录工具、JFreeChart报表引擎工具、iText电子文档工具等。
第9篇(第41~42篇):实战篇。讲解综合项目案例开发。使用轻量级框架组合Spring+Struts+Hibernate框架构建一个论坛系统;使用重量级框架组合EJB 3+JPA+Struts 2构建一个分布式的电子宠物商店系统。
本书读者对象
* 需要全面学习Java Web开发技术的人员
* 广大Web开发人员
* Java程序员
* J2EE开发工程师
* 希望提高系统设计水平的人员
* 专业培训机构的学员
* 软件开发项目经理
* 需要一本案头必备查询手册的人员
本书学习建议
Java Web开发技术比较繁杂,所以本书所涉及的内容也多而繁杂。本书尽可能地覆盖了主流开发技术。然而不同的软件公司或个人所使用的开发技术也有所不同,所以针对不同的读者应该有不同的学习路径。
* Java初学者:没有Java语言基础的人能直接学习J2EE么?当然可以。要学J2EE,不一定非要惊动Java的基础语法,只要懂得开发原理,照样能设计出高效的程序。学习的时候要注意从第1章开始学起,不要跳跃,一步步打好基础。
* 即将毕业的学生:大学时学过Java,能编写简单的程序,应该怎么学呢?可以先学习本书的第1篇,掌握JSP开发基础,然后根据企业需要,选择学习后面章节,做到对每个技术都有所涉猎。
* 已经工作一两年的程序员:做过一些项目,还有必要学习本书内容吗?本书内容很丰富,可以作为参考手册使用,遇到问题可随时查阅。另外,本书涉及很多高级技术,如SVN、JfreeChart、iText等,在业余时间可以随便翻阅,增长见识。读者可以学习本书第8篇。
* 想往系统构架师方面发展的人员:面对让人眼花缭乱的框架,却不知道选择什么好,担心系统的可扩展性太差,不能胜任海量用户访问。这些问题读者可以通过学习本书第6、7篇内容得到解决。
* 项目经理:本书对项目经理有帮助吗?本书可以帮助项目经理搭建协同工作环境(SVU),把握项目的进度(Spring),决定先开发哪一层,后开发哪一层,先开发哪一个模块,后开发哪一个模块(MVC)。读者可以学习本书最后两个案例。
本书作者及编委会成员
本书由刘京华主笔编写。其他参与编写的人员有武冬、郅晓娜、孙美芹、卫丽行、尹翠翠、蔡继文、陈晓宇、迟剑、邓薇、郭利魁、金贞姬、李敬才、李萍、刘敬、陈慧、刘艳飞、吕博、全哲、佘勇、宋学江、王浩、王康、王楠、杨宗芳、张严虎、周玉、张平、张靖波、周芳、杨罡、于海滨、张晶杰、张利峰、杨景凤、陈锴、郑剑锋、叶佩思、张涛、赵东彪、王双。在此一并表示感谢!
本书编委会成员有欧振旭、陈杰、陈冠军、顼宇峰、张帆、陈刚、程彩红、毛红娟、聂庆亮、王志娟、武文娟、颜盟盟、姚志娟、尹继平、张昆、张薛。
最后要说的是,本书书名确定为《Java Web整合开发王者归来》。感谢电影《指环王》第三部《王者归来》给我们提供的书名创意!当然这个书名不是为了炫耀作者的资历有多高,而是希望各位读者通过阅读本书,能很好地掌握Java Web开发技术,成为Java Web开发的“王者”。我将倍感欣慰!所学授之于人,不亦乐乎?
本书作者
本书知识体系导读
??
??
??
??
前言
前言
·II·
·III·
刘京华,毕业于山东大学计算机科学与技术学院。先后任职于用友软件、IBM中国研究院、Symbian中国研究院等公司或机构。毕业后一直从事Java开发,有超过10年的Java开发经验。精通Java Web开发的各种技术与框架,对图形化开发、Eclipse插件开发等各种技术也有深入研究。曾经开发过大型的分布式Web系统。参与开发过中国移动、中国联通、中国电信的网关系统。参与开发过物流管理系统、供应链处理系统、联想公司的RMS系统、IBM的Smart SCOR和Nokia Carbide平台。
第1篇 入门篇
第1章 Java Web开发概述
1.1 Web相关概念
1.1.1 胖客户端程序RCP
1.1.2 瘦客户端程序TCP
1.1.3 B/S与C/S结构
1.2 Web开发背景知识
1.2.1 Web访问基本原理
1.2.2 HTTP超文本传输协议
1.2.3 Web浏览器
1.2.4 Web服务器
1.3 Web开发技术发展历史
1.3.1 传统的Web服务器模式开发
1.3.2 动态展现页面技术
1.3.3 CGI实现页面的动态生成
1.3.4 Java Servlet:改进的CGI
1.3.5 JSP:Servlet的模板
1.3.6 JSP基本原理
1.4 本章小结
第2章 搭建Java Web开发环境
2.1 Java Web开发环境概述
2.1.1 开发工具包JDK
2.1.2 集成开发环境IDE
2.1.3 Java服务器
2.2 下载安装Java环境
2.2.1 下载JDK
2.2.2 安装JDK
2.2.3 配置环境变量
2.3 下载解压Eclipse
2.3.1 下载Eclipse
2.3.2 解压Eclipse
2.4 下载MyEclipse插件
2.4.1 下载MyEclipse插件
2.4.2 安装MyEclipse插件
2.4.3 启动MyEclipse
2.5 下载Tomcat服务器
2.5.1 下载Tomcat
2.5.2 解压配置Tomcat
2.5.3 设置端口号
2.5.4 设置临时域名
2.5.5 设置虚拟主机
2.6 第一个Java Web程序
2.6.1 新建Java Web项目
2.6.2 新建Servlet
2.7 部署到Tomcat
2.7.1 手工部署
2.7.2 MyEclipse自动部署
2.7.3 导出为WAR包
2.7.4 在MyEclipse中启动Tomcat
2.7.5 调试程序debug模式
2.8 本章小结
第2篇 基础篇
第3章 深入Servlet技术
3.1 HTTP协议
3.1.1 HTTP协议简介
3.1.2 Telnet演示HTTP协议
3.1.3 GET方式查询
3.1.4 HTTP头数据
3.1.5 POST方式提交数据
3.1.6 其他访问方式
3.2 Servlet概述
3.2.1 Servlet工作流程
3.2.2 Servlet接口
3.2.3 Java Web目录结构
3.3 编写Servlet
3.3.1 实现Servlet
3.3.2 配置
3.3.3 配置
3.3.4 部署Web程序
3.4 请求与响应
3.4.1 获取request的变量
3.4.2 response生成图片验证码
3.5 读取web.xml参数
3.5.1 初始化参数(init-param)
3.5.2 上下文参数(context-param)
3.5.3 资源注射(@Resource)
3.5.4 使用JNDI获取资源
3.5.5 注射数据源
3.6 提交表单信息
3.6.1 GET实现搜索引擎
3.6.2 POST提交个人信息
3.6.3 上传文件客户端
3.6.4 上传文件服务器端
3.7 带进度条的文件上传
3.7.1 工作原理
3.7.2 上传进度条
3.7.3 上传监听器
3.7.4 监听上传进度
3.7.5 读取上传进度
3.7.6 显示上传进度
3.8 Servlet生命周期
3.8.1 Servlet生命周期
3.8.2 个税计算器
3.8.3 注解@PostConstruct与注解@PreDestroy
3.9 Servlet之间的跳转
3.9.1 转向(Forward)
3.9.2 重定向(Redirect)
3.9.3 自动刷新(Refresh)
3.10 Servlet与线程安全
3.10.1 一个实例
3.10.2 线程不安全
3.11 本章小结
第4章 深入JSP技术
4.1 JSP简介
4.1.1 JSP概述
4.1.2 显示问候语
4.1.3 JSP工作原理
4.1.4 JSP生命周期
4.2 JSP语法
4.2.1 JSP元素与模板数据
4.2.2 JSP脚本
4.2.3 JSP输出
4.2.4 JSP注释
4.2.5 JSP方法:查询IP地址
4.2.6 JSP的if语句
4.2.7 JSP的for循环
4.2.8 while循环:显示邮件列表
4.2.9 JSP的return语句
4.2.10 JSP的break语句
4.3 JSP指令
4.3.1 page指令
4.3.2 include指令
4.3.3 taglib指令
4.4 JSP行为
4.4.1 行为
4.4.2 使用Java Bean(POJO)
4.4.3 scope实现各种计数器
4.4.4 嵌入Applet
4.4.5 行为
4.4.6 行为
4.5 JSP隐藏对象
4.5.1 out输出流对象
4.5.2 request请求对象
4.5.3 response响应对象
4.5.4 config配置对象
4.5.5 session会话对象
4.5.6 application应用程序对象
4.5.7 page页面对象
4.5.8 pageContext页面上下文对象
4.5.9 exception异常对象
4.6 JSP配置
4.6.1 JSP配置
4.6.2 标签
4.7 EL表达式
4.7.1 EL表达式
4.7.2 隐藏对象
4.7.3 EL表达式运算
4.8 本章小结
第5章 会话跟踪
5.1 Cookie机制
5.1.1 什么是Cookie
5.1.2 记录用户访问次数
5.1.3 Cookie的不可跨域名性
5.1.4 Unicode编码:保存中文
5.1.5 BASE64编码:保存二进制图片
5.1.6 设置Cookie的所有属性
5.1.7 Cookie的有效期
5.1.8 Cookie的修改、删除
5.1.9 Cookie的域名
5.1.10 Cookie的路径
5.1.11 Cookie的安全属性
5.1.12 JavaScript操作Cookie
5.1.13 案例:永久登录
5.2 Session机制
5.2.1 什么是Session
5.2.2 实现用户登录
5.2.3 Session的生命周期
5.2.4 Session的有效期
5.2.5 Session的常用方法
5.2.6 Session对浏览器的要求
5.2.7 URL地址重写
5.2.8 Session中禁止使用Cookie
5.3 Session与Cookie的比较
5.3.1 从存取方式上比较
5.3.2 从隐私安全上比较
5.3.3 从有效期上比较
5.3.4 从对服务器的负担上比较
5.3.5 从浏览器支持上比较
5.3.6 从跨域名上比较
5.4 本章小结
第6章 过滤器Filter
6.1 Filter概述
6.1.1 Filter概述
6.1.2 Filter接口
6.1.3 Filter配置
6.2 Filter经典案例
6.2.1 防盗链Filter
6.2.2 字符编码Filter
6.2.3 日志记录Filter
6.2.4 异常捕捉Filter
6.2.5 权限验证Filter
6.2.6 内容替换Filter
6.2.7 GZIP压缩Filter
6.2.8 图像水印Filter
6.2.9 缓存Filter
6.2.10 XSLT转换Filter
6.2.11 文件上传Filter
6.3 本章小结
第7章 监听器Listener
7.1 Listener概述
7.1.1 Listener的概述
7.1.2 Listener的使用
7.2 Listener的分类
7.2.1 监听对象的创建与销毁
7.2.2 实例:监听Session、request与servletContext
7.2.3 监听对象的属性变化
7.2.4 监听Session内的对象
7.3 Listener使用案例
7.3.1 单态登录
7.3.2 显示在线用户
7.4 本章小结
第3篇 高级篇
第8章 JSTL标签库
8.1 JSTL概述
8.1.1 什么是标签
8.1.2 一个标签实例
8.1.3 为什么使用标签
8.1.4 JSTL标签库
8.2 JSTL的core标签库
8.2.1 标签
8.2.2 标签
8.2.3 、、标签
8.2.4 显示偶数
8.2.5 标签遍历List
8.2.6 标签遍历Map对象
8.2.7 标签的varStatus属性
8.2.8 标签
8.2.9 实现计数器
8.2.10 标签
8.2.11 捕捉异常
8.2.12 导入网络资源
8.2.13 标签
8.2.14 标签
8.2.15 标签
8.3 JSTL的fmt标签库
8.3.1 设置编码
8.3.2 显示所有地区的数据格式
8.3.3 显示全球时间
8.3.4 设置时区
8.3.5 、、资源国际化
8.3.6 标签
8.3.7 显示不同地区的各种数据格式
8.3.8 解析数字
8.3.9 格式化日期
8.3.10 解析日期
8.4 JSTL的fn方法库
8.4.1 fn:contains()显示用户浏览器、操作系统
8.4.2 fn:containsIgnoreCase()方法
8.4.3 fn:endsWith()显示文件格式
8.4.4 fn:startsWith()方法
8.4.5 fn:escapeXml()实现HTML编码
8.4.6 fn:indexOf()方法
8.4.7 fn:split()分割字符
8.4.8 fn:join()联合字符
8.4.9 fn:length()方法
8.5 JSTL的SQL标签库
8.5.1 设置数据源
8.5.2 查询表数据
8.5.3 分页显示
8.5.4 结果集的动态遍历
8.5.5 更新表数据
8.5.6 , 设置日期参数
8.5.7 事务管理
8.6 JSTL的XML标签库
8.6.1 获取新浪RSS新闻
8.6.2 输出指定元素
8.6.3 遍历新浪RSS新闻
8.6.4 标签
8.6.5 、、标签
8.6.6 标签
8.6.7 转化XML为HTML
8.7 本章小结
第9章 自定义标签
9.1 编写自定义标签
9.1.1 版权标签
9.1.2 tld标签库描述文件
9.1.3 方法的调用顺序
9.1.4 使用TagSupport
9.1.5 带参数的标签
9.1.6 带多个参数的标签
9.1.7 带标签体的自定义标签
9.1.8 多次执行的循环标签
9.1.9 带动态属性的自定义标签
9.2 嵌套的自定义标签
9.2.1 实例:表格标签
9.2.2 嵌套标签的配置
9.2.3 table父标签
9.2.4 column子标签
9.2.5 运行效果
9.3 JSP 2.x标签
9.3.1 SimpleTag接口
9.3.2 带标签体的JSP 2.x标签
9.3.3 带多个标签体的JSP 2.x标签
9.4 编写自定义方法
9.4.1 自定义方法
9.4.2 方法描述文件
9.5 本章小结
第10章 资源国际化
10.1 资源国际化简介
10.1.1 I18N
10.1.2 I10N
10.2 资源国际化
10.2.1 资源国际化示例
10.2.2 资源文件编码
10.2.3 显示所有Locale代码
10.2.4 带参数的资源
10.2.5 ResourceBundle类
10.2.6 Servlet的资源国际化
10.2.7 显示所有Locale的数字格式
10.2.8 显示全球时间
10.3 本章小结
第11章 数据库概述
11.1 数据库简介
11.1.1 发展历史
11.1.2 数据库模型
11.1.3 SQL、DDL与DML
11.2 MySQL数据库
11.2.1 MySQL安装与配置
11.2.2 MySQL启动与关闭
11.2.3 bin目录下的程序
11.2.4 登录MySQL
11.2.5 MySQL控制台
11.2.6 控制台信息
11.3 DDL SQL语句
11.3.1 列出数据库模式
11.3.2 切换数据库模式
11.3.3 列出数据表
11.3.4 查看表结构
11.3.5 创建数据库模式
11.3.6 删除数据库模式
11.3.7 修改数据库模式
11.3.8 创建表
11.3.9 删除表
11.3.10 修改表
11.4 DML SQL语句
11.4.1 插入数据
11.4.2 查询数据
11.4.3 删除数据
11.4.4 修改数据
11.4.5 创建,删除,授权用户
11.4.6 批量执行SQL语句
11.5 MySQL客户端工具
11.5.1 MySQL图形界面工具
11.5.2 MyEclipse管理工具
11.6 Apache Derby
11.6.1 Derby概述
11.6.2 Derby的使用
11.6.3 使用嵌入式Derby记录日志
11.7 本章小结
第12章 JDBC详解
12.1 JDBC简介
12.1.1 查询实例:列出人员信息
12.1.2 各种数据库的连接
12.2 MySQL的乱码解决
12.2.1 MySQL的乱码解决
12.2.2 从控制台修改编码
12.2.3 从配置文件修改编码
12.2.4 利用图形界面工具修改
12.2.5 URL中指定编码方式
12.3 JDBC基本操作:CRUD
12.3.1 查询数据库
12.3.2 插入人员信息
12.3.3 注册数据库驱动
12.3.4 获取自动插入的ID
12.3.5 删除人员信息
12.3.6 修改人员数据
12.3.7 使用PreparedStatement
12.3.8 Statement批处理SQL
12.3.9 PreparedStament批处理SQL
12.4 处理结果集
12.4.1 查询多个结果集
12.4.2 可以滚动的结果集
12.4.3 Pagination分页显示
12.4.4 带条件的查询
12.4.5 ResultSetMetaData元数据
12.4.6 直接显示中文列名
12.5 JDBC高级应用
12.5.1 DAO模式与Java Bean
12.5.2 事务实例:转账
12.5.3 抛出异常自动回滚
12.5.4 存储二进制数据
12.5.5 读取二进制数据
12.5.6 数据源(连接池)
12.6 本章小结
第13章 XML概述
13.1 初识XML
13.1.1 什么是XML
13.1.2 XML的用途
13.1.3 XML的技术架构
13.1.4 XML开发工具
13.2 XML基本语法
13.2.1 XML文档的基本结构
13.2.2 标记必须闭合
13.2.3 必须合理地嵌套
13.2.4 XML 元素
13.2.5 XML 属性
13.2.6 只有一个根元素
13.2.7 大小写敏感
13.2.8 空白被保留
13.2.9 注释的写法
13.2.10 转义字符的使用
13.2.11 CDATA的使用
13.3 JDK中的XML API
13.4 XML解析模型
13.4.1 DOM解析
13.4.2 SAX解析
13.5 XML与Java类映射JAXB
13.5.1 什么是XML与Java类映射
13.5.2 JAXB的工作原理
13.5.3 Java对象转化成XML(marshal)
13.5.4 XML转化为Java对象(unmarshal)
13.5.5 更为复杂的映射
13.6 本章小结
第4篇 Struts框架篇
第14章 Struts 1.x概述
14.1 Struts简介
14.1.1 Struts概述
14.1.2 MVC概述
14.2 第一个Struts 1.x实例
14.2.1 添加Struts特性
14.2.2 创建HelloAction
14.2.3 完成HelloAction
14.2.4 添加输入页JSP
14.2.5 添加输出页
14.3 Struts工作流程
14.4 Struts配置文件
14.4.1 Struts配置文件详解
14.4.2 多个struts-config.xml
14.4.3 配置命名空间
14.5 Form Bean实例:提交用户信息
14.5.1 用户信息对应的Form Bean
14.5.2 用户信息输入页面
14.5.3 用户信息校验
14.5.4 Form Bean中使用Person实体类
14.6 Action的配置
14.6.1 Action与ActionForward配置
14.6.2 把JSP配置为Action
14.7 Action实例:保存用户信息到数据库
14.7.1 在struts-config.xml中配置数据源
14.7.2 Person类代码
14.7.3 数据表设计
14.7.4 Action代码:保存用户信息
14.7.5 Form Bean代码:用户信息表单
14.7.6 Action代码:列出用户信息
14.7.7 DAO层代码:保存、列出用户信息
14.7.8 JSP代码:添加、列出用户信息
14.8 Struts 1.x的线程安全
14.8.1 Action是线程不安全的
14.8.2 Form Bean是线程安全的
14.9 本章小结
第15章 Struts 1.x高级应用
15.1 Struts 1.x标签库
15.1.1 html标签库
15.1.2 bean标签库
15.1.3 logic标签库
15.1.4 nested标签库
15.1.5 tiles标签库
15.2 DispatchAction
15.2.1 利用action参数分发
15.2.2 DispatchAction
15.2.3 配置DispatchAction
15.3 上传文件
15.3.1 FormFile类型
15.3.2 保存FormFile
15.4 Validator自动校验数据
15.4.1 支持自动校验的ValidatorForm
15.4.2 Validate规则配置
15.4.3 错误信息配置
15.4.4 配置到struts-config.xml中
15.4.5 配置客户端JavaScript校验
15.5 动态属性Form Bean
15.5.1 动态属性表单DynaActionForm
15.5.2 Action中获取动态属性
15.5.3 JSP中使用动态属性
15.6 异常处理
15.6.1 异常捕捉ExceptionHandler
15.6.2 配置ExceptionHandler
15.7 struts-config.xml中使用通配符
15.8 本章小结
第16章 Struts 2.x概述
16.1 Struts 2.x简介
16.1.1 Struts 2简介
16.1.2 Struts 2与WebWork 2的关系
16.2 第一个Struts 2实例
16.2.1 下载Struts 2类库
16.2.2 登录功能Action
16.2.3 Struts 2配置文件
16.2.4 JSP登录页面
16.2.5 配置web.xml
16.2.6 更改.action后缀
16.3 Struts 2工作流程
16.3.1 Struts 2工作流程
16.3.2 Struts 2的线程安全
16.3.3 程序入口FilterDispatcher
16.4 Struts 2配置文件
16.4.1 struts.properties
16.4.2 struts.xml
16.4.3 配置package
16.4.4 配置命名空间
16.5 Action详解
16.5.1 ActionSupport类
16.5.2 Action接口
16.5.3 不继承任何类的Action
16.5.4 Action的可执行方法
16.5.5 通过URL执行Action的方法
16.5.6 将执行方法配置到Action
16.6 Struts 2的零配置
16.6.1 通过@注解实现Action零配置
16.6.2 web.xml中指定Action目录
16.6.3 零配置的Action访问方式
16.7 Action中使用POJO
16.7.1 图书管理Action
16.7.2 图书实体Book类
16.7.3 通配符配置Action
16.7.4 JSP添加、列表页面
16.8 本章小结
第17章 Struts 2.x高级应用
17.1 数据类型转换器
17.1.1 实例:日期转换器
17.1.2 配置转换器
17.1.3 Action代码示例
17.1.4 为Action配置转换器
17.2 获取request、response
17.2.1 利用ServletActionContext的静态方法
17.2.2 利用相关的Aware接口
17.3 使用Validator校验数据
17.3.1 使用XML配置数据校验Validator
17.3.2 配置客户端Validator
17.3.3 常用的Validator
17.3.4 使用@Java注解配置Validator
17.4 本章小结
第18章 Struts 2.x标签
18.1 Struts 2.x标签
18.1.1 Struts 2标签与EL表达式
18.1.2 Struts 2标签tld文件
18.2 OGNL语言
18.2.1 OGNL概述
18.2.2 “#”声明OGNL表达式
18.2.3 “%”显式声明OGNL表达式
18.2.4 “$”在资源文件中引用OGNL表达式
18.3 控制标签
18.3.1 if、elseif、else标签控制流程
18.3.2 append标签连接多个List
18.3.3 generator标签将字符转化为List
18.3.4 iterator标签遍历集合
18.3.5 merge标签取集合的并集
18.3.6 subset标签过滤集合元素
18.4 数据标签
18.4.1 action标签包含action页面
18.4.2 bean标签引用Java Bean
18.4.3 date标签输出日期
18.4.4 i18n、text标签声明资源国际化
18.4.5 include标签包含JSP页面
18.4.6 param标签传递参数
18.4.7 set标签设置变量值
18.4.8 property标签输出变量值
18.5 表单UI标签
18.5.1 form标签输出表单
18.5.2 textfield、textarea、file、checkbox、radio标签
18.5.3 select、autocomplete标签下拉框
18.5.4 使用动态数据的autocomplete标签
18.5.5 checkboxlist标签多选框组
18.5.6 combobox标签复合框
18.5.7 datetimepicker标签日期选择器
18.5.8 doubleselect标签联动选择框
18.5.9 optiontransferselect标签
18.5.10 optgroup标签选项组
18.6 非表单UI标签
18.6.1 debug标签输出调试信息
18.6.2 fielderror、actionerror、actionmessage标签错误信息
18.6.3 div、submit、a标签实现无刷新获取数据
18.6.4 无刷新实现登录、注销
18.6.5 tabbedPanel标签页
18.6.6 tree标签输出树
18.6.7 使用tree显示文件结构
18.6.8 使用tree动态加载数据
18.7 本章小结
第19章 Struts 2.x拦截器与文件上传
19.1 使用拦截器
19.1.1 timer计时拦截器
19.1.2 token防重复提交拦截器
19.1.3 execAndWait执行等待拦截器
19.1.4 自定义的权限验证拦截器
19.2 上传文件
19.2.1 上传文件的Action
19.2.2 上传文件的JSP表单
19.2.3 上传文件相关的设置
19.2.4 错误信息设置
19.2.5 上传多个文件
19.3 本章小结
第5篇 Hibernate框架篇
第20章 Hibernate入门
20.1 Hibernate简介
20.1.1 ORM概述
20.1.2 认识Hibernate
20.1.3 Hibernate的原理
20.2 第一个Hibernate程序
20.2.1 添加Hibernate特性
20.2.2 添加Hibernate的Jar
20.2.3 配置Cat实体类
20.2.4 修改Hibernate配置文件
20.2.5 修改Hibernate工具类
20.2.6 初始化MySQL数据库
20.2.7 配置Log4J
20.2.8 执行Hibernate程序
20.3 第一个Hibernate Web程序
20.3.1 DAO层代码
20.3.2 Servlet层代码
20.3.3 列出所有的Cat
20.3.4 添加Cat
20.3.5 修改Cat
20.3.6 删除Cat
20.4 本章小结
第21章 从宏观上把握Hibernate
21.1 Hibernate体系结构
21.2 Hibernate的相关概念
21.3 可持久化对象的状态
21.4 Hibernate配置参数
21.4.1 配置文件hibernate.properties、hibernate.cfg.xml
21.4.2 编程式配置、运行时配置
21.4.3 获取SessionFactory
21.4.4 获取、断开数据库连接
21.4.5 可选的配置参数
21.4.6 Hibernate日志
21.5 本章小结
第22章 Hibernate实体映射
22.1 实体类映射
22.1.1 @注解配置
22.1.2 XML文件配置
22.1.3 配置到hibernate.cfg.xml中
22.2 主键映射
22.2.1 @配置主键
22.2.2 XML配置主键
22.3 主键生成规则
22.3.1 @主键生成规则
22.3.2 XML主键生成规则
22.4 普通属性映射
22.4.1 @配置普通属性
22.4.2 XML配置普通属性
22.5 日期属性配置
22.5.1 @配置日期属性
22.5.2 XML配置日期属性
22.6 临时属性映射
22.7 版本属性配置
22.7.1 乐观锁与悲观锁
22.7.2 @配置乐观锁
22.7.3 XML配置乐观锁
22.8 本章小结
第23章 Hibernate实体关系映射
23.1 单边的一对多关系:电子邮件管理
23.1.1 UML、数据库关系
23.1.2 @配置Person2类
23.1.3 @配置Email类
23.1.4 配置到Hibernate.cfg.xml中
23.1.5 运行代码
23.1.6 延迟加载与即时加载
23.1.7 延迟加载异常
23.1.8 XML配置Person类
23.1.9 XML配置Email类
23.1.10 加载XML配置的实体
23.1.11 配置String类型的实体
23.2 单边的多对一关系:论文管理
23.2.1 UML、数据库关系
23.2.2 @配置Type类
23.2.3 @配置Article类
23.2.4 配置到Hibernate.cfg.xml
23.2.5 运行代码
23.2.6 XML配置Type类
23.2.7 XML配置Article类
23.3 双边的多对一、一对多关系:学生属性
23.3.1 UML、数据库关系
23.3.2 @配置Clazz类
23.3.3 @配置Student类
23.3.4 配置到Hibernate.cfg.xml
23.3.5 运行代码
23.3.6 XML配置Clazz类
23.3.7 XML配置Student类
23.4 单边的多对多关系:论坛文章管理
23.4.1 UML、数据库关系
23.4.2 @配置Tag类
23.4.3 @配置Post类
23.4.4 运行代码
23.4.5 XML配置Tag类
23.4.6 XML配置Post类
23.5 双边的多对多关系
23.5.1 @配置Tag类
23.5.2 XML配置Tag类
23.6 单边的一对一关系:舰船管理
23.6.1 UML、数据库关系
23.6.2 @配置Ship类
23.6.3 @配置Sailor类
23.6.4 运行代码
23.6.5 XML配置Ship类
23.6.6 XML配置Sailor类
23.7 双边的一对一关系
23.7.1 @配置Ship类
23.7.2 XML配置Ship类
23.8 主键相同的一对一关系:客户地址管理
23.8.1 UML、数据库关系
23.8.2 @配置Customer类
23.8.3 @配置Address类
23.8.4 运行代码
23.8.5 XML配置Customer类
第1篇 入门篇
在计算机发展历史上,网络的出现是个重要的里程碑。网络在计算机技术中发挥着越来越重要的作用。如果说上个世纪是桌面程序的时代,那么本世纪无疑就是网络程序的时代。
1.1 Web相关概念
Web程序也就是一般所说的网站,由服务器、客户端浏览器以及网络组成。Web程序的好处是使用简单,不需要安装、学习,有一台电脑、一根网线就可以使用。截至2006年底,互联网上的网站数量已经超过了1亿大关,中国的网站也已经有200万之多了,可见网络程序的影响力。
但Web程序又不是一般意义上的网站。网站、的目的是提供信息服务,重在内容,程序往往比较简单。但一个商用的Web程序往往比较复杂,背后结合数据库等技术,例如ERP系统、CRM系统、财务系统、网上办公、网上银行、在线业务办理等。下面从专业上解释一下Web程序相关的几个概念。
1.1.1 胖客户端程序RCP
桌面程序(Desktop Program)也叫胖客户端程序(Rich Client Program,简称RCP)。因为桌面程序需要安装到计算机上才能运行,并会导致计算机软件的体积越来越大,因此人们形象地称桌面程序为胖客户端程序。
计算机上安装的任何程序都是RCP。例如办公软件Word、Excel,聊天工具QQ、MSN,播放软件Media Player、Flash Player、图像制作软件Photoshop等。
RCP的优点很明显,只要安装上了软件,就能高效地使用软件的功能。RCP的缺点也很明显,就是需要安装才能使用,并且会占用大量的硬盘资源。如果某个公司的1000台电脑都要使用Word功能,那么这l000台电脑都要安装Word。
……