读head first servlet and jsp有感(转)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读head first servlet and jsp有感(转)相关的知识,希望对你有一定的参考价值。
一.web服务器:接收客户请求,然后向客户返回一些结果,注意web服务器在硬件上指物理主机,在软件上指web服务器应用软件,例如tomcat,jboss那种
web客户,一般指浏览器(b/s模式),浏览器有辅助工具来解析服务器端传回来的响应,一般根据响应的首部来确定使用哪种辅助工具
二.一般的请求都是通过get方法发送,到达serlvet采用doGet方法进行处理,只有特别定义了通过post方法发送的,才会执行doPost处理(一般为表单,因为表单数据不应该出现在地址的后面,应该隐藏起来)
三.服务器端口表示在服务器硬件上运行的一个特定软件的逻辑连接,它只是表示服务器应用的逻辑数而已,这样的话就能使一个服务器(硬件)能够使用多个服务器应用软件,接受多种协议下的请求,例如在8080上tomcatweb服务器接受http,ftp服务器在另一个端口上接受ftp协议发来的请求
四.容器
(1)web容器实质上就是指一个web应用服务器软件,例如tomcat。
当一个指向servlet的请求的时候,服务器将请求交给web容器,web容器产生给servlet的http请求和响应,然后由容器调用servlet的方法,然后servlet调用模型,
得到需要的结果,将结果设置到请求中,然后将请求分派到一个jsp里面,jsp从请求得到需要的结果,再使用jstl或者el将它表示出来,生成一个页面作为响应返回到浏览器中。
会为每个servlet请求创建一个新的java线程
(2)servlet的生命周期
web容器加载servlet类,调用servlet的无参构造方法实例化servlet,然后再调用init()方法对servlet进行初始化(在没有进行init方法之前servlet实例并没有servlet的功能),然后当接受到从客户端发来的请求时,会先调用service方法,然后根据请求的方法类型,判断调用doget还是dopost方法,然后在所有请求执行结束之后,会调用destroy方法杀死(gc)掉servlet对象
(3)servletConfig和servletContenxt
每个servlet只有一个servletConfig,然后在dd中servlet中配置的初始化参数,servletConfig能够得到
容器在调用servlet的init()方法的时候,会为servlet创建唯一的servletConfig,然后从dd中得到servlet初始化参数,再加到servletConfig之后,传入到servlet的init()方法里面
每个web应用只有一个servletContext,应用的所有部分都可以使用里面的参数,然后是在web-app中部署的,在部署web应用时产生。
调用均使用getInitparameter()
(4)三个作用域,上下文(所有web应用部分都能使用,不是线程安全的),请求,会话(指一个客户与服务器的沟通,一般情况下只要是p地址不变的客户,发送的多个请求都被认为在一个会话中,,也不是线程安全,因为多个请求造成多线程,然后可能产生幻像读的现象)
(5)请求分派和重定向都要在处理方法中调用os.flush()方法之前调用才有效,因为当调用了flush方法之后,响应已经发给了客户,此时http响应和请求对象已经过时,被gc掉或者放在实例池里面。
以上是关于读head first servlet and jsp有感(转)的主要内容,如果未能解决你的问题,请参考以下文章
《Head First Servlets & JSP》-2-概述
《Head First Servlets & JSP》-5-属性和监听
《Head First Servlets & JSP》-4-请求和响应
《Head First Servlets & JSP》-7-使用JSP