内 容 简 介
Java EE是当前最流行的Web应用主流框架,在企业级应用开发中占主导地位。本书系统地介绍Java EE的体系结构、JSP与Servlet在体系结构中的地位、应用服务器和主流开发工具,主要内容包括Web应用框架、Servlet、JSP、会话状态、EL和JSTL、监听器、过滤器、数据库、MVC等。
本书讲解详细且通俗易懂,以具体案例应用编程辅助,便于读者理解和自主应用。
本书适合作为Java EE应用开发人员的技术参考书,并提供网络QQ群学习辅导,读者可以自主学习,本书也适合作为Web应用开发技术培训的参考书。
前 言
Java EE是最受欢迎的Web应用开发框架。近年来,各种Java EE技术层出不穷,如JSF、Struts、Spring、JPA、Hibernate等,但占据核心地位的仍旧是JSP和Servlet,大学里教的课程大多以这两项技术为主,初学者也可将这两项技术作为起点,而网络上交流最多的也是这两项技术,因此,学习JSP和Servlet技术有很好的实际意义。
本书以JSP和Servlet技术为切入点,结合作者多年进行软件开发的经验,以及多年讲授Java EE课程的经验和体会,深入浅出地讲解JSP和Servlet,帮助读者快速入门并掌握一定的开发技能。
本书以Servlet 3.1为基础,使用Tomcat 8.0和Eclipse 3.5作为开发工具,系统地讲解Java EE Web编程涉及的知识和技术诀窍。作者认为,学习编程的最好方式是边看书边实践,大量实践才是通向成功之路的捷径。因此,本书提供大量的案例,读者按照案例训练自己(最好能手工敲入代码),一定能够在很短的时间内提升自己的思考能力和编程技能。
本书共分为14章,各章内容如下。
第1章:介绍用Servlet和JSP开发Java EE Web应用所需的软件工具和运行环境。
第2章:介绍Servlet的工作原理、Servlet编程、Servlet生命周期以及Servlet部署,并提供大量实例,来说明如何进行Servlet编程。
第3章:介绍在Java EE Web开发中经常使用的属性和属性范围,详细说明属性在上下文范围、请求范围和会话范围的区别,以及属性的线程安全,还介绍各种监听器,及Servlet 3.0新增的异步Servlet技术。
第4章:重点介绍会话的用途和基本工作原理,还介绍Cookies、HttpSession和URL重写的工作原理及编程技术。
第5章:介绍JSP的工作原理、JSP对象、JSP生命周期、JSP指令等基本概念,并结合知识点,以具体实践来展示各项核心技术。
第6章:介绍JavaBeans、JSP标准动作和表达式语言。
第7章:介绍JSTL标准标签库。JSTL支持通用的、结构化的任务,比如迭代、条件判断、XML文档操作、国际化标签、SQL标签。
第8章:介绍自定义标签库的使用,主要介绍标签文件和简单标签,以及标签库重用方法和实例。
第9章:介绍Java EE Web应用的开发和部署的核心——Web配置,主要介绍Web组件、欢迎页面、错误页面、初始化参数等的配置。
第10章:讲述Web应用安全。以Tomcat安全域为例,提供具体实例,来说明如何实现安全的Web应用。
第11章:介绍过滤器的基本概念和过滤器的编程步骤、配置和生命周期,并提供典型的过滤器编程案例。
第12章:介绍Ajax的基本概念、技术组成以及异步通信方法,通过一些典型案例,说明如何使用Ajax编程技术。
第13章:介绍如何使用JDBC提供的API对数据库进行操作,附带介绍高级的JPA、Hibernate等对象关系映射技术。
第14章:介绍使用最为广泛的MVC模式,包括MVC设计思想、JSP Model1和Model2、微型MVC、Struts和JSF。
在本书的编写过程中,作者力求精益求精,因此本书并不是市面相关书籍的杂烩,而是作者多年从事软件开发经验的汇总,作者的一些经验介绍和案例,都经过反复推敲,确信没有问题后才写进书中。尽管付出了很多努力,但限于作者的知识水平和能力,肯定会有遗漏及不妥之处,敬请读者批评指正。
本书承蒙很多朋友、同事的帮助才得以成文。衷心感谢清华大学出版社的编辑老师在内容组织、排版以及出版方面提出的建设性意见和给予的无私帮助;感谢昆明理工大学提供的宽松的研究环境;感谢读者QQ群中的朋友,他们对知识的渴求和读书的强烈愿望常常鞭策着作者;感谢国内外的同行们,作者从他们那里学习到了很多知识;感谢家人对我的支持和理解,他们是我的坚强后盾。感谢购买本书的朋友们,欢迎批评指正,你们的建议和指导将会受到重视,相关的问题会在再版中得到改进。
作 者
于昆明理工大学
目 录第1章 Java EE的体系结构 11.1 Java EE概述 21.1.1 Java EE版本简介 21.1.2 Java EE规范简介 21.1.3 有问必答 41.2 JSP与Servlet 51.2.1 JSP 51.2.2 Servlet 51.2.3 有问必答 61.3 HTML与HTTP 61.3.1 HTML简介 61.3.2 HTTP协议 71.3.3 HTTP请求和响应 81.3.4 实践出真知 111.3.5 有问必答 131.4 搭建开发环境 131.4.1 JDK的安装 131.4.2 Web服务器的安装 151.4.3 数据库的安装 161.4.4 IDE的安装 171.4.5 实践出真知 191.4.6 有问必答 22第2章 Servlet编程 252.1 Servlet概述 262.1.1 Servlet的基本概念 262.1.2 Servlet剖析 282.1.3 容器的功能 292.1.4 Servlet API 302.1.5 Servlet旧版本格式 312.1.6 有问必答 332.2 Servlet编程 342.2.1 请求和响应API 342.2.2 使用GET或POST请求 352.2.3 使用参数 372.2.4 请求头和响应头 382.2.5 文件的上传和下载 412.2.6 转发和重定向 432.2.7 实践出真知 442.2.8 有问必答 582.3 Servlet的生命周期 592.3.1 Servlet生命周期的几个阶段 592.3.2 Servlet初始化和线程 602.3.3 理解Servlet生命周期对编程的意义 602.3.4 实践出真知 612.3.5 有问必答 64第3章 属性和监听器 653.1 属性 663.1.1 属性概述 663.1.2 属性范围 683.1.3 属性的线程安全 683.1.4 实践出真知 713.1.5 有问必答 773.2 监听器 783.2.1 监听器概述 783.2.2 监听器编程 793.2.3 实践出真知 833.2.4 有问必答 94第4章 会话 954.1 会话介绍 964.1.1 会话的用途 964.1.2 会话的工作原理 964.1.3 有问必答 974.2 Cookies 984.2.1 什么是Cookies 984.2.2 Cookies的工作原理 984.2.3 Cookies API 994.2.4 Cookies的缺点 1014.2.5 实践出真知 1014.2.6 有问必答 1064.3 HttpSession 1074.3.1 HttpSession的基本概念 1074.3.2 会话生命周期 1104.3.3 实践出真知 1124.3.4 有问必答 1184.4 URL重写 1194.4.1 URL重写的工作原理 1194.4.2 实践出真知 1214.4.3 有问必答 127第5章 JSP编程 1295.1 JSP初步 1305.1.1 JSP简介 1305.1.2 简单的JSP页面 1305.1.3 JSP的工作原理 1315.1.4 JSP的基本元素 1345.1.5 JSP的注释 1425.1.6 实践出真知 1435.1.7 有问必答 1505.2 JSP对象 1515.2.1 对象的有效范围 1515.2.2 JSP的隐含对象 1555.2.3 实践出真知 1665.2.4 有问必答 168第6章 编写不带Java脚本元素的页面 1716.1 JavaBeans与JSP标准动作 1726.1.1 JavaBeans介绍 1726.1.2 使用JSP标准动作访问JavaBeans 1736.1.3 JSP标准动作再讨论 1766.1.4 实践出真知 1796.1.5 有问必答 1866.2 表达式语言 1876.2.1 EL剖析 1876.2.2 EL运算符 1886.2.3 EL函数 1896.2.4 EL的隐含对象 1906.2.5 Java小脚本和EL的控制 1936.2.6 实践出真知 1946.2.7 有问必答 211第7章 JSTL标准标签库 2137.1 JSTL介绍 2147.1.1 JSTL安装与测试 2147.1.2 JSTL标签库 2157.1.3 有问必答 2167.2 核心JSTL 2177.2.1 通用标签 2187.2.2 条件处理 2217.2.3 循环处理 2237.2.4 URL处理 2247.2.5 实践出真知 2277.2.6 有问必答 2407.3 其他标签 2407.3.1 其他JSTL标签 2417.3.2 使用除JSTL外的标签库 2437.3.3 有问必答 248第8章 自定义标签 2498.1 自定义标签介绍 2508.1.1 使用自定义标签的优势 2508.1.2 有问必答 2518.2 标签文件 2518.2.1 简单的标签文件 2518.2.2 传递参数到标签文件 2528.2.3 属性值太长的应对措施 2538.2.4 标签文件的打包 2548.2.5 实践出真知 2548.2.6 有问必答 2608.3 简单标签 2618.3.1 构建一个简单标签的处理程序 2618.3.2 简单标签的API 2628.3.3 简单标签处理程序的生命周期 2638.3.4 传递标签属性 2648.3.5 标签体的处理 2658.3.6 SkipPageException异常 2668.3.7 实践出真知 2678.3.8 有问必答 272第9章 Web应用的开发与部署 2739.1 Web应用开发环境和部署环境 2749.1.1 Web应用开发环境 2749.1.2 Web应用部署环境 2759.1.3 部署到Web服务器 2769.1.4 Web应用的目录和文件结构 2779.1.5 有问必答 2799.2 部署描述文件 2809.2.1 部署描述文件的格式 2809.2.2 Servlet配置 2819.2.3 配置欢迎页面 2839.2.4 配置错误页面 2839.2.5 配置初始化参数 2849.2.6 实践出真知 2859.2.7 有问必答 290第10章 Web应用安全 29310.1 网络安全的概念 29410.1.1 网络威胁与安全 29410.1.2 Web应用的安全认证过程 29510.1.3 有问必答 29710.2 Tomcat安全域 29710.2.1 安全域的概念 29710.2.2 安全域的基本配置 29810.2.3 常用安全域的配置步骤 30010.2.4 实践出真知 30210.2.5 有问必答 313第11章 过滤器编程 31511.1 过滤器概述 31611.1.1 过滤器的基本概念 31611.1.2 构建第一个过滤器 31811.1.3 有问必答 32011.2 过滤器编程 32011.2.1 过滤器的编程步骤 32011.2.2 过滤器配置 32211.2.3 过滤器的生命周期 32411.2.4 有问必答 32411.3 典型的过滤器 32511.3.1 不缓存页面过滤器 32511.3.2 字符编码过滤器 32611.3.3 安全检查过滤器 32711.3.4 压缩过滤器 32911.3.5 有问必答 335第12章 Ajax 33712.1 Ajax介绍 33812.1.1 为什么使用Ajax 33812.1.2 Ajax的技术组成 33912.1.3 Ajax通信 34012.1.4 实践出真知 34312.1.5 有问必答 34712.2 Ajax的应用示例 34812.2.1 即时检查用户名是否可用 34812.2.2 无刷新用户登录 35212.2.3 搜索自动提示 35512.2.4 有问必答 360第13章 数据库 36113.1 JDBC初步 36213.1.1 JDBC驱动 36213.1.2 JDBC API 36313.1.3 JDBC编程 36913.1.4 实践出真知 37113.1.5 有问必答 37513.2 JDBC进阶 37613.2.1 数据库连接池 37613.2.2 分页 38013.2.3 二进制大对象 38513.2.4 有问必答 38913.3 JDBC替代品 39013.3.1 ORM的基本概念 39013.3.2 Hibernate 39113.3.3 JPA 39513.3.4 有问必答 401第14章 MVC模式 40314.1 MVC模式概述 40414.1.1 MVC设计思想 40414.1.2 JSP Model1和Model2 40514.1.3 有问必答 40614.2 MVC模式实践 40714.2.1 微型MVC 40714.2.2 Struts 41214.2.3 JSF 41914.2.4 有问必答 424附录 源代码使用说明 425参考文献 427