Servlet学习笔记

1.Servlet API核心是javax.servlet.Servlet接口,该接口有5个方法,其中有3个是容器自动调用的,包括initServletConfig config),serviceServletRequest reqServletRsponse res),destroy()方法,另外两个是getServletConfig()和getServletInfo()。

2.InitServletConfig config)方法负责初始化Servlet对象,容器在创建好Servlet对象,就调用这个方法。serviceServletRequest reqServletRsponse res)方法负责相应客户端请求,为客户端提供相应服务,当容器接受到客户端访问特定的Servlet请求时,就会调用该Servlet对象的service()方法。destroy()方法负责释放Servlet对象占用的资源。还有两个方法分别是getServletConfig()和getServletInfo()方法,前者返回ServletConfig对象,包含了Servlet初始化信息,后者返回一个字符串,包含了Servlet创建者,版本和版权的信息。

3.javax.servlet.GenericServlet抽象类实现了Servlet接口,同时也实现了javax.servlet.ServletConfigjava.io.Serializable接口,所以该抽象类将ServletConfigServlet联系到了一起,它还有一个子类javax.servlet.http.HttpServlet,我们实现的Servlet一般都是继承HttpServlet

4.GenericServlet抽象类中,有两个init()方法,一个是initServletConfig config),另一个是无参的init()方法,第一个方法是初始化容器为Servlet创建的ServletConfig对象,第二个方法是留给子类覆盖的。

init(ServletConfig config){
   this.config= config;
   this.init();
}

init(){}


5.GenericServlet抽象类中有一个抽象方法serviceServletRequest reqServletResponse res);该方法是一个抽象方法,它的子类必须覆盖该方法。

6.GenericServlet子类HttpServlet也是一个抽象类,我们写的Servlet一般都继承这个类,这个类中的serviceServletRequest reqServletRsponse res)方法主要是做了一个事情,就是把reqres强制转换成HttpServletRequestHttpServletResponse类型,然后再调用service()的重载函数serviceHttpServletRequest reqHttpServletResponse res),重载方法里主要做的一件事,就是获取req的请求方式,如果是get方式,就调用doGetresreq),如果是post方式,就调用doPostresreq),依此类推,主要就是解析请求,分配请求到相应的方法中。HttpServlet类中doGet()和doPost()都是protected类型,函数体实现是向客户端返回一个错误信息,我们写的Servlet要覆盖这两个方法,而且要声明成public

7.GenericServlet类中service()方法中传入了两个参数,ServletRequestServletResponse

1ServletRequest表示客户端的请求,当Servlet容器接收到客户端要求访问的Servlet请求时,容器先解析客户端的原始请求数据,将它包装秤ServletRequest对象,当容器调用service()方法时,就可以将该ServletRequest对象做为参数传入进去。ServletRequest对象定义了一系列读取客户端请求数据的方法。HttpServletRequest接口是ServletRequest的子接口,该接口提供了用于读取HTTP请求中的相关信息的方法。

2ServletResponse主要产生HTTP相应结果的正文部分,而且可以设置一系列的属性,如编码,MIME类型,正文长度。HttpServletResponseServletResponse的子接口,该接口提供了与HTTP协议相关的一些方法,Servlet可通过这些方法来设置HTTP响应头或向客户端写Cookie

8.ServletConfig对象包含了Servlet初始化参数信息,而且ServletConfig对象还与当前Web应用的ServletContext对象关联。

9.ServletContextWeb应用的总管家,它和Web应用的生命周期一致,Servlet对象可以通过这个总管家来访问容器中各种资源。ServletContext接口提供的方法可分为以下几类:

1)用于在Web应用范围内存取共享数据。

2)访问当前Web应用的资源。

3)访问Servlet容器中的其他Web应用。

4)访问Servlet容器的相关信息。

5)访问服务器端的文件系统资源。

6)输出日志。

10.Web应用生命周期

1)启动阶段

2)运行阶段

3)终止阶段

11.Servlet生命周期

1)初始化阶段:

   *加载Servlet类,将.class文件读到内存。

   *容器创建ServletConfig对象。

   *Servlet容器创建Servlet对象。

   *Servlet容器调用Servlet对象的initServletConfig config)方法。

   <1>以下两种情况会进入初始化阶段

      特定Servlet被客户端首次请求访问,多数Servlet都会在这种情况下被Servlet容器初始化

      设置<load-on-startup>1</load-on-startup>,该属性代表容器启动Servlet所属的Web应用时,会初始化这个Servlet,数字1,2,3,4代表初始化顺序。

(2)运行时阶段

   *Servlet容器接收来自客户端请求,解析请求,找到相应Servlet类,执行相应方法,通过ServletResponse生成响应结果,Servlet容器把结果发送给客户端,Servlet容器销毁ServletRequestServletResponse

(3)销毁阶段

   *释放所占用的各种资源。

12.ServletContextListener监听器,能够坚挺ServletContext对象的生命周期,实际上就是坚挺Web应用的生命周期。该接口定义了处理ServletContextEvent事件的两个方法。

contextInitializedServletContextEvent sce)和contextDestroyedServletContextEvent sce),顾名思义,一个是初始化时调用,一个时销毁前调用。

转载于:https://my.oschina.net/u/274427/blog/69143

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值