具体描述
本书分为3篇共12章,包括基础知识篇、Web标签应用开发篇和项目实战案例篇。本书使用的开发环境是JDK 1.5+Tomcat 5.5+JSTL 1.1.2。
作者简介
目录信息
xml version='1.0' encoding='%SOUP-ENCODING%'第一篇 基础知识篇第1章 开发环境的安装与配置 21.1 安装与配置JDK 21.2 安装与配置Tomcat 3xml version='1.0' encoding='%SOUP-ENCODING%'1.2.1 安装Tomcat 31.2.2 配置Tomcat 61.3 安装与配置JSTL 71.4 安装与配置SQL Server 71.5 开发程序时编辑软件的选择 8本章小结 9思考题及解答 9第2章 JSP开发基础知识 102.1 JSP语法基础 102.1.1 JSP页面的程序结构 102.1.2 数据类型 112.1.3 类132.1.4 运算符 132.1.5 程序注释 142.2 JSP指令与动作指令142.2.1 JSP指令 142.2.2 JSP动作指令 152.3 HTML与JavaScript基础172.3.1 HTML 172.3.2 JavaScript 182.3.3 表单信息交互 192.4 JSP的内置对象 212.4.1 request对象 212.4.2 response对象 222.4.3 session对象 222.4.4 application对象 232.4.5 out对象 232.5 在JSP中的数据库操作 272.5.1 JDBC 272.5.2 安装SQL Server的JDBC驱动 322.5.3 查询数据 33本章小结 35思考题及解答 35第3章 XML基础知识 373.1 XML技术概述 373.1.1 编写XML 373.1.2 DTD与Schema 383.2 DOM 383.2.1 DOM相关的类 393.2.2 用DOM方式解析XML文档 423.3 SAX 453.3.1 SAX相关的类 453.3.2 用SAX方式解析XML文档 47本章小结 49思考题及解答 49第二篇 Web标签应用开发篇第4章 EL表达式 524.1 EL简介 524.2 <c:out>标签 524.3 EL语法544.3.1 .与[ ] 544.3.2 EL表达式中的保留字 554.3.3 EL变量范围 554.3.4 自动类型转换 554.4 运算符 564.5 隐含对象574.5.1 与范围有关的隐含对象 584.5.2 与输入有关的隐含对象 584.5.3 其他隐含对象 60本章小结 61第5章 核心标签库 635.1 JSTL简介 635.1.1 JSTL提供的主要功能 635.1.2 语法格式约定 645.2 <c:set>标签 645.3 <c:remove>标签 675.4 <c:catch>标签 685.5 <c:if>标签 705.6 <c:choose>、<c:when>及<c:otherwise>标签 715.7 迭代标签概述 725.8 <c:forEach>标签 735.9 <c:forTokens>标签 755.10 <c:import>标签 775.11 <c:url>标签 805.12 <c:redirect>标签 81本章小结 82思考题及解答 82第6章 国际化格式标签库 846.1 国际化格式标签概述 846.1.1 国际化格式标签的功能 846.1.2 基本概念 856.2 <fmt:setLocale>标签866.3 <fmt:bundle>标签 886.4 <fmt:setBundle>标签 906.5 <fmt:message>标签与<fmt:param>标签 916.6 <fmt:requestEncoding>标签 946.7 <fmt:timeZone>标签956.7.1 使用语法说明 956.7.2 java.util.TimeZone 956.7.3 使用<fmt:timeZone>标签 966.8 <fmt:setTimeZone>标签 976.9 <fmt:formatNumber>标签 986.10 <fmt:parseNumber>标签 1016.11 <fmt:formatDate>标签 1036.12 <fmt:parseDate>标签 105本章小结 107思考题及解答 107第7章 SQL标签库 1097.1 SQL标签概述 1097.2 <sql:setDataSource>标签 1097.2.1 使用语法说明 1097.2.2 数据源配置 1107.2.3 使用<sql:setDataSource>标签 1117.3 <sql:query>标签与<sql:param>标签 1137.3.1 <sql:query>使用语法说明 1137.3.2 <sql:param>使用语法说明 1147.3.3 如何查看查询的结果 1147.3.4 使用<sql:query>标签与<sql:param>标签 1157.4 <sql:update>标签 1217.5 <sql:dateParam>标签1237.6 <sql:transaction>标签 125本章小结 127思考题及解答 127第8章 XML标签库 1288.1 XML标签概述 1288.1.1 XML与XML标签 1288.1.2 XPath 1288.1.3 XSLT 1328.1.4 安装相关软件包 1378.2 <x:parse>标签 1378.3 <x:out>标签 1398.4 <x:set>标签 1398.5 <x:if>标签 1408.6 <x:choose>标签、<x:when>标签和<x:otherwise>标签 1418.7 <x:forEach>标签 1438.8 <x:transform>标签与<x:param>标签 144本章小结 147思考题及解答 147第9章 函数标签库 1489.1 函数标签概述 1489.2 toLowerCase 1489.3 toUpperCase 1489.4 substring 1499.5 substringAfter 1509.6 substringBefore1509.7 trim1519.8 replace 1519.9 split 1529.10 join 1529.11 indexOf 1539.12 fn:startsWith 1539.13 fn:endsWith 1549.14 fn:contains 1549.15 fn:containsIgnoreCase 1549.16 fn:length1569.17 fn:escapeXml 156本章小结 157第10章 自定义标签 15810.1 自定义标签概述 15810.1.1 自定义标签简介 15810.1.2 开发自定义标签的步骤 15910.2 一个简单的例子 16010.3 自定义标签开发相关的接口与类 16210.3.1 javax.servlet.jsp包概述16210.3.2 JspEngineInfo类 16210.3.3 JspWriter类 16210.3.4 PageContext类 16410.3.5 javax.servlet.jsp.tagext包概述 16610.3.6 Tag接口 16710.3.7 IterationTag接口 16910.3.8 BodyTag接口 17010.3.9 SimpleTag接口 17210.3.10 DynamicAttributes接口 17210.3.11 BodyContent类 17310.3.12 SimpleTagSupport类 17310.3.13 TagSupport类 17410.3.14 BodyTagSupport类 17510.3.15 JspFragment类 17610.3.16 TagExtraInfo类 17610.3.17 VariableInfo类 17710.3.18 TagInfo类 17710.4 tld文件 17710.5 开发实例集 17810.5.1 开发带有属性的标签 17810.5.2 开发带有动态属性的标签 18010.5.3 开发带有body的标签 18210.5.4 开发嵌套的标签 18410.5.5 在标签与JSP页面间共享变量 18610.5.6 开发迭代的标签 18910.5.7 用SimpleTagSupport类开发标签 192本章小结 193思考题及解答 193第三篇 项目实战案例篇第11章 学生成绩管理系统 19611.1 系统需求分析 19611.1.1 系统用户及其权限分析 19611.1.2 系统功能需求 19611.2 系统总体架构设计 19711.3 数据库设计 19811.3.1 ER图 19811.3.2 数据物理模型 19811.4 系统目录设计 20211.5 系统的关键技术 20311.5.1 连接池技术20311.5.2 标签技术在数据库操作上的应用 20411.5.3 数据分页技术 20411.6 系统登录模块 20611.6.1 用户登录功能 20611.6.2 注册用户功能 20811.6.3 系统首页 21211.7 基础数据管理模块 21611.7.1 班级信息管理 21611.7.2 教师信息管理 22211.7.3 课程信息管理 22811.7.4 学生信息管理 23411.8 教务管理模块 24011.8.1 教师授课信息管理 24011.8.2 学生成绩封存 24711.9 成绩录入模块 25311.10 学生成绩查询模块 25811.11 系统管理模块 26111.11.1 新用户审核 26111.11.2 用户管理 26411.11.3 修改当前用户密码 26911.12 系统可改进之处 271本章小结 272第12章 网上书店27312.1 系统需求分析 27312.1.1 系统用户及其权限分析 27312.1.2 系统功能需求 27312.2 系统总体架构设计 27512.3 数据库设计 27512.3.1 ER图 27512.3.2 数据物理模型 27612.4 系统目录设计 27912.5 系统的关键技术 28012.5.1 连接池技术28012.5.2 数据分页技术 28112.5.3 自定义标签技术 28212.5.4 购物车的实现 28612.5.5 在数据库中存取图片 28912.6 系统页面 29312.6.1 系统首页 29312.6.2 显示书籍信息 29812.6.3 最近新书 29912.6.4 特价书籍 30112.6.5 显示某一分类的书 30212.7 用户登录与注册 30412.7.1 注册新用户30412.7.2 用户登录 30712.8 购物模块 31112.8.1 往购物车中放入书籍 31112.8.2 查看购物车31212.8.3 从购物车中拿出书籍 31412.8.4 生成订单 31512.8.5 查看订单 31612.8.6 取消订单与确认订单 31912.9 后台管理之首页 32012.10 后台管理之书籍分类管理模块 32312.10.1 书籍分类管理主界面 32312.10.2 增加书籍类型 32612.10.3 更新书籍类型 32612.10.4 删除书籍类型 32812.11 后台管理之书籍管理模块 32812.11.1 录入书籍资料 32812.11.2 修改书籍资料主界面 33212.11.3 修改书籍信息 33512.11.4 删除书籍 33712.11.5 上传书籍图片主界面 33712.11.6 上传书籍图片 34012.12 后台管理之订单管理模块 34312.13 系统可改进之处 346本章小结 347
· · · · · · (收起)
读后感
用户评价
这本《Java Web标签应用开发》的标题着实吸引人,我本以为这是一本专注于深入讲解JSP、JSTL或者自定义标签库如何构建复杂、可重用Web组件的实践指南。然而,当我翻开书页,我看到的更多是对Java Web基础概念的冗余叙述,以及对框架API层面的泛泛而谈。我期待的是那种能手把手教你如何设计一个高性能、低耦合的标签处理器,如何处理标签生命周期中的状态管理,甚至是如何利用新的模板引擎(比如Thymeleaf或FreeMarker)的特定特性来替代传统JSP标签的深度剖析。结果,这本书更像是为初学者准备的“Java Web入门选读”,用大量的篇幅介绍了Servlet/Filter的配置流程,这在现在这个Spring Boot主导的时代,显得有些格格不入。对于经验丰富的开发者而言,寻找关于标签定制化、性能优化、或者标签与现代前后端分离架构下如何协同工作的干货,在这本书里是极其困难的。它没有提供任何一个让人眼前一亮的实战案例,去展示如何通过标签提升开发效率和代码质量。
阅读体验方面,这本书的文字风格非常晦涩,大量使用书面化、缺乏生命力的术语堆砌,仿佛是直接将技术文档的官方描述粘贴了上来,缺乏一线工程师在实战中遇到的痛点和解决方案的分享。我渴望看到的是那种“我曾经遇到过XXX的死锁问题,然后通过重写标签的doEndTag方法解决了它”的真实故事。这本书里没有这样的“人味儿”。此外,代码示例部分更是令人失望,很多代码片段都显得非常陈旧,与当前主流的Servlet 3.x/4.x规范以及流行的IDE环境都有一定的脱节,看得出成书时间可能有些久远,或者作者并未对最新的Web生态做充分的跟踪和更新。对于我们这些追求高效、现代化开发流程的工程师来说,维护这些过时的示例代码成本太高,实用价值自然大打折扣。
我对技术书籍的期待是,它能引领我看到一个领域的未来趋势,或者至少能提供一个扎实的基石,让我可以向更深处探索。然而,这本书在介绍标签时,几乎完全绕开了当前Web应用开发中越来越重要的“无视图技术”趋势。在微服务和前后端分离的大背景下,传统的JSP标签的作用正在被前端框架(如Vue或React)的组件化逻辑所取代。一本现代的“标签应用开发”书籍,应当探讨如何使用这些标签来高效地生成API响应(例如JSON或XML),或者讨论标签层与现代RESTful架构的边界划分。这本书却固执地停留在传统的基于JSP的展示层,没有对这些前沿的应用场景做任何探讨或指导。这使得这本书的知识体系显得非常“孤立”,脱离了行业发展的洪流。
这本书在“开发”这个环节的指导性也显得相当不足。它告诉你“是什么”,但很少告诉你“该怎么做才能做得好”。比如,在讨论标签的性能优化时,我期待看到关于标签缓存策略的详细对比,比如如何选择正确的缓存级别(页面级、请求级、会话级),以及在集群环境下如何处理缓存失效。书中对此的处理方式是简单地提了一下`out.flush()`的重要性,这对于一个声称是“开发”实战的书籍来说,实在是不够。这种对细节、对“如何应对真实世界复杂性”的忽视,使得这本书更像是一本概念速查手册,而不是一本能提升我实际编码能力的工具书。最终读完后,我感觉我的工具箱里多了一些旧工具的说明书,但缺少了一把可以解决棘手问题的扳手。
说实话,这本书的结构安排实在让人摸不着头脑。它似乎试图覆盖Web开发中的每一个角落,从HTTP协议的浅尝辄止到JDBC连接池的基本配置,再到MVC模式的理论概述,但每一个主题都浅尝辄止,缺乏必要的深度和关联性。我尤其希望看到关于自定义标签如何与Spring MVC的ViewResolver进行有效集成,或者如何利用这些标签来封装复杂的权限校验逻辑的章节。书中对这些高级集成点的描述,寥寥数语,便草草带过,留给读者的只有一堆未解决的疑问。这让我感觉作者更像是在罗列知识点,而不是在构建一个完整的知识体系。一本聚焦于“标签应用开发”的书,理应将重心放在如何利用标签抽象化业务逻辑,如何确保标签的可移植性和向后兼容性上。但这本书却花费了大量的篇幅去讲解如何配置一个XML文件,这种对细节的错误侧重,极大地影响了阅读体验和知识吸收的效率。