《深入体验Java Web开发内幕——核心基础》目录

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