Sevlet概述

1. What's the Servlet?
    Servlet是基于Java技术的一个Web 组件,是运行在服务器断的java应用程序.也是Java Web技术的核心基础.  由容器管理. 和其他Java Web组件一样, Servlet也是平台无关性的.被编译为平台中立的字节码文件.可以被动态的加载和运行. 

2.Servlet的作用? 
    a) . Servlet用来处理客户端的请求. 
    b) . Servlet用来生成动态内容.

3. Servlet容器.
    Servlet容器有时也叫Servlet引擎,用来管理Servlet的生命周期.Servlet始终运行在Servlet容器中.一个容器可以管理多个Servlet.

4. Servlet的生命周期(Lifecycle)?
    Servlet的生命周期表现在三个方法. init(), service(), destroy().
    Servlet的生命周期由容器管理,包含 加载,  实例化,  初始化,  服务, 销毁. 加载由classloader执行. 然后实例化. 调用init方法初始化servlet, 等待client的 request, 调用service方法处理客户端的请求. 分发到doGet和doPost方法处理.每个servlet都必须直接或是间接实现javax.servlet.Servlet接口. java API提供了两个Servlet接口的实现类. HttpServlet, GenericServlet, 自定义Servlet时一般扩展HttpServlet实现类. 
    
    Servlet什么时候销毁 ?
    容器不保证在启动状态下一直保持对Servlet实例的加载. 当容器决定要销毁这个servlet instance时, 或者容器关闭时.    会调用这个Servlet的destroy()方法去销毁这个实例, 在执行destroy方法前, 容器必须允许当前正在使用Servlet service()方法的线程正确的执行完毕, 然后调用destroy方法销毁当前servlet实例.

5. 什么时候加载?
    Servlet可以在容器启动时加载, 也可以在容器启动开始工作后加载. 取决于具体配置. 在web.xml的servlet节点下. 有<load-on-startup>节点可以配置. 这个节点的值可以是有符号的整数.当为负数时. 配置该Servlet在任何时候都不需要实例化 . 当为正数时, 数值越小. 加载的优先级越高. 设置为0时. 表示容器启动的时候就实例化. 

6. 过滤器(Filter),监听器(Listener),Servlet, Context-param, 它们几个的加载顺序和优先级别?
    Context-param是容器级别的. 优先级最高. 其他的几个组件是应用程序级别的. 优先级偏低.
    加载顺序为:
            Context-param > Listener >  Filter  > Servlet
     1). 有多个Listener时, Listener之间的加载顺序.
            定义在web.xml中的先后顺序决定
    2). 有多个Filter时, Filter的加载顺序.
             定义在web.xml中的先后顺序决定
    3). 有多个Servlet时, Servlet之间的加载顺序.
            由<load-on-startup>中的值决定. 都没有定义时, 由处理的先后顺序决定. 没有定义启动参数时. 当servlet容器match到需要用这个servlet处理 client 的请求. 这时容器实例化这个Servlet.


7. Context-param是什么, 有什么作用?
    Context-param是应用程序级别的初始化参数, 供容器内的所有组件实例共享. 在web.xml中配置. 父节点是<webapp>.
    单一从配置上来看. <context-param>与listener, filter, servlet在同一级, 它是应用程序级的参数, 当容器启动加载应用程序时, 会读到配置在web.xml中的context-param, 作为初始化参数并将其保存至ServletContext对象中.
在整个应用程序运行时,都可以从ServletContext对象中用getinitParameter()方法读到. Scope:Application. 供多个servlet共享. 与<init-param>的区别是, 后者是servlet级别的. 只供配置它的servlet私有.

8. 浅谈HttpServletRequest,HttpServletResponse 对象
    HttpServletRequest和HttpServletResponse对象分别扩展实现了Request,Resposne接口的ServletRequest, ServletResponse公共接口类. 
    HttpservletRequest封装了客户端请求的信息. 包含所有请求信息, 如 请求参数,地址, 提交的数据, 请求头... HttpservletRequest提供了基于http协议的有关方法. 主要用于传输请求信息.
    HttpServletResponse对象封装了服务器向客户端的响应信息. 包含ContentType和响应结果.

9.RequestDispatcher对象
    RequestDispatcher对象定义了接收来自Client的请求,然后把请求发送到任何资源(Servlet, JSP, HTML)的对象. 由Servlet 容器创建.
    Method: forward(ServletRequestServletResponse), 转发Servlet的请求到其他资源.
                 include (ServletRequestServletResponse),include方法允许在response中包含像 servlet, jsp, html等资源. 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值