注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络软件与程序设计JAVA及其相关深入体验Java Web开发内幕

深入体验Java Web开发内幕

深入体验Java Web开发内幕

定 价:¥58.00

作 者: 张孝祥
出版社: 电子工业出版社
丛编项: 核心基础
标 签: Java

ISBN: 9787121032097 出版时间: 2006-10-01 包装: 平装
开本: 16 页数: 549 字数:  

内容简介

  本书深入地揭示Java Web开发内幕,细致地解释许许多多来自开发第一线的一知半解的问题。阅读本书,可以为您详细地剖析Java Web开发的全过程,使您轻松地解决在使用Java进行Web应用开发遇到的各类疑难杂症。本书用途之一:许多公司的技术经理在招聘新员工开始做一个项目之前,都将本书发下去,要求员工熟读此书,以免在项目中走弯路和避免许多潜在的隐患,并对员工说:“先把细节搞得明明白白了再做,这样你我心里都踏实,免得项目做完后自己都不敢肯定有多少隐患。”本书深刻且通俗地揭示Java Web开发内幕,使您由内而外地明白使用Java进行Web应用开发的全过程——从XML基础知识到HTTP详述及相关体验,从用Tomcat配置Web站点到HttpServletResponse和HttpServletRequest的应用,以及JSP,JavaBean等Java Web开发相关方面都讲解得深入浅出、通俗易懂。本书适合所有Web应用的开发人员、Java程序员在工作和学习中参考阅读,也适合作为相关专业本科生、研究生的学习参考资料,也可作为相关培训机构的培训教材。[看更多]

作者简介

  中国著名IT培训教育专家,具有多年软件开发和教学经验,直接面授培训过数以万计的软件开发人员,深受学员们的好评和喜爱,现任北京传智播客教育科技有限公司(www.itcastn.cn)的教学总监。张孝祥老师正在逐步将自己多年的开发与培训经验心得编写成通俗易懂的书籍,目前已出版《Java就业培训教程》和《JavaScript网页开发——体验式学习教程》书籍和配套的教学视频录像,这些培训视频录像和书籍推出后,在社会上产生了强烈反响,好评如潮!人们看过Java就业培训课程基础部分的录像后,被张老师的高超讲课技巧和深厚编程功底所吸引,纷纷要求参加张老师亲自讲授的培训班。张孝祥老师目前正在竭尽全力编写Java Web开发、J2EE、C与C++、VC++.NET、SQL Server数据库、网络管理等系列书籍和配套教学视频,其中部分书籍正在出版阶段,本书即是其中之一,张孝祥老师希望通过这些书籍和教学视频来将自己难得的经历、丰富的阅历、独特有效的学习方法毫无保留地传

图书目录

