1、 中国高等职业技术教育研究会推荐 高职高专计算机专业规划教材 Java Web程序设计基础教程 李绪成 闫海珍 张 阳 王 红 王趾成 主审 西安电子科技大学出版社 2 0 0 7 编著 内 容 简 介 本书是关于Java Web开发的基础教程,共分15章。第1章介绍如何构建Java Web应用;第2、3章介绍如何解决Java Web应用的输入和输出问题;第46章对登录功能进行了3次重构,这也是Java Web技术的3 个发展阶段,并重点介绍了MVC模式;第 710章进一步强化MVC模式的运用,并介绍了数据库的常用操作以及分页显示和连接池等内容;第1113章介绍了Java Web应用的国际化、
2、异常处理和安全控制问题;第14章是关于购物车和订单管理的综合实训,分析了购物车功能和订单管理功能;第15章介绍了程序调试。本书附录部分给出了Java Web开发中常用的功能、Java Web开发的核心API以及本书的知识点索引。 本书可以作为高职高专相关专业JSP课程的教材,也可以作为JSP培训的教材,同时本书也适合自学JSP的人员使用。 本书配有电子教案,有需要的老师可与出版社联系,免费提供。 图书在版编目(CIP)数据 Java Web程序设计基础教程李绪成等编著. 西安:西安电子科技大学出版社,2007. 11 中国高等职业技术教育研究会推荐. 高职高专计算机专业规划教材 ISBN 97
3、875606 -19330 . J . 李 . JAVA 语言程序设计高等学校:技术学校教材 . TP312 中国版本图书馆CIP数据核字(2007)第167183号 策 划 杨 璠 责任编辑 阎 彬 杨 璠 出版发行 西安电子科技大学出版社(西安市太白南路2号) 电 话 (029)88242885 88201467 邮 编 710071 http:/ E-mail: 经 销 新华书店 印刷单位 西安文化彩印厂 版 次 2007年11月第1版 2007年11月第1次印刷 开 本 787毫米1092毫米 1/16 印 张 18.875 字 数 430千字 印 数 14000册 定 价 25.0
4、0元 ISBN 9787 - 560619330/TP1001 XDUP 2225001-1 * * * 如有印装问题可调换 * * * 本社图书封面为激光防伪覆膜,谨防盗版。 1 前 言 在多年的教学过程中,作者使用了多本 JSP 的教材,应该说这些教材都写得挺好。但是实际了解到的情况是学生听课的时候可以听懂,学完之后却不知道怎么去应用,要自己编写一个网站程序还是有困难。这几年作者也一直在研究其中的原因,逐渐发现了一些问题,并且想了一些方法来解决,还在一些班级进行了实验,效果比较好。现在想把这些想法与其他老师分享,让学生也能学有所用。 本书运用的思想 应用驱动而不是知识点驱动。 现有教材的编
5、写基本上都是按照JSP知识点的分类来进行的,例如:JSP概述、JSP基础、内部对象、JSP动作和指令、JavaBean、JDBC、表达式语言、国际化、标准标签库等。这些教材都是以知识点驱动的,强调的是知识点。 在实际应用中我们需要解决各种问题,不同的问题需要不同的知识点,即实际中是以问题为驱动的。所以本书以应用为中心,围绕如何解决应用中的问题进行讲解,即完成相关功能需要什么知识点,就介绍什么知识点。 同时为了使学生能够全面掌握知识,我们在每一部分列出了相关的知识点。 提供完整的项目而不是不相关的例子。 多数 JSP 图书的不同章节采用的实例都没有关联性,这样在学完整个课程之后,学生会感觉例子很
6、乱,没有整体的概念。 本书的所有内容都围绕一个项目进行,每一部分完成项目的一个功能,实训也是整个项目的一部分。这样当课程结束之后,学生就可以完成一个完整的项目。 不仅教学生如何实现,并且教学生如何设计。 对于每一个例子,不仅教学生如何编写程序,更重要的是教学生如何进行设计,这样学生就可以触类旁通了。 先模仿后自创。 每次介绍完一个案例之后,都要求学生完成一个类似的功能,通过这样的模仿来加深理解所学的知识,最后由学生再独立完成一部分功能。 理论与实训并重。 每部分内容都包括教师讲授和学生实训两部分,使得理论与实训结合紧密。 JSP用于显示,Servlet用于控制。 在JSP的发展早期,开发Jav
7、a Web应用的主要方式是在网页中嵌入Java代码,但这种方式的弊端逐渐显露出来。Java Web 开发经常是由多种技术协同完成的:JSP 主要完成与用户的交互过程,不应该包含处理代码和控制代码;而Servlet在显示信息方面没有优势,所以坚决不使用Servlet显示信息。本书严格遵循这种思想。 2 本书的内容组织 本书的内容组织围绕一个比较通用的项目网上书店系统。整个项目分成三个部分: 图书信息管理。 用户管理。 购物车和订单管理。 每一部分的内容基本上都覆盖了JSP的所有知识点。整个课程的安排按照两条线进行:教师授课和学生实训。 教师授课内容是用户管理功能部分。把用户管理功能分解成各个小的
8、案例,每个案例都可以完成一个功能,每个案例包含若干知识点。授课时边讲解边带领学生操作,把知识点融合在案例中。 学生实训内容是图书信息管理部分。每章最后都会有一个学生实训,这个实训与本章授课内容吻合,与教师讲解的案例功能基本相同。例如,教师讲解用户信息修改功能,学生实训的内容就是图书信息修改功能。 在完成基本内容的讲解和实训之后,在本书的最后给出了一个综合实例:购物车和订单管理。这部分内容由教师介绍知识点,然后由学生进行实训。 本书内容是根据JSP的最新规范编写的,采用的模式是MVC模式,它是几乎所有Java Web 应用开发所采用的模式。JSP 主要用于显示信息,所以在用到 JSP 的时候,要
9、避免在JSP中嵌入Java代码。虽然Servlet能够像JSP一样向用户显示信息,但是Servlet主要用于控制。本书严格遵循这种思想,只在Servlet中编写控制代码。 学习任何一门语言时,学习者调试程序的能力都是一项非常基础但却非常重要的能力。本书专门使用一章的内容对常见的调试错误进行了分析,并对常用的调试方法进行了介绍。 本书首先描述目标,然后通过运行效果进一步展示目标,并根据目标分析编程思路,最后一步一步告诉读者如何编写这个代码。 学习目标 通过学习本书,学生应该达到以下目标: 创建一个网站。 包括搭建运行环境,创建网站的框架。 展示信息。 可以采用多种向用户展示信息的方式,通常情况下
10、展示信息是 Web 应用的最基本的 功能。 提交信息。 通过界面提交信息到服务器是网站中信息更新功能所必需的。 检索信息。 信息检索功能能够帮助用户从网站提供的大量信息中查找需要的信息。这样的功能对于一个信息量非常大的网站来说是必不可少的。 处理信息。 能够完成网站中信息的处理。 3 管理信息。 能够管理各种网站中的大量信息。 进行安全控制。 包括实现登录功能和权限控制。 进行异常处理。 能够处理网站中的各种异常。 进行分页显示。 分页显示在很多网站中都存在,学习完本课程后,读者应该能够掌握其方法。 完成购物车管理。 几乎所有的电子商务网站中都有购物车功能,学习完本课程后,学生应该能够编写各种
11、网站中的购物车管理代码。 主要内容 全书共分15章。第1章介绍如何构建Java Web应用。第2章和第3章介绍如何解决Java Web应用的输入和输出问题。第46章对登录功能进行了3次重构,这也就是Java Web技术的 3 个发展阶段。第 710 章进一步强化 MVC 模式的运用,并介绍数据库的常用操作。第1113章介绍了Java Web应用的国际化、异常处理和安全控制问题。第14章是综合实训,分析了购物车功能和订单管理功能的主要编写思路,并给出了关键的知识点。第15章介绍了在编写和运行Java Web应用的过程中经常出现的错误以及如何调试程序。 本书最后有3个附录。附录A列出了Java W
12、eb开发中常用的功能,可以方便读者的学习。附录B列出了JSP技术中非常重要的API方法,读者在学习的过程中可以查找使用。附录C是本书的知识点索引,因为本书没有像其他书那样按照知识点分章节,而是按照应用划分,所以要查找知识点可以通过该索引进行。 编者分工 本书第1章及第915章由李绪成编写,第2、3章由闫海珍编写,第46章由王红编写,第7、8章由张阳编写。全书由李绪成统稿,闫海珍审定。 给学生的建议 一定要动手写程序,只有动手了才能发现问题。 不要害怕出错,编写程序不可能不出错,熟练之后,就会少出错了。 充分利用网络,网络上的各种资源非常丰富。 要学好英语,因为很多文档都是英文的。 要掌握Jav
13、a基础,本书对JSP的语法讲得不多,难就难在Java语言本身。 给老师的建议 给学生动手的时间,不管你讲得有多好,如果学生不自己动手,一切都是徒劳。 帮助学生调试程序,调试程序的时候要给学生讲解,最好能够把你调试程序过程中心中想的东西告诉学生。要鼓励学生试着自己调试程序。 4 预备知识 预备知识包括三个方面:Java、HTML和JavaScript语言。 Java Web开发技术是以Java语言为基础的,其编码使用的都是Java的基本语法,最后也是按照Java程序的运行方式运行的。如果读者对Java不熟悉,需要补习一下Java。能够用到的Java知识包括: Java的基本语法,包括标识符、运算
14、符、变量、方法和流程控制等。 Java的面向对象特性,包括包、类、接口的定义和使用。 Java 的常用类库,包括字符串相关的 String 和 StringBuffer、日期处理相关的 Date和Calendar、日期和数字的格式化DateFormate和NumberFormat以及Collection框架等。 异常处理,在编写Java文件的时候不可避免地要使用它。 对于HTML语言,我们需要掌握最基本的语法,包括以下几个方面: 网页的结构。 表单元素。 JavaScript 语言在客户端执行,所以如果希望在浏览器端执行功能,就需要使用JavaScript语言。现在在网站中使用比较多的Java
15、Script内容有客户端验证。 进一步学习的建议 Java Web开发技术属于Java企业级应用的一部分,属于Java企业级应用中的Web层。如果想更完整地学习Java企业级应用的各方面,可以学习Java EE企业级开发技术,它包括企业级 JavaBean(EJB)技术和 RMI、JNDI、JTA、JTS、数据源、JavaMail、JAAS、连接器等服务。 另外,本书介绍的是最基本的Java Web开发技术。为了提高Web应用的开发效率和方便Web应用的管理维护,人们设计出了很多基于Java Web技术的框架。常见的Web应用框架有:JSF、Struts、Tapestry和WebWork。它们
16、都属于Web层框架,主要用于开发Web应用,其功能基本相同,但特性各有千秋。在Java 企业级应用的最新版本中,JSF 已经属于Java Web技术的一个组成部分。读者可以选择一种Web应用框架进行学习。 除了这些Web应用框架之外,还有一些能够简化对数据库进行操作的技术,通常称为持久层框架,常见的有Hibernate和TopLink。Hibernate相对来说比较流行,在很大程度上影响了后来的EJB3中Java持久性API的规范。读者可以从Hibernate和TopLink中选择其一进行学习,但如果读者要学习Java企业级应用,则可以不用学习这些持久性框架,因为在Java企业级应用中包含了J
17、ava持久性API,而且在Java企业级应用的早期版本中还有实体Bean。 还有一个比较流行的技术Spring,它是一个企业级应用的框架,与Java EE平行。它虽然不属于Java企业级应用开发的标准,但却非常成功,也是读者可以选择学习的一个不错的技术。 编 者 2007年9月 -1- 目 录 第1章 构建Java Web应用.1 1.1 Web应用概述.1 1.1.1 什么是Web应用1 1.1.2 Web应用是如何运行的.1 1.1.3 Web应用关注的内容.2 1.2 流行的Web应用开发技术.3 1.3 Web应用的常用功能4 1.4 Java Web应用的核心技术5 1.5 Web应
18、用的文档结构7 1.6 Web应用的运行环境及其搭建.8 1.6.1 运行环境8 1.6.2 安装JDK9 1.6.3 安装Tomcat服务器.12 1.7 创建Web应用16 1.7.1 创建Web应用.16 1.7.2 创建WEB-INF文件夹.16 1.7.3 创建web.xml文档.16 1.7.4 创建classes文件夹16 1.7.5 创建lib文件夹.17 1.7.6 创建欢迎界面.17 1.7.7 启动服务器18 1.7.8 访问JSP程序.19 1.8 JSP的运行原理20 1.9 网上书店的基本功能21 小结.21 习题1 21 实训1:创建Web应用22 第2章 输入.
19、23 2.1 用户注册界面.23 2.1.1 功能描述 23 2.1.2 运行效果24 2.1.3 源代码25 2.2 常用表单元素.32 -2-2.2.1 单行文本框33 2.2.2 密码框33 2.2.3 单选按钮34 2.2.4 复选框34 2.2.5 下拉框35 2.2.6 文本域36 2.2.7 重置按钮36 2.2.8 提交按钮37 2.3 使用form元素.37 2.3.1 使用form元素封装要提交的信息.37 2.3.2 同一个页面中的多个form.37 2.4 对输入信息进行验证38 2.4.1 JavaScript语言.38 2.4.2 使用表单数据.39 2.4.3 调
20、用验证方法.39 2.4.4 提示用户信息.39 2.4.5 常用的方法39 2.4.6 正则表达式43 2.5 设置页面的编码方式45 2.5.1 实现代码45 2.5.2 page指令46 小结.47 习题248 实训2:图书信息.49 第3章 输出.50 3.1 注册信息确认界面及其运行效果.50 3.1.1 功能描述50 3.1.2 运行效果50 3.1.3 程序代码51 3.2 在界面上输出一个表格56 3.3 显示用户输入信息57 3.3.1 代码57 3.3.2 表达式基本语法格式.58 3.3.3 运算符58 3.3.4 隐含对象59 3.3.5 变量的作用范围.60 3.4
21、处理乱码.61 3.4.1 处理乱码的代码.61 3.4.2 编写标签库61 -3- 3.4.3 部署标签库63 3.4.4 声明标签库63 3.4.5 使用标签库中的标签.64 3.4.6 相关知识64 3.5 动态赋值.65 3.5.1 标签的使用.65 3.5.2 基本表单元素赋值.65 3.5.3 单选按钮的赋值.65 3.5.4 下拉框的赋值.66 3.5.5 多行文本框的赋值.66 3.6 其他知识点.67 3.6.1 使用隐藏域传递值.67 3.6.2 在同一个表单中有多个处理文件.67 3.7 相关知识点.67 3.7.1 使用输出68 3.7.2 使用表达式输出.68 3.7
22、.3 使用脚本输出.68 小结.69 习题369 实训3:图书信息验证.70 第4章 登录.71 4.1 用户登录功能及效果71 4.1.1 功能描述71 4.1.2 运行效果72 4.1.3 思路分析72 4.2 创建登录界面.73 4.3 创建处理文件.75 4.3.1 判断用户的信息是否正确75 4.3.2 保存用户信息.75 4.3.3 使用完成跳转.77 4.3.4 使用完成跳转77 4.4 创建登录成功的界面79 4.5 创建登录失败的界面79 4.6 相关知识点.80 小结.80 习题481 实训4:登录过程模拟 81 第5章 系统业务逻辑83 5.1 JavaBean.83 -
23、4-5.1.1 什么是JavaBean.83 5.1.2 编写JavaBean84 5.1.3 编译JavaBean85 5.2 部署85 5.3 使用JavaBean.86 5.3.1 使用.86 5.3.2 使用.87 5.3.3 使用88 5.3.4 调用业务方法.88 5.3.5 最佳实践90 5.4 在Java代码中访问已有的JavaBean91 小结.91 习题592 实训5:编写图书信息JavaBean92 第6章 系统流程控制94 6.1 Servlet.94 6.1.1 什么是Servlet94 6.1.2 Servlet的主要方法.95 6.1.3 编写简单的Servlet
24、.95 6.1.4 Servlet运行原理.98 6.2 使用Servlet完成控制.99 6.2.1 接收用户的输入信息.99 6.2.2 调用业务方法.100 6.2.3 使用request存储执行的结果.100 6.2.4 选择界面对用户进行响应100 6.2.5 完整的代码101 6.3 使用MVC模式102 6.3.1 分层102 6.3.2 传值103 6.3.3 MVC模式在Java Web中的应用.105 6.3.4 如何实现MVC模式107 6.4 信息存储.108 小结.109 习题6110 实训6:编写图书信息添加Servlet111 第7章 动态显示信息112 7.1
25、目标及演示.112 7.1.1 功能描述112 7.1.2 运行效果113 -5- 7.1.3 相关文件113 7.1.4 思路分析113 7.2 使用MySQL.114 7.2.1 MySQL数据库的下载.114 7.2.2 MySQL数据库的安装.114 7.2.3 MySQL数据库的常用操作119 7.3 编写UserBean124 7.3.1 JDBC的基本用法124 7.3.2 编写表示用户信息的JavaBean128 7.3.3 编写查询所有用户的方法130 7.3.4 采用数据库连接池.132 7.4 编写userlist.jsp.136 7.4.1 实现代码137 7.4.2
26、标签.138 7.4.3 使用标准标签库中的SQL标签.139 7.5 创建控制器.144 7.5.1 代码144 7.5.2 配置Servlet146 小结.146 习题7147 实训7:图书信息查询.148 第8章 分页显示.150 8.1 用户管理的分页显示150 8.1.1 功能描述150 8.1.2 运行效果150 8.1.3 思路分析152 8.2 在界面完成分页控制153 8.2.1 修改UserBean.java.153 8.2.2 修改FindAllUserServlet.155 8.2.3 修改userlist.jsp.157 8.3 在UserBean中完成分页控制.15
27、9 8.3.1 修改UserBean.java.159 8.3.2 修改FindAllUserServlet.163 8.3.3 修改userlist.jsp.163 8.4 共享连接数据库的代码164 8.4.1 编写DBBean164 8.4.2 使用DBBean166 小结.167 习题8167 -6-实训8:图书信息分页显示168 第9章 信息添加.169 9.1 信息添加功能演示169 9.1.1 功能描述169 9.1.2 功能演示169 9.1.3 思路分析170 9.2 更新UserBean中的代码171 9.2.1 动态SQL语句的编写171 9.2.2 添加根据用户ID判断
28、用户是否存在的方法172 9.2.3 添加add方法.173 9.3 编写添加界面addUser.jsp.174 9.4 修改用户信息列表userlist.jsp.174 9.5 编写添加用户的Servlet175 9.6 使用PrepraredStatement178 小结.179 习题9180 实训9:图书信息添加.180 第10章 修改和删除181 10.1 修改功能和删除功能演示181 10.1.1 功能描述181 10.1.2 运行效果181 10.1.3 思路分析183 10.2 修改用户信息查看界面184 10.2.1 添加功能按钮.184 10.2.2 传递用户ID.186 1
29、0.2.3 信息删除确认.187 10.2.4 添加提示信息.187 10.2.5 完整代码188 10.3 修改UserBean的代码190 10.3.1 添加根据ID查询用户信息的方法.190 10.3.2 添加修改信息的方法.192 10.3.3 添加信息删除的方法.193 10.4 修改功能中查询信息的Servlet.194 10.5 修改信息的Servlet.195 10.6 删除信息的Servlet.197 10.7 信息修改界面.199 10.8 简单事务处理.199 小结.200 习题10200 -7- 实训10:图书信息修改和删除201 第11章 国际化.202 11.1 目
30、标演示.202 11.1.1 功能描述202 11.1.2 运行效果202 11.1.3 思路分析203 11.2 编写资源文件.204 11.2.1 资源文件内容的确定204 11.2.2 资源文件的格式.205 11.2.3 转换成Unicode编码206 11.2.4 资源文件的名字.206 11.2.5 资源文件的部署.207 11.2.6 用户管理的资源文件207 11.3 实现用户管理界面的国际化.211 11.3.1 设置所使用的语言.212 11.3.2 确定要访问的资源文件212 11.3.3 访问资源文件中的内容213 11.3.4 添加语言选择功能.215 11.3.5
31、修改后的文件.215 11.4 数字的格式化.218 11.4.1 格式化数字.218 11.4.2 转换数字219 11.5 日期的格式化.219 11.5.1 格式化日期.219 11.5.2 转换日期221 小结.221 习题11221 实训11:图书管理界面的国际化.222 第12章 对系统异常进行处理223 12.1 异常处理概述.223 12.2 Java代码中的异常处理224 12.2.1 不好的编程习惯造成的异常224 12.2.2 特殊类型的异常.224 12.2.3 方法调用产生的异常.225 12.3 JSP页面中的异常处理.226 12.3.1 使用进行异常处理226
32、12.3.2 为页面指定异常处理文件227 12.3.3 通过web.xml进行配置227 小结.228 -8-习题12228 实训12:图书管理功能的异常处理.229 第13章 系统安全控制.230 13.1 完善登录功能.230 13.1.1 功能描述230 13.1.2 思路分析230 13.1.3 修改登录控制器Servlet.231 13.2 用户管理的安全控制232 13.2.1 功能描述232 13.2.2 运行效果232 13.2.3 思路分析233 13.2.4 操作session233 13.2.5 修改登录处理的代码.234 13.2.6 在用户添加界面增加控制236 1
33、3.2.7 对控制器进行安全控制236 13.3 使用过滤器进行安全控制237 13.3.1 Servlet过滤器简介.237 13.3.2 创建Servlet过滤器237 13.3.3 配置过滤器239 13.4 采用专门的安全控制页面240 13.4.1 编写专门文件.240 13.4.2 修改图书添加界面代码240 13.4.3 标签和指令.241 13.5 集中的安全控制.241 13.6 页面的局部安全要求242 13.7 增加图形验证码.242 13.7.1 图形验证码的作用.243 13.7.2 图形验证码的实现原理243 小结.243 习题13243 实训13:解决网站的安全问
34、题244 第14章 综合实训:购物车管理和订单管理245 14.1 实训的目标.245 14.2 存储结构.245 14.3 实训指导.246 14.3.1 购物车的基本原理.246 14.3.2 购物车管理249 14.3.3 订单管理254 小结.256 -9- 第15章 程序调试257 15.1 错误类型.257 15.1.1 编译错误257 15.1.2 运行时错误 .258 15.1.3 逻辑错误258 15.1.4 特殊错误258 15.2 常见编译错误.258 15.2.1 Java文件中的常见编译错误258 15.2.2 JSP文件中的常见编译错误.260 15.3 特殊类型的
35、错误.261 15.3.1 该页无法显示.261 15.3.2 找不到文件262 15.3.3 文件修改后不起作用.263 15.4 运行时错误和逻辑错误的调试.263 附录A 常用功能.265 A.1 字符串265 A.2 Stringbuffer.266 A.3 日期及其格式化.267 A.4 数字与字符串之间的转换269 A.5 Vector类270 A.6 哈希表271 附录B 相关API272 B.1 HttpServletRequest272 B.2 HttpServletResponse.273 B.3 HttpSession.275 B.4 ServletContext276
36、B.5 Cookie277 附录C 知识点索引.279 C.1 Web概述与环境.279 C.2 HTML与JavaScript.279 C.3 指令和动作280 C.4 JavaBean及其应用.281 C.5 表达式语言281 C.6 标准标签库281 C.7 JDBC282 C.8 MVC模式283 第1章 构建Java Web应用 1 了解什么是Web应用及其特点。 了解Web应用能够完成的功能。 了解现在有哪些技术可以开发Web应用。 了解Java Web应用技术的发展情况。 掌握编写一个Java Web应用需要完成的任务。 掌握如何构建一个Java Web应用。 1.1 Web 应
37、 用 概 述 1.1.1 什么是Web应用 我们通过浏览器可以访问新浪网、中华网、淘宝网、网易网、搜狐网以及微软和Sun公司的网站等,这些就是Web应用。对于Web应用,我们需要使用浏览器,通过网络,访问在远程的服务器上运行的程序。Web应用指的就是这些网站中的程序。 一个网站由大量的页面组成,每个页面通常由一个文件组成,也可能由多个文件组成。组成一个网站的大量文件之间通过特定的方式进行链接,并且存在一个系统来管理这些文件。管理这些文件的系统通常称为应用服务器,它的主要作用就是管理这些文件。 1.1.2 Web应用是如何运行的 许多读者都上过网,应该对上网的过程比较熟悉,上网的一般过程如下:
38、打开浏览器。 输入某个网址。 经过一段时间的等待,浏览器显示要访问的信息。 然后可以在网页上继续进行其他操作,可能的操作如下: 在网页上点击超级链接,访问我们希望访问的内容,等待浏览器中内容的再次更新。 在网页上输入一些信息,然后点击按钮,等待浏览器中内容的再次更新。 不管是在地址栏输入地址,还是点击超级链接或者点击按钮,都需要等待浏览器中内容的第1章 构建Java Web应用 目标: 2 Java Web程序设计基础教程 更新。等待浏览器内容更新的过程,实际上是浏览器访问Web应用的过程。这个过程如下: 浏览器根据我们输入的地址找到相应的服务器,不同的网站对应不同的服务器。这个服务器通常称为
39、Web服务器,可以接收浏览器发送的请求。 Web服务器把这个请求交给相应的文件管理器,这个文件管理器也是一个服务器,通常称为应用服务器。 应用服务器接收到请求之后,查找相应的文件,加载并执行这个文件。执行的结果通常是HTML文档。 应用服务器把执行的结果返回给 Web 服务器,Web 服务器再把这个结果返回给浏 览器。 浏览器解析HTML文档,然后把解析后的网页显示给用户。 1.1.3 Web应用关注的内容 从上面对Web应用运行过程的分析可以看出,Web应用涉及如下几个方面。 1. 文件 文件是网站中最主要的部分,各个不同的网站之间的差别主要是因为它们是由不同的文件组成的,而不同的文件可以完
40、成不同的功能。这些文件主要是由网站创建人员编写的。本书的大部分内容就是介绍如何编写这些文件。 对于这些文件的访问,可以有很多种方式。可以在地址栏中输入地址进行访问,可以通过点击超链接进行访问,还可以通过点击按钮进行访问。通过输入地址进行访问的方式没有其他两种方式方便,通常仅仅是在第一次访问这个网站的第一个页面时才使用。如果不需要提交信息,则通常使用超链接的方式;如果要提交信息,则使用按钮的形式。 2. 程序的运行支持:应用服务器、浏览器、Web服务器 编写好的文件并不能独立运行,而是需要在应用服务器中运行,即必须有应用服务器的支持。应用服务器负责查找、加载、执行文件。要访问这些文件,需要通过浏
41、览器,所以要访问Web应用必须有浏览器。浏览器与应用服务器之间的交互是通过Web服务器完成的,Web服务器接收浏览器发送的请求,并把请求转发给应用服务器,再把应用服务器执行的结果发送给浏览器。通常情况下,应用服务器和Web服务器是集成在一起的。要开发和运行Web应用,我们需要搭建这些环境。 3. 用户 Web应用的用户就是访问网站的人。访问网站的人可能是各种各样的人,他们在访问Web应用的时候是不需要培训的,所以在开发Web应用的时候应该时刻想着这个问题,不能认为用户什么都可以做,会按照我们的想法做。我们应该多为用户着想,多从用户的角度思考,编写的程序应该尽量方便用户的操作,尽量降低用户在操作
42、过程中出现错误的概率。 4. 部署人员 编写好的应用要部署到应用服务器上才能运行,这个部署过程有时由编写人员来完成,有时需要专门的人员来完成。部署人员应该对服务器非常熟悉。 学习本课程的目标就是能够编写一个完整的网站所涉及的所有文件,并能够把这些文第1章 构建Java Web应用 3 件部署到服务器上,之后能够通过客户端对其进行访问。在实际应用中,网站位于单独的服务器上,客户通过不同的客户端对网站进行访问。在学习的过程中,我们的电脑既作为服务器也作为客户端。 1.2 流行的Web应用开发技术 上网的时候,在地址栏中经常会看到文件的名字,后面有后缀名,通常根据后缀名可以知道网站是采用什么技术完成
43、的。 当浏览Sun公司网站的时候,经常看到地址栏中文件名的后缀是.jsp。图1.1所示的界面是其中的一个页面,地址是http:/ 图1.1 JSP技术网页实例 CSDN是一个大型的程序员交流的网站,经常会看到网页的后缀名是.aspx。图1.2所示的界面是一个blog,地址是http:/ 图1.2 ASP.NET技术网页实例 4 Java Web程序设计基础教程 图1.3 所示的界面是 sohu 新闻网页的首页,地址是 http:/。当浏览里面的网页时会发现,多数网页的后缀名是.php,说明该网站采用的技术是PHP;也有一些网页的后缀名是.jsp,说明sohu网站的某些模块采用的是JSP技术。
44、图1.3 PHP技术网页实例 当然有时候并不能从网页的后缀名看出网站所使用的技术,例如对于大家非常熟悉的sina网,在访问该网站的过程中就很少能够看到文件的后缀名。 上面给出了 3 个采用不同技术实现的网站的例子,它们分别采用的是 JSP、ASP.NET和PHP技术。实际上这3种技术也是目前流行的Web应用开发技术。 JSP是Sun公司的标准,有多个公司参与和支持,包括IBM、Oracle、BEA等公司,还有一些社团,包括著名的Apache组织。JSP主要采用Java技术完成。 ASP.NET是微软公司的技术,是ASP技术的升级。以前使用ASP较多。 PHP不属于某个公司,是开放源代码的,也是
45、一种非常流行的Web应用开发技术。 1.3 Web应用的常用功能 只有了解了一个网站最常用的功能,才知道我们需要解决哪些问题。下面对一个 Web应用所涉及的功能进行描述。 1. 信息展示 信息展示是网站必不可少的功能,不管您上过什么样的网站,多数时候都是在浏览上面的信息,这也是多数网站最主要的功能。对于普通的用户,使用Web应用的主要目的也是查看信息。可以认为展示信息是Web应用的输出功能。对于静态网站(信息基本上不发生变化)来说,展示信息几乎就是网站的全部功能。 第1章 构建Java Web应用 5 2. 信息查询 在网站信息量非常大的时候,通过浏览来获取想要的信息将非常困难。网站必须提供功
46、能强大的查询来方便用户的操作。查询的方式可以有很多:可以根据关键字查询,例如根据用户名、根据产品编号等;可以根据日期查询或者日期范围查询,例如在某个时间之前,或者在某个时间区间;可以组合查询,根据多个条件查询;可以进行模糊查询,只要包含所提供的关键字就可以查询到。 3. 信息输入 大部分动态网站的信息是动态变化的,需要不断更新,需要向系统添加新的信息。例如,一个新闻网站,每天都要添加新闻。 信息的添加可以采用多种方式: 用户选择,例如性别等信息。 用户输入,例如姓名、生日等。 用户上传,例如文本文件、图片文件和声音文件等。 4. 信息更新 信息更新包括信息的修改和删除,多数网站在运行的过程中,
47、都需要对信息进行更新。修改功能需要把原来的信息用新的信息替换。删除功能用于删除不再需要的信息。 5. 信息处理 网站必须对用户的各种要求进行处理。用户需要查询信息,网站就需要根据用户的要求查询。如果用户需要计算某个信息,网站就需要完成计算过程。 具体信息处理的过程和内容是由网站的功能决定的。例如,银行的交易系统需要进行的各种处理主要是跟银行各种业务相关的处理。再例如,飞机票预订系统主要完成与飞机票预订相关的处理。 6. 信息存储 各种网站都涉及大量的信息,这些信息必须进行存储。通常使用数据库存储,在很特殊的情况下可能会使用文件。从本质上来说,二者没有太大的区别。 在Web应用中信息存储是必不可
48、少的部分,并且目前多数网站的主要功能基本上都是围绕所存储的信息而设置的。在未来的发展趋势中,Web应用中的信息存储将更加重要。 1.4 Java Web应用的核心技术 Java Web应用的核心技术包括以下几个方面: JSP:进行输入和输出的基本手段。 JavaBean:完成功能的处理。 Servlet:对应用的流程进行控制。 JDBC:是与数据库进行交互不可缺少的技术。 JSTL和表达式语言EL:完成对JSP页面中各种信息的控制和输出。 6 Java Web程序设计基础教程 JSP 主要完成输入和输出的功能,主要是由HTML代码、客户端脚本(JavaScript 等)、JSP的标签和指令、自定义标签库构成。下面是一个典型的JSP的例子: 用户信息如下: 用户编号 用户名 生日 $user.userid $user.username $user.birthday JavaBean完成系统的所有处理功能。JavaBean就是Java中的普通的Java类,所以没有特殊的地方。另外,Java Web技术中提供了多个与JavaBean操作相关的标签。 Servlet技术可以完成与JSP相同的功能,但是其表现形式与JSP不同。JSP以脚本文件的形式