Java Web程序员直接在JSP(Java Server Page,Java服务页面)页面中书写Java代码的做法,使得页面中混杂有JavaScript、HTML、Java等多种语言的程序代码,可读性差,可复用性也不好。于是出现了一些框架技术,如Struts,将系统分成多层,层层封装,逻辑清晰。但这样往往又使简单的事情变复杂了。Java Web标签就可以解决这个问题。可以使简单的问题简单化处理,复杂的问题也简单化处理,甚至于不必书写任何的Java代码就可以编写出基于Java的Web系统。.
Java Web标签技术正在Java Web程序员中悄悄地流行,并被大量地使用在实际工程中。
一、本书的知识体系
学习Java Web标签的开发最好能有Java面向对象编程和JSP编程的基础。读者可以参考本丛书中的《Java面向对象编程基础》和《JSP应用开发》。
本书的知识体系结构如图1所示,遵循了循序渐近的原则,逐步引领读者从基础到各个知识点的学习,而后开发出完整的无Java语句的Web系统。
图1本书的知识体系结构
二、章节内容介绍
全书共分为三篇。第一篇为基础知识篇,分为三章。
第1章引导读者在自己的计算机上建立起一个完整的开发环境,以利于开发、运行、调试本书中的所有程序,学习各个知识点及综合项目案例。本书所使用的开发环境是JDK1.5 + Tomcat 5.5+JSTL 1.1.2。
第2章介绍JSP基础知识。包括JSP语法基础、JSP指令与动作指令、HTML与JavaScript、JSP的内置对象、如何操作数据库,介绍JSP开发的知识精华。
第3章介绍XML(eXtensible Markup Language,可扩展的标记语言)的基本概念,并讨论如何在JSP中用DOM和SAX这两种接口来解析XML文档。
有JSP开发基础的读者可跳过第2章的学习,有XML知识背景的读者可跳过第3章的学习。
第二篇为Web标签应用开发篇,共分为七章。
第4章介绍EL的语法、隐含对象及各种运算符,并辅以实例说明。
第5章讲述JSTL(JavaServer Pages Standard Tag Library,JSP标准标签库)中最为常用的核心标签库,包括与表达式相关的标签(<c:out>、<c:set>、<c:remove>、<c:catch>),输出JSP页面内容时的流程控制标签(<c:if>、<c:choose>、<c:when>、<c:otherwise>)、迭代操作标签(<c:forEach>、<c:Tokens>),生成和操作URL的标签(<c:import>、<c:redirect>、<c:url>、<c:param>)。
第6章的内容是国际化格式标签库,包括国际化标签(<fmt:setLocale>、<fmt:request Encoding>)、消息标签(<fmt:bundle>、<fmt:message>、<fmt:setBundle>、<fmt:param>)、数字日期格式化标签(<fmt:formatNumber>、<fmt:formatDate>、<fmt:parseDate>、<fmt:parseNumber>、<fmt:setTimeZone>、<fmt:timeZone>)。
第7章详细说明SQL标签库中的6个标签的用法:<sql:setDataSource>标签、<sql:query>标签、<sql:param>标签、<sql:update>标签、<sql:dateParam>标签、<sql:transaction>标签。
第8章说明3类共10个XML标签的用法。XML核心标签有<x:parse>、<x:out>、<x:set>;XML流程控制标签有<x:if>、<x:choose>、<x:when>、<x:otherwise>、<x:forEach>;XML变换标签有<x:transform>、<x:param>。
第9章介绍函数标签库中的16个函数:toLowerCase、toUpperCase、substring、substringAfter、substringBefore、trim、replace、indexOf、startsWith、endsWith、contains、containsIgnoreCase、split、join、escapeXml、length。
第10章将在介绍自定义标签的基本概念、开发步骤的基础上,从一个简单的例子入手,再深入介绍开发自定义标签相关的类与接口,说明如何配置tld文件,并辅以各种标签的开发实例来作出详细的阐述。
. 第三篇为项目实战案例篇,共分为两章。
第11章讲的是一个小型的系统—学生成绩管理系统的完整案例。
第12章中的项目案例是一个电子商务系统—网上书店。
项目实战案例篇的案例均以开发与实现过程为主线,从系统需求分析、系统总体架构的设计、数据库设计、系统目录设计、系统的关键技术、系统的各个模块的详细实现这些方面逐步深入分析,较为明晰地讲解了这个系统是如何分析、设计与编程实现的,可综合之前所学的基础知识。给出的两个项目案例的JSP页面中均看不到任何的Java代码。
本书内容由浅入深,并辅以大量的实例说明。本书可供有一定Java Web编程基础的程序员作为参考用书,也可供社会Java技术培训班作为教材使用,对于缺乏项目实战经验的程序员来说可用于快速积累项目开发经验。
随书光盘中含中全书所有实例的源代码以及项目案例的源代码,供读者学习参考使用,所有程序均经过了作者精心的调试。也可以在希赛网下载中心(http://data.csai.cn)下载光盘内容。
本书由湖南现代物流职业技术学院高级工程师、希赛顾问团顾问邓子云编写,希赛网(http://www.csai.cn)扶文奇、周进、肖佳等参与了全书的实例源代码调试工作,王勇、史小琴、陈倩、谢顺等参与了书中的项目案例的部分程序编制工作,王冀负责了部分章节的校稿和编辑工作。
感谢机械工业出版社华章公司的陈冀康编辑,他给本书的编写提出了许多指导性的意见,并承担了策划与编辑工作;借此还向我的夫人黄婧女士致敬,她一直默默地支持我的技术写作工作。正是因为这么多人的大力支持和辛勤汗水,本书才得以出版。
由于时间仓促和作者的水平有限,书中的疏漏之处在所难免,敬请读者批评指正。希赛网社区(http://bbs.csai.cn)“书评在线”版块中的“机械工业出版社”栏目中可与作者进行交流。
邓子云
2007年7月于长沙
光盘内容与使用说明
光盘内容
为方便读者阅读本书和调试程序,随书附带的光盘中有全书所有实例的源代码和实战项目的源代码。光盘中的具体内容如下。
实例源代码
第2章:【例2-1】JSP页面的程序结构;【例2-2】用户注册表单交互示例;【例2-3】JSP的内置对象使用综合实例。
第3章:【例3-1】用DOM方式解析XML文档;【例3-2】用SAX方式解析XML文档。
第4章:【例4-1】<c:out>标签使用示例;【例4-2】用EL表达式接收表单中的数据;【例4-3】用EL表达式获得pageContext中的信息。
第5章:【例5-1】<c:set>标签使用示例;【例5-2】<c:remove>标签使用示例;【例5-3】<c:catch>标签使用示例;【例5-4】<c:if>标签使用示例;【例5-5】<c:choose>标签使用示例;【例5-6】<c:forEach>标签使用示例;【例5-7】<c:fortokens>标签使用示例;【例5-8】<c:import>标签使用示例;【例5-9】<c:url>标签使用示例;【例5-10】<c:redirect>标签使用示例。
第6章:【例6-1】<fmt:setLocale>标签使用示例;【例6-2】<fmt:bundle>标签使用示例;【例6-3】<fmt:setBundle>标签使用示例;【例6-4】<fmt:message>标签与<fmt:param>标签使用示例;【例6-5】<fmt:requestEncoding>标签使用示例;【例6-6】<fmt:timeZone>标签使用示例;【例6-7】<fmt:setTimeZone>标签使用示例;【例6-8】<fmt:formatNumber>标签使用示例;【例6-9】<fmt:parseNumber>标签使用示例;【例6-10】<fmt:formatDate>标签使用示例;【例6-11】<fmt:parseDate>标签使用示例。..
第7章:【例7-1】<fmt:setDataSource>标签使用示例;【例7-2】用<sql:query>标签与<sql:param>标签结合查询数据;【例7-3】对查询结果作分页处理;【例7-4】用<sql:update>标签使用示例;【例7-5】用<sql:dateParam>标签使用示例;【例7-6】用<sql:transaction>标签使用示例。
第8章:【例8-1】一个简单的XSLT使用示例;【例8-2】<x:parse>标签使用示例;【例8-3】<x:set>标签使用示例;【例8-4】<x:if>标签使用示例;【例8-5】<x:choose>标签、<x:when>标签和<x:otherwise>标签使用示例;【例8-6】<x:forEach>标签使用示例;【例8-7】<x:transform>标签与<x:param>标签使用示例。
第9章:【例9-1】字符串大小写转换函数使用示例;【例9-2】求子串函数使用示例;【例9-3】函数trim与函数replace使用示例;【例9-4】字符串拆分与组合函数使用示例;【例9-5】字符串匹配函数使用示例;【例9-6】函数length与函数escapeXml使用示例。
第10章:【例10-1】一个简单的标签的开发;【例10-2】开发带有属性的标签:<csai:csaiColor>;【例10-3】开发带有动态属性的标签:<csai:csaiMember>;【例10-4】开发带有body的标签:<csai:csaiMemberBody>;【例10-5】开发嵌套的标签:<csai:haveChildTag>;【例10-6】在标签与JSP页面间共享变量:<csai:csaiTEI>;【例10-7】开发迭代的标签:<csai:iterateTag>;【例10-8】用SimpleTagSupport类开发标签:<csai:welcomeSimpleTag>。
实战项目源代码
第11章:学生成绩管理系统。
第12章:网上书店。
开源工具软件包
JDK1.5windows版:jdk-1_5_0_08-windows-i586-p.exe。
jspSmartUpload组件包:jspSmartUpload.jar。
Tomcat 5.5.15软件包:apache-tomcat-5.5.15.zip。
JSTL 1.1.2软件包:jakarta-taglibs-standard-1.1.2.zip。
ISO 3166码:ISO 3166 Codes (Countries).htm。
ISO 4217码:ISO 4217 - KeyinWiki.htm。
使用实例源代码
第2章~第10章各章的源代码独自成为了一个Web应用。在每一章的源代码目录中,如果有一个src目录,则在这个目录中放置了Java类的源代码;另外还有一个目录(这个目录有“WEB-INF”子目录)是Web应用的目录,在Tomcat 5的安装目录的“conf\Catalina\localhost”子目录相应的建立一个XML配置文件。例如:第5章在光盘中的源代码的目录如图1所示。
从图1可以看出,与“src”目录平行的目录是“corejstlweb”,这是Web应用的目录。将“corejstlweb”目录拷贝到本地硬盘中(如d:),再在Tomcat 5的安装目录的“conf\Catalina\localhost”子目录中新建一个名为“corejstlweb.xml”的配置文件,“corejstlweb.xml”配置文件的内容如下:
<Context path="/corejstlweb" docBase="d:/corejstlweb" debug="0" reloadable="true"
crossContext="true">
</Context>
重启Tomcat5,即可通过如下路径访问此Web应用:
http://localhost:8080/corejstlweb/JSP文件名
使用实战项目源代码
实战项目源代码所在的目录如图2所示。
“数据库”目录中有项目的数据库数据文件。如第12章网上书店的文件为bookstore_Data.MDF和日志文件bookstore_Log.LDF,把这两个文件拷贝到硬盘(如d:\data)。打开SQL Server 2000的企业管理器,在左边导航菜单中的“数据库”上单击右键,如图3所示,选择“附加数据库(A)...”快捷菜单,打开“附加数据库”对话框。在“附加数据库”对话框设置数据文件为复制到硬盘的bookstore_Data.MDF,单击“确定”按钮,完成数据库的恢复工作。
图3附加数据库
“src”目录中存放了项目的所有Java类的源代码,与“src”平行的目录是Web应用的目录,所有JSP文件、XML配置文件都存放在Web应用目录中。以网上书店为例,Web应用目录为“webContent”,将“WebContent”目录复制到硬盘中,(如d:),再在Tomcat 5的安装目录的“conf\Catalina\localhost”子目录中新建一个名为“bookstore.xml”的配置文件,其内容如下:
<Context path="/bookstore" docBase="d:/bookstore" debug="0" reloadable="true"
crossContext="true">
<Resource name="jdbc/sqlserver"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=bookstore"
username="访问数据库的用户名"
password="访问数据库的用户对应的密码"
maxActive="20"
maxIdle="10" />
</Context>
第11章的学生成绩管理系统可以参照此配置进行设置。
重启Tomcat 5,即可通过如下路径访问此Web应用:
http://localhost:8080/bookstore
有关本书的意见反馈和咨询,读者可在希赛网社区(http://bbs.csai.cn)“书评在线” 版块中的“机械工业出版社”栏目中与作者进行交流。
本书配套光盘中的内容,读者也可以在希赛网下载中心(http://data.csai.cn)下载。
编写委员会...