第1章  XML基础    1
指点迷津:什么是配置文件    1
1.1  XML技术概述    2
1.1.1  XML的起源与作用    2
1.1.2  XML文档结构    3
1.1.3  XML与HTML的比较    4
1.1.4  XML与数据库的比较    5
1.2  XML的基本语法    6
1.2.1  文档声明    6
动手体验:加深对encoding属性的理解    7
1.2.2  元素定义    10
1.2.3  属性定义    11
1.2.4  注释    11
1.2.5  空格和换行的处理    12
1.2.6  CDATA区    12
1.2.7  特殊字符    13
动手体验:加深对特殊字符的了解    13
1.2.8  处理指令    14
动手体验:使用CSS控制XML文档的显示    14
1.3  XML的约束模式    16
1.3.1  格式良好的(Well-formed)XML    16
1.3.2  XML的约束模式    16
1.3.3  XML的约束模式语言    17
1.3.4  有效的(Valid)XML    17
1.4  DTD    18
1.4.1  对DTD的初步认识    18
1.4.2  在XML文档中引入外部DTD文件    19
1.4.3  在XML文档中直接嵌入DTD定义语句    21
1.5  DTD的语法细节    22
1.5.1  元素定义    22
1.5.2  属性定义    24
1.5.3  实体定义    29
动手体验:加深对引用实体的了解    30
1.6  XML Schema    33
1.6.1  XML Schema与DTD的比较    33
1.6.2  一个XML Schema例子    34
1.7  名称空间    36
1.7.1  名称空间的概念    36
1.7.2  名称空间声明    37
1.7.3  默认名称空间    38
1.7.4  属性的名称空间    38
1.7.5  xml:space和xml:lang属性    39
1.8  引入XML Schema文档    40
1.8.1  使用名称空间引入XML Schema文档    40
1.8.2  不使用名称空间引入XML Schema文档    42
1.9  思考与实践    43
第2章  用Tomcat构建Web站点    44
2.1  Web应用的相关知识    44
2.1.1  HTTP协议    44
2.1.2  URL    45
2.1.3  主要的Web服务器软件    45
2.1.4  网站系统的组成    45
2.2  安装Tomcat    47
2.2.1  Tomcat简介    47
2.2.2  获取Tomcat安装程序包    47
2.2.3  使用zip和tar.gz包安装Tomcat    48
2.2.4  使用exe程序安装Tomcat    49
2.3  Tomcat的启动与停止    52
2.3.1  使用Tomcat服务程序    52
多学两招:查找网络服务程序监听异常的问题    54
2.3.2  使用Tomcat程序组中的快捷菜单    55
多学两招:了解Tomcat 4.1.31的快捷启动菜单的工作原理    56
2.3.3  使用tomcat.exe程序    58
指点迷津:tomcat5.exe启动的Tomcat程序不一定是tomcat5.exe自身所在的目录    59
2.3.4  startup.bat批处理文件    60
2.3.5  catalina.bat批处理文件    64
2.3.6  使用批处理程序及查找Tomcat的启动问题    68
动手体验:练习查找Tomcat的启动错误    69
2.4  配置Web站点的虚拟目录    71
2.4.1  虚拟Web目录的映射原理    72
2.4.2  设置Web站点的根目录    73
动手体验:修改Web站点的默认根目录    74
2.4.3  设置Web站点的虚拟子目录    74
动手体验:设置Web站点的虚拟子目录    76
脚下留心:war文件的内部目录结构    77
2.4.4  部署描述符与目录的默认网页    78
动手体验:设置目录的默认网页    79
2.5  配置虚拟主机    81
2.5.1  浏览器访问Web资源的过程    81
动手体验:用Telnet程序分析浏览器访问Web资源的过程    81
多学两招:打开Telnet程序的本地回显功能    82
2.5.2  虚拟主机及实现原理    83
2.5.3  基于主机名的虚拟主机    84
动手体验:使用Tomcat建立基于主机名的虚拟主机    86
2.5.4  基于端口号的虚拟主机    88
动手体验:使用Tomcat建立基于端口号的虚拟主机    89
2.5.5  基于IP地址的虚拟主机    90
2.6  与专用Web服务器的集成    90
2.6.1  集成的考虑因素    91
2.6.2  集成技术的选择    92
2.6.3  JK插件    93
动手体验:下载JK插件    94
2.6.4  Tomcat体系结构与JK插件的工作原理    95
动手体验:查阅JK连接器的帮助文档    99
2.6.5  Tomcat与IIS服务器集成    100
2.6.6  Tomcat与Windows系统下的Apache服务器集成    105
2.6.7  与专业Web服务器集成的现实问题    107
2.7  思考与实践    107
第3章  HTTP协议详解    109
3.1  了解HTTP    109
3.1.1  HTTP简介    109
3.1.2  HTTP 1.0的会话方式    109
3.1.3  HTTP 1.1与HTTP 1.0的比较    111
3.1.4  HTTP消息的格式    112
3.1.5  HTTP消息头    113
3.2  请求行与状态行    114
3.2.1  请求行与状态行    114
动手体验:借助Telnet程序直观地体验请求行和状态行    115
3.2.2  使用GET和POST方式传递参数    117
动手体验:使用GET与POST方式传递参数    118
3.2.3  响应状态码    121
3.3  通用信息头    124
3.3.1  Cache-Control    124
3.3.2  Connection    125
动手体验:Connection头字段的作用    125
3.3.3  Date    125
3.3.4  Pragma    126
3.3.5  Trailer    126
3.3.6  Transfer-Encoding    126
3.3.7  Upgrade    126
3.3.8  Via    127
3.3.9  Warning    127
3.4  请求头    127
3.4.1  Accept    127
3.4.2  Accept-Charset    127
3.4.3  Accept-Encoding    127
3.4.4  Accept-Language    128
动手体验:Accept-Language头字段的作用    129
3.4.5  Authorization    130
3.4.6  Expect    130
3.4.7  From    130
3.4.8  Host    130
3.4.9  If-Match    131
3.4.10  If-Modified-Since    131
3.4.11  If-None-Match    132
3.4.12  If-Range    132
3.4.13  If-Unmodified-Since    132
3.4.14  Max-Forwards    132
3.4.15  Proxy-Authorization    132
3.4.16  Range    132
3.4.17  Referer    133
3.4.18  TE    133
3.4.19  User-Agent    133
3.5  响应头    134
3.5.1  Accept-Range    134
3.5.2  Age    134
3.5.3  Etag    134
3.5.4  Location    134
动手体验:Location头字段的作用    135
3.5.5  Proxy-Authenticate    135
3.5.6  Retry-After    135
3.5.7  Server    136
3.5.8  Vary    136
3.5.9  WWW-Authenticate    136
3.6  实体头    136
3.6.1  Allow    137
3.6.2  Content-Encoding    137
3.6.3  Content-Language    137
3.6.4  Content-Length    137
3.6.5  Content-Location    138
3.6.6  Content-MD5    138
3.6.7  Content-Range    138
3.6.8  Content-Type    138
动手体验:Tomcat中的文件扩展名与MIME的映射关系    139
3.6.9  Expires    141
3.6.10  Last-Modified    141
3.7  扩展头    141
3.7.1  Refresh    141
3.7.2  Content-Disposition    142
3.8  思考与实践    142
第4章  Servlet开发基础    143
4.1  Servlet的有关概念与前置知识    143
4.1.1  什么是动态网页    143
指点迷津:区分动态网页与动态HTML页面的概念    144
4.1.2  动态网页程序与引擎    144
4.1.3  Servlet技术简介    146
4.1.4  B/S系统架构与C/S系统架构    146
4.1.5  Servlet开发涉及的相关知识    149
4.2  Servlet开发入门    149
4.2.1  Servlet API介绍    149
动手体验:查看Tomcat提供的Servlet API帮助文档    150
4.2.2  编写与编译Servlet程序    151
指点迷津:如何快速入门新技术    151
动手体验:编写与编译Servlet程序的过程    152
4.2.3  Servlet的注册与运行    153
动手体验:注册与访问Servlet程序    155
照猫画虎:如何编写Web.xml文件    156
4.2.4  Servlet激活器    158
动手体验:使用Servlet激活器    159
4.2.5  缺省Servlet    159
动手体验:缺省Servlet的作用    160
4.2.6  Servlet的类装载器    160
动手体验:Tomcat如何完成类的加载    164
指点迷津:区分Servlet的编译和运行环境    167
4.2.7  编写一个自动编译工具    167
4.3  Servlet的特点及运行过程    168
4.3.1  Servlet的特点    168
4.3.2  Servlet的运行过程    169
4.3.3  Servlet的线程安全问题    174
动手体验:Servlet的并发访问与线程安全问题    174
指点迷津:哪些情况下要考虑线程安全问题    177
4.4  ServletConfig接口    177
指点迷津:Servlet的初始化参数的作用    178
多想一想:Servlet的init方法与getServletConfig方法的关系与作用    178
4.4.1  getInitParameterNames方法    179
4.4.2  getInitParameter方法    179
4.4.3  getServletName方法    179
4.4.4  getServletContext方法    180
4.4.5  GenericServlet类实现ServletConfig接口的目的    180
4.4.6  ServletConfig的应用举例    180
动手体验:ServletConfig对象的应用    181
4.5  GenericServlet与HttpServlet类    183
4.5.1  区分回调方法与工具方法    183
4.5.2  init方法    183
指点迷津:覆盖无参数的init()方法来编写初始化代码的好处    184
4.5.3  service方法    186
4.5.4  destroy方法    187
4.5.5  getServletConfig方法    187
4.5.6  getServletInfo方法    188
4.5.7  doXxx方法    188
动手体验:doGet方法与doPost方法的作用    189
指点迷津:如何理解“在自己的程序代码中不能调用回调方法”    191
4.5.8  浏览器缓存内幕与getLastModified方法    191
动手体验:揭开浏览器缓存的奥秘    194
4.6  ServletContext接口    200
4.6.1  获取Web应用程序的初始化参数    201
动手体验:Web应用程序的初始化参数的设置与应用    201
4.6.2  记录日志    203
动手体验:Web应用程序的日志记录功能    204
多学两招:JDK中提供的日志记录模块    205
4.6.3  application域范围的属性    209
4.6.4  访问资源文件    210
动手体验:在Servlet程序中使用FileInputStream类的问题    211
动手体验:使用ServletContext接口和ClassLoader类中的方法访问资源文件    213
4.6.5  获取虚拟路径所映射的本地路径    214
4.6.6  Web应用程序之间的访问    215
动手体验:访问其他Web应用程序    215
4.6.7  ServletContext接口中的其他方法    218
4.7  思考与实践    218
第5章  HttpServletResponse的应用    220
5.1  准备实验环境    220
5.2  HttpServletResponse简介    221
5.3  产生响应状态行    221
5.3.1  状态码常量    221
5.3.2  setStatus方法    222
5.3.3  sendError方法    222
5.4  构建响应消息头    223
5.4.1  addHeader与setHeader方法    223
5.4.2  addIntHeader与setIntHeader方法    224
5.4.3  addDateHeader与setDateHeader方法    224
5.4.4  setContentLength方法    224
5.4.5  setContentType方法    224
5.4.6  setCharacterEncoding方法    225
5.4.7  setLocale方法    225
5.4.8  containsHeader方法    226
5.5  响应消息头的实用案例    226
5.5.1  Servlet的中文输出问题    226
动手体验:浏览器显示网页文档时怎样选择字符集编码    227
动手体验:Servlet的中文输出问题及解决之道    229
脚下留心:注意传递给setContentType方法的参数值的大小写    233
多学两招:修改某个Servlet将导致整个Web应用程序被重新加载    234
5.5.2  让浏览器定时刷新网页或跳转至其他页面    235
动手体验:Refresh头字段的作用效果    235
5.5.3  禁止浏览器缓存当前文档内容    236
动手体验:浏览器的缓存问题和解决方案    236
5.5.4  使用<meta>标签模拟响应消息头    238
动手体验:使用<meta>标签解决浏览器显示网页时的中文乱码问题    239
多学两招:网页文档应尽量采用UTF-8编码    240
5.6  创建响应正文    241
5.6.1  getOutputStream与getWriter方法    241
5.6.2  关于getWriter方法的一些相关疑问    242
动手体验:关于getWriter方法的一些相关疑问    242
5.6.3  输出缓冲区    244
动手体验:Servlet引擎处理输出缓冲区的细节    245
5.6.4  实现动态文件内容的下载    247
动手体验:实现动态文件内容的下载    248
5.6.5  图像访问计数器    249
动手体验:使用<img>标签实现静态HTML页面的访问次数统计和显示    252
多学两招:如何动态产生大小可变的图像    257
5.7  请求重定向与请求转发    259
5.7.1  RequestDispatcher接口    259
5.7.2  用include方法实现资源包含    260
动手体验:RequestDispatcher.include方法的应用细节    260
5.7.3  用forward方法实现请求转发    267
动手体验:RequestDispatcher.forward方法的应用细节    267
动手体验:RequestDispatcher.forward方法的相对路径问题    273
5.7.4  请求转发的运行流程    277
5.7.5  用sendRedirect方法实现请求重定向    281
动手体验:sendRedirect方法的应用    282
5.7.6  请求重定向的运行流程    283
5.7.7  请求重定向与请求转发的比较    287
5.7.8  缺省Servlet的缓存问题    289
动手体验:缺省Servlet的缓存问题    291
5.8  思考与实践    292
第6章  HttpServletRequest的应用    294
6.1  HttpServletRequest简介    294
6.2  获取请求行的相关信息    294
6.2.1  getMethod方法    294
6.2.2  getRequestURI方法    295
6.2.3  getQueryString方法    295
6.2.4  getProtocol方法    295
6.2.5  getContextPath方法    295
6.2.6  getPathInfo方法    295
6.2.7  getPathTranslated方法    296
6.2.8  getServletPath方法    296
6.2.9  获取请求行信息的综合实例    296
动手体验:与请求行信息相关的各个方法的作用    296
6.3  获取网络连接信息    298
6.3.1  getRemoteAddr方法    298
6.3.2  getRemoteHost方法    298
6.3.3  getRemotePort方法    298
6.3.4  getLocalAddr方法    298
6.3.5  getLocalName方法    298
6.3.6  getLocalPort方法    298
6.3.7  getServerName方法    298
6.3.8  getServerPort方法    298
6.3.9  getScheme方法    299
6.3.10  getRequestURL方法    299
6.4  获取请求头信息    299
6.4.1  getHeader方法    299
6.4.2  getHeaders方法    299
6.4.3  getHeaderNames方法    300
6.4.4  getIntHeader方法    300
6.4.5  getDateHeader方法    300
6.4.6  getContentType方法    300
6.4.7  getContentLength方法    300
6.4.8  getCharacterEncoding方法    300
6.4.9  获取所有请求头的编程实例    301
动手体验:获取请求消息中的所有请求头信息    301
6.4.10  利用Referer请求头阻止“盗链”    303
动手体验:利用Referer请求头阻止“盗链”    303
6.4.11  利用Referer请求头隐藏JavaScript源代码    305
动手体验:利用Referer请求头隐藏JavaScript源代码    305
6.4.12  BASE64编码及客户端身份认证    309
动手体验:BASIC验证的交互过程    311
6.5  浏览器传递参数信息的细节    315
6.5.1  使用GET方式传递参数    316
脚下留心:不要使用GET方式提交包含口令的FORM表单    316
6.5.2  使用POST方式传递参数    316
6.5.3  提交、重置、普通按钮的参数传递    318
动手体验:了解提交、重置、普通按钮的参数传递细节    318
6.5.4  单行与多行文本输入框如何传送参数    319
动手体验:了解单行与多行文本输入框的参数传递细节    319
6.5.5  单选按钮与复选框如何传送参数    320
动手体验:了解单选按钮与复选框的参数传递细节    320
6.5.6  隐藏表单字段与图像字段如何传送参数    321
动手体验:了解隐藏表单字段元素与图像字段元素的参数传递细节    321
6.5.7  列表框的参数传递    322
动手体验:了解列表框的参数传递细节    322
6.5.8  使用JavaScript防止重复提交表单    323
动手体验:使用JavaScript防止重复表单提交    323
6.6  获取请求参数    325
6.6.1  getParameter方法    325
6.6.2  getParameterValues方法    326
6.6.3  getParameterNames方法    326
6.6.4  getParameterMap方法    326
6.6.5  获取请求参数的编程实例    326
动手体验:获取请求消息中的所有参数    326
6.6.6  一次性处理多个列表项的实用案例    329
动手体验:一次性处理多个列表项    329
6.6.7  单选列表框的处理经验    333
6.7  获取请求消息的实体内容    333
6.7.1  getInputStream与getReader方法    334
多学两招:使用ServletInputStream对象读取文本格式的实体内容    334
6.7.2  分析文件上传的请求消息结构    334
动手体验:分析文件上传的请求消息结构    334
6.8  利用请求域属性传递信息    343
6.8.1  setAttribute方法    343
6.8.2  getAttribute方法    344
6.8.3  removeAttribute方法    344
6.8.4  getAttributeNames方法    344
6.8.5  请求域属性的编程实例    344
动手体验:请求域属性的应用    345
多想一想:请求域属性与URL参数的应用区别    348
6.9  请求参数的中文读取问题    348
6.9.1  了解中文字符的URL编码    349
动手体验:中文字符的URL编码和解码    349
6.9.2  浏览器怎样进行URL编码    350
动手体验:浏览器怎样对FORM表单内容进行URL编码    351
6.9.3  getCharacterEncoding方法    352
6.9.4  setCharacterEncoding方法    352
6.9.5  getParameter方法的中文问题    352
动手体验:解决使用getParameter方法读取请求参数时的中文乱码问题    353
6.9.6  一些参考经验    365
6.10  思考与实践    366
第7章  会话与状态管理    367
7.1  Web应用中的会话与会话状态    367
7.1.1  会话与会话状态简介    367
7.1.2  如何实现有状态的会话    367
7.2  Cookie    368
7.2.1  什么是Cookie    368
7.2.2  Set-Cookie2响应头字段    370
7.2.3  Cookie请求头字段    372
7.3  在Servlet程序中使用Cookie    373
7.3.1  Cookie类    373
7.3.2  HttpServletResponse.addCookie方法    375
7.3.3  HttpServletRequest.getCookies方法    375
7.3.4  Cookie的综合实例    375
动手体验:Cookie的工作细节    375
7.4  Session    386
7.4.1  什么是Session    386
7.4.2  Session的跟踪机制    387
7.4.3  Session的超时管理    387
7.4.4  HttpSession接口中的方法    388
7.4.5  HttpServletRequest接口中的Session方法    390
多想一想:什么情况下该调用request.getSession(false)方法    391
7.4.6  application域与session域属性的比较    391
动手体验:application域和session域范围的属性的差异    393
7.4.7  利用Cookie实现Session跟踪    396
动手体验:如何利用Cookie实现Session跟踪    397
7.4.8  利用URL重写实现Session跟踪    399
动手体验:利用URL重写实现Session跟踪    400
7.5  Session的典型案例    401
7.5.1  使用Session实现购物车    401
动手体验:使用Session实现购物车功能    402
7.5.2  利用Session防止表单重复提交    407
多学两招:MD5算法及其应用    408
动手体验:利用Session防止表单重复提交    409
7.5.3  利用Session实现一次性验证码    415
动手体验:利用Session实现一次性验证码    416
多学两招:用时间间隔限制用户连续发帖    420
7.5.4  跟踪用户上次访问站点的时间及Cookie中文问题    420
7.6  Session的持久化管理    423
7.6.1  Session的持久化    423
7.6.2  Tomcat中的Session持久化管理    423
动手体验:Tomcat的Session持久化    424
7.7  思考与实践    428
第8章  JSP    430
8.1  JSP入门    430
8.1.1  建立对JSP的直观认识    430
动手体验:编写最基本的JSP程序    431
8.1.2  JSP的运行原理    434
多学两招:让JSP引擎不检测JSP页面是否发生修改    435
8.1.3  分析JSP所生成的Servlet代码    437
指点迷津:out.print语句与out.write语句的区别    441
8.1.4  JSP隐式对象    441
多学两招:使用JSP页面学习Servlet API    443
8.1.5  注册与配置JSP页面的访问路径    444
8.1.6  JSP与JavaScript的综合应用    444
动手体验:JSP与JavaScript的综合应用    445
多学两招:降低代码的嵌套层次,提高程序的易读性    447
8.1.7  JSP与Servlet的应用比较    452
8.2  JSP基本语法    453
8.2.1  JSP模板元素    454
8.2.2  JSP表达式    454
8.2.3  JSP脚本片断    454
8.2.4  JSP声明    456
8.2.5  EL表达式    459
动手体验:EL表达式将null输出为空字符串("")的好处    460
8.2.6  JSP注释    461
动手体验:JSP注释与JSP页面中的Java注释和HTML注释的区别    461
8.2.7  特殊字符序列的转义处理    462
8.2.8  如何查找JSP页面中的错误    464
动手体验:查找JSP页面中的错误    464
8.3  JSP指令    467
8.3.1  JSP指令简介    467
8.3.2  page指令    467
动手体验:JSP页面中的异常处理    472
多学两招:在web.xml文件中设置全局错误处理    474
多学两招:如何识别web.xml文件所遵循的Servlet规范版本    475
8.3.3  include指令    476
动手体验:include指令的特性    477
8.4  out对象    479
动手体验:out对象的应用特性    479
指点迷津:将请求转发给静态HTML页面的实验现象为何不稳定    482
8.5  pageContext对象    482
8.5.1  pageContext对象简介    482
8.5.2  获得其他隐式对象    483
8.5.3  引入和跳转到其他资源    483
动手体验:PageContext.forward方法的应用细节    484
8.5.4  访问各个域范围中的属性    485
动手体验:存储在pageContext对象中的属性的作用域    487
8.5.5  pushBody方法与popBody方法    488
8.6  JSP标签    490
8.6.1  <jsp:include>标签    491
动手体验:<jsp:include>标签的特性    492
8.6.2  <jsp:forward>标签    494
动手体验:<jsp:forward>标签的特性    494
8.6.3  <jsp:param>标签    495
8.6.4  <jsp:plugin>标签    495
8.6.5  脚本元素标签    497
8.6.6  指令标签    497
8.6.7  <jsp:text>标签    497
8.6.8  完全使用标签编写JSP页面    497
8.7  JSP的中文乱码问题    498
8.7.1  JSP中文乱码的根源    498
8.7.2  JSP引擎翻译JSP页面时的中文乱码问题    500
动手体验:JSP引擎翻译JSP页面时的中文乱码问题    501
8.7.3  静态引入时的中文乱码问题    507
动手体验:静态引入时的中文乱码问题    507
8.7.4  <jsp:param>标签传递中文参数时的问题    509
动手体验:<jsp:param>标签传递中文参数时的问题    509
8.8  思考与实践    511
第9章  JavaBean在JSP中的应用    513
9.1  JavaBean简介    513
9.2  JavaBean的属性    513
9.1.1  JavaBean的属性简介    513
9.1.2  简单属性    514
9.1.3  Indexed属性    515
9.3  JavaBean在JSP中的应用    516
9.3.1  在JSP中如何使用JavaBean    516
9.3.2  <jsp:useBean>标签    517
动手体验:带标签体的<jsp:useBean>标签的执行情况    520
9.3.3  <jsp:setProperty>标签    521
动手体验:<jsp:setProperty>标签的应用    522
多学两招:利用JSP表达式对JavaBean的特殊类型的属性进行赋值    525
9.3.4  <jsp:getProperty>标签    525
9.3.5  使用JavaBean的注意事项    526
9.4  JSP开发模式    526
9.4.1  MVC设计模式    526
9.4.2  JSP开发模式    527
9.4.3  用模式一实现用户登录功能    529
动手体验:用JSP模式一实现用户登录功能    530
9.4.4  用模式二实现用户注册功能    537
动手体验:用JSP模式二实现用户注册功能    538
多学两招:在MVC模式中应用<jsp:useBean>标签的type属性    548
9.5  思考与实践    548

本目录推荐