《Head First Servlets & JSP》笔记

第一章:
P17 content-type(内容类型)响应首部的值成为MIME类型。
P21 端口是一个16位数,标识服务器硬件上一个特定的软件程序。TCP端口只是一个数字而已。

第二章:
P37 Servlet也需要帮助。请求到来时,必须有人实例化servlet,或者至少要建一个新的线程处理这个请求,必须有人调用Servlet的doPost()或doGet()方法。
P41 容器提供的功能:通信支持、生命周期管理、多线程支持、声明方式实现安全、JSP支持。
P44 在Servlet从容器中得到的响应对象中,可以拿到一个PrintWriter。使用这个PrintWriter能够将HTML文本输出到响应对象。
P49 除了把URL映射到实际的Servlet,还可以使用部署描述文件对Web应用的其他方面进行定制,包括安全角色、错误页面、标记库、初始配置信息等。
P49 实际上,容器使用了一组很复杂的规则来寻找匹配的servlet,它会根据客户请求提供的URL查找位于服务器某个位置的一个具体Java类。
P65 一个完全兼容的J2EE应用服务器必须有一个Web容器和一个EJB容器(以及其他一些部件,包括JNDI和JMS实现)。Tomcat是一个Web容器,而不是完整的J2EE应用服务器,因为Tomcat没有EJB容器。

第三章:
P80 要记住,最后servlet要从请求接受一个参数,在模型上调用一个方法,把信息保存在JSP能找到的一个位置上,再把请求转发给JSP。
P86 servlet把请求转发给JSP。然后,JSP从请求对象得到数据。
P88 容器提供了一种称为“请求分派”的机制 ,允许容器管理的一个组件调用另一个组件。
P89 RequestDispatcher view = request.getReqeustDispatcher("result.jsp");view.forward(request, response);

第四章:
P95 容器根据请求中的URL查找正确的servlet,为这个请求创建或分配一个线程,并调用servlet的service()方法(确定调用哪个Servlet方法)。
P96 service()方法结束,所以线程要么撤销,要么返回到容器管理的一个线程池。
P97 你可能听过别人这么说,“servlet的每个实例……”。但这种说法是错误的。任何servlet类都不会有多个实例,只有一种特殊情况除外。
P104 每个Servlet都有一个ServletConfig对象,每个Web应用有一个ServletContext对象。
P108 对,除了GET和POST之外,确实还有其他一些HTTP 1.1方法,包括HEAD、TRACE、OPTIONS、PUT、DELETE和CONNECT。
P118 如果没有在表单中之处method="POST",就会默认为HTTP GET请求。
P119 单个参数可以有多个值!这说明需要一个返回数组的getParameterValues(), 而不是返回String的getParameter()。
P123 还有可能创建一个servlet来处理计算机驱动的请求,其中请求体包含要处理的文本或二进制内容。
P123 既然客户对服务器是远程的,所以getRemotePort()是指“得到客户的端口“。getLocalPort()和getServerPort()的差别很微妙,getServerPort() 是”请求原来发送到哪个端口“,getLocalPort()是指”请求最后发送到哪个端口“。
P126 使用响应对象向客服发回数据会对响应调用两个方法:setContentType()和getWriter(),在此之后,只需要完成I/O将HTML写至流。
P132 不过ServletResponse接口只提供了两个流可供选择: ServletOutputStream用于输出字节,PrintWriter用于输出字符数据。
P132 PrintWriter实际上”包装“了ServletOutputStream,也就是说,PrintWriter有ServletOutputStream的一个引用,而且会把调用委托给ServletOutputStream。
P133 setHeader()会覆盖现有的值;addHeader()会增加另外一个值。

P157 上下文初始化参数与servlet初始化参数很类似,只不过上下文参数对整个Web应用可用,而不是针对一个servlet。
P165 她想监听一个上下文初始化事件,这样就能得到上下文初始化参数,并在应用为客户提供服务之前运行一些代码。

P236 禁用cookie的用户会忽略"Set-Cookie"响应首部。
P238 此时,容器并不知道cookie是否工作,所以向客户返回第一个响应时,它会同时尝试cookie和URL重写这两种做法。
P239 根本就不能对静态页面完成URL重写!使用URL重写只有一种可能,这就是作为会话一部分的所有页面都是动态生成的!
P253 但是不存在setCookie()方法。只有一个addCookie()方法!

标签: servlet, java web

添加新评论