【Jsp精品源码栏目提醒】:网学会员Jsp精品源码为您提供Servlet与JSP核心编程读书笔记 - 其它资料参考,解决您在Servlet与JSP核心编程读书笔记 - 其它资料学习中工作中的难题,参考学习。
第 3 章 servlet 基础1. servlet 的生命周期。
a init 方法:首次创建 servlet 时,它的 init 方法会得到调用,因此,init 是放置一次 性设置代码的地方。
i. 可以使用此方法进行常规初始化,用来创建或载入在 Servlet 生命期内用到的 一些数据,或者执行某些一次性的计算。
ii. 由初始化参数控制的初始化。
要理解 init 参数的动机,您需要了解什么样的人可能希望对 Servlet 的行为方 式进行定制。
其中包括:开发人员、最终用户、部署人员。
开发人员通过改变代码改变 Servlet 的行为。
最终用户通过向 HTML 表单提供数据改变 Servlet 的行为。
部署人员为了能够在不修改 Servlet 的源代码的情况下,就可以将 Servlet 在机 器间移动,以及改变特定的参数 (例如,数据库的地址,连接共享大小,或者 数据文件的位置)。
init 参数的目的就是为了提供这项能力。
b service 方法:在 init 之后,针对每个用户请求,都会创建一个线程,该线程调用前 面创建的实例的 service 方法。
service 方法检查 HTTP 请求的类型(GET,POST, PUT,DELETE 等)并相应地调用 doGet,doPost,doPut,doDelete 等方法。
c doGet,doPost 和 doXxx 方法 GET 请求起因于正常的 URL 请求,或没有指定 METHOD 的 HTML 表单。
POST 请求起因于特别将 POST 列为 METHOD 的 HTML 表单。
你可以覆盖 doGet 和/或 doPost 方法来处理。
DELETE 请求由 doDelete 处理,PUT 由 doPut 方法处理,OPTIONS 由 doOptions 处理,TRACE 由 doTrace 方法处理。
OPTIONS 和 TRACE 的请求在 Servlet 中是自动支持的。
doHead 以处理 HEAD 请求 (HEAD 请求规定,服务器应该只返回正常的 HTTP 头,不含与之相关联的文档)。
为了能够更快地生成对 HEAD 请求的响应(例如 来自定制客户的请求,只需要 HTTP 报头,不需构建实际的文档输出),会实现 doHead 方法。
2. SingleThreadModel 接口 a 通过让 Servlet 实现这个接口,系统会保证不会有多个请求线程同时访问该 servlet 的单个实例。
大多数和情况下,系统将所有的请求排队,一次只将一个请求转给 单个 servlet 实例。
b 此接口已经过时,如果要同步最好使用 synchronized 关键字。
第 4 章 客户请求的处理:表单数据1. 表单数据的读取。
a 单个值的读取:getParameter表单项名称,表单项名称大小写敏感。
如果表单项 存在但没有相应的值,返回空的 String;如果没有这样的表单项,则返回 null。
b 多个值的读取:getParameterValues表单项名称,如果同一表单项名称在表单数 据中多次出现,则应该调用 getParameterValues返回字符串的数组。
对于不存在 的表单项名称,getParameterValues 的返回值是 null,如果参数只有单一的值,则 返回只有一个元素的数组。
如果是 HTML 表单的设计者,最好保证每个文本字段、复选框或其他用户界面元 素都有一个唯一的名称。
2. 参数名的查找:getParameterNames 和 getParameterMap getParameterNames 以 Enumeration 的形式返回表单项名称列表,其中的的每一项都可 以转换成 String,并可以用在 getParameter 或 getParameterValues 调用中。
如果当前请求 中没有表单名称返回空的 Enumeration(不是 null)。
Enumeration 只是一个接口,它保证实际的类实现了 hasMoreElements 和 nextElement 方 法:它并不保证具体的实现会采用某种特定的底层数据结构。
getParameterNames 的替代方案是 getParameterMap。
这个方法返回一个 Map:表单名称 (字符串)是表的键,表单项的值是表的值。
3. 读取上载的文件和原始数据:getReader 或 getInputStream 当数据不是 HTML 表单提交,而是来自于定制的客户程序时,可能需要自己读取和分 析这些数据。
最常见的客户程序是 applet。
当数据来自于上载的文件时,可能需要自己读取数据。
servlet 的 API 没有定义任何机 制来读取ltinput type”file”gt元素的文件。
4. 多