javaweb笔记2--理解servlet


Servlet

Servlet是什么

  • severlet本质上就是服务器或者是主机执行的一种web程序
  • severlet程序需要完成severlet接口才能成为serverlet程序
    • 重写init()方法
    • 重写service()方法
    • 重写destory()方法

Servlet生命周期

  • servlet生命周期是什么意思
    • 说明Servlet对象什么时候被创建
    • Servlet对象什么时候被销毁
    • Servlet对象创建了几个?
    • Servlet对象的生命周期表示:一个Servlet对象从出生在最后的死亡,整个过程是怎样的
  • Servlet对象生命周期
    • 默认情况下服务器启动的时候AServlet对象并没有被实例化
    • 用户在发送第一次请求的时候Servlet对象被实例化(AServlet的构造方法被执行了。并且执行的是无参数构造方法。)
    • AServlet对象被创建出来之后,Tomcat服务器马上调用了AServlet对象的init方法。(init方法在执行的时候,AServlet对象已经存在了。已经被创建出来了。)
    • 用户在发送第二次,或者第三次,或者第四次请求的时候,Servlet对象并没有新建,还是使用之前创建好的Servlet对象
    • 用户关闭游览器,serverlet对象撤销
  • servlet程序的性质
    • Servlet对象是单例的(单实例的。但是要注意:Servlet对象是单实例的,但是Servlet类并不符合单例模式。我们称之为假单例。之所以单例是因为Servlet对象的创建我们javaweb程序员管不着,这个对象的创建只能是Tomcat来说了算,Tomcat只创建了一个,所以导致了单例,但是属于假单例。真单例模式,构造方法是私有化的。)
    • 无参数构造方法、init方法只在第一次用户发送请求的时候执行。也就是说无参数构造方法只执行一次。init方法也只被Tomcat服务器调用一次。
    • 只要用户发送一次请求:service方法必然会被Tomcat服务器调用一次。发送100次请求,service方法会被调用100次。
    • destroy方法执行的时候AServlet对象还在,没有被销毁。destroy方法执行结束之后,AServlet对象的内存才会被Tomcat释放。

GenericServlet

GenericServlet是什么

  • 用GenericServlet抽象类代替Servlet接口做程序

GenericServlet的作用

  • 编写一个Servlet类直接实现Servlet接口很丑陋
    • 大多数时候只需要重写sevrice方法
    • 对init()和destory()方法并不关心
    • 编写一个servlet类来继承servlet接口简化
      • 继承Servlet类
      • 要能重写service方法
  • 我们需要对Servlet程序进行一些配置
    • 单纯的对接servlet接口的程序虽然能开发web程序,却无法做到对程序进行一些配置,即完成servletconfig接口

ServletConfig

ServletConfig是什么

  • Servlet程序的一些配置信息
    • 配置信息都是放在xml文件中,每一个Servlet程序会对应一个

ServletConfig的生命周期

  • 一个servlet程序对一个servletconfig对象,与servlet对象生命周期相同

ServletConfig能调用的方法

  • 如何使用Servletconfig

    • 该Servlet程序必须先完成了genericservlet接口,因为genericServlet完成了Servletconfig接口,使用的时候,只需要在serverlet程序下面直接调用this即可
  • 能使用的方法

public String getInitParameter(String name); // 通过初始化参数的name获取value
public Enumeration<String> getInitParameterNames(); // 获取所有的初始化参数的name
public ServletContext getServletContext(); // 获取ServletContext对象
public String getServletName(); // 获取Servlet的name
 其中获取servletcontext()另外地方专门描述

ServletContext

servletcontext作用是什么

  • 管理一个项目下的所有的servlet程序
  • 让每一个servlet程序能通过servletconfig来找到servletcontext对象
  • 本质上就是web.xml文件对象,包含所有servlet程序的配置信息

servletcontext生命周期

  • ServletContext被称为Servlet上下文对象。(Servlet对象的四周环境对象。)
  • 随着服务器的启动创建而创建
  • 在服务器停止服务的时候进行消除

servletcontext调用方法

  • servletcontext对象的调用
    • servletcontext对象被放在sevrletconfig里面,可以直接用this.getServletContext()来获取
  • servletcontext对象中的常用方法
public String getInitParameter(String name); // 通过初始化参数的name获取value
public Enumeration<String> getInitParameterNames(); // 获取所有的初始化参数的name
// 获取应用的根路径(非常重要),因为在java源代码当中有一些地方可能会需要应用的根路径,这个方法可以动态获取应用的根路径
// 在java源码当中,不要将应用的根路径写死,因为你永远都不知道这个应用在最终部署的时候,起一个什么名字。
public String getContextPath();
// 获取文件的绝对路径(真实路径)
public String getRealPath(String path);
// 通过ServletContext对象也是可以记录日志的
public void log(String message);
public void log(String message, Throwable t);
// 数据量小、所有用户共享、又不修改,这样的数据放到ServletContext这个应用域当中,会大大提升效率。因为应用域相当于一个缓存,放到缓存中的数据,下次在用的时候,不需要从数据库中再次获取,大大提升执行效率。

// 存(怎么向ServletContext应用域中存数据)
public void setAttribute(String name, Object value); // map.put(k, v)
// 取(怎么从ServletContext应用域中取数据)
public Object getAttribute(String name); // Object v = map.get(k)
// 删(怎么删除ServletContext应用域中的数据)
public void removeAttribute(String name); // map.remove(k)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值