读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掉或者放在实例池里面。

    

你可能感兴趣的:(servlet和jsp)