chap2 HTTP和servlet基础 |
|
2.1 HTTP请求/响应(request/response)模型 |
(1)client不光是浏览器,还包括pda,手机等 |
|
(2)client与server基于http协议进行通讯 |
|
(3)jsp基于java servlet技术,因此需要了解servlet |
|
(4)http模型:client向server发送request请求resource,server发回response(请求的资源或错误消息) |
|
(5)http模型的三大特点:无状态性;不能立即反馈(注:Web application不等于c/s application);不能告诉server关于request如何产生的信息。第1个问题如何解决,见chap10;第2、3问题,见chap16(客户端代码,eg.JavaScript或Java applet) |
|
(6)URL:server名称+端口号+resource:eg.www.google.com:80/index.html |
|
(7)http request消息:request line + request header (+ request body) |
|
(8)request line:request method name + resource identifier + protocol version |
|
(9)request header:供server使用的额外信息 |
|
(10)request body:只用于某些类型的请求,例如post |
|
(11)User-Agent可供server根据不同的浏览器返回不同的信息 |
|
(12)URI不一定仅对应服务器上的静态文件。它还可能标识可执行程序、数据库记录或server知道的任何事情。 |
|
(13)response message:status line + response header (+ optional body) |
|
(14)status line: 协议名称+状态代码+状态代码的简短描述 |
|
(15)请求参数:可以通过两种方式传递1>附加在URI上的查询字符串2>作为request message body的一部分传递 |
|
(16)查询字符串:?+“名字/值”对,用&分隔 |
|
(17)GET与POST的最大区别:GET总是使用查询字符串来传递参数,POST将参数作为body的一部分传递。 |
|
2.2 Servlet |
(1)jsp specification基于java servlet specification |
|
(2)servlet:向(web)server增加了新功能的一段代码 |
|
(3)servlet的优势:1>跨平台 2>与java其它技术(jdbc、ejb等等)集成 3>高效性(Servlet执行进程直到基于该servlet的应用程序被关闭后才终止;在该进程中,每个servlet请求被作为一个单独的进程执行) 4>scalability 5>健壮性和安全性(但如同任何动态web网站一样,基于servlet的网站易受"cross site scripting"袭击) |
|
(4) servlet container是web server与servlet之间的连接。它为server上的所有servlet提供了运行时环境,并适时加载并激活这些servlet. |
|
(5)过程:当容器收到第一次对某个servlet的请求时,加载该servlet类,使其初始化,再使它处理请求。对于以后的请求,使用同一个初始化的servlet,直至server关闭。容器接着给servlet一个释放资源和保存状态的机会。 |
|
(6)servlet container的类型:add-ons(plug-ins);standalone server;embedded |
|
(7)请求被servlet处理后,容器负责把servlet创建的响应转换成http响应消息,并传给client. |
|
(8)Java web应用程序通常是由下列类型的资源组成的:jsp页面,servlet,applet,静态html页面,自定义的tag库,其它java class文件。 |
|
(9)web archive(war):将部署描述器和其它web应用程序文件集合在一起。 |
|
(10)server context:在容器中,每个应用程序用一个servlet context表示。 |
|
(11)context path: 每个server context都有一个唯一的URI路径前缀,即context path。[作用]容器可以据此区分不同的应用程序,并把不同的request分发给不同的应用程序。 |
|
(12)path-mapping:除去context path,剩余的URI路径用于在选择的context中,通过将其与deployment descriptor定义的path-mapping规则进行比较,来决定如何处理请求。 |
|
(13)context-relative路径:每个context都是自包含的,对同一个容器中的其他应用程序一无所知。servlets与jsp页面之间的引用通常与context path有关,因此被称作context-relative路径。通过在应用程序中使用context-relative路径,web 应用程序可以使用任何context path来部署。 |
|
(14)context可以包含程序中所有组件共享的对象(例如数据库连接)。 |
|
(15)servlet规范的三大重要组成部分:web应用程序结构;部署文件的格式;组件之间共享对象的能力。[注]这也应用于jsp。 |