【Web基础】作为Web应用 - Servlet参数 / 上下文初始化参数 / 监听器 / 属性 / 请求分派

国庆快乐鸭,明天我们就要正式上线下课了,这大概是最短的国庆假期了,只要两天,希望祖国母亲越来越好,您的孩子们会努力的!!! 加油~~~

一、 Servlet参数 - ServletConfig

  1. 使用场景:我们想在 DD 中配置 email 地址,而不是硬编码到 servlet 类中
  2. 特点:只读取一次,在容器初始化 servlet 的时候 ,可将其看作部署时常量,运行时不可改变
    【Web基础】作为Web应用 - Servlet参数 / 上下文初始化参数 / 监听器 / 属性 / 请求分派_第1张图片

问题1: 运行时不可改变岂不是每次修改 XML 内容就要重新部署?

是的,重启 Tomcat 即可,也可使用热部署,通过这种方式不必关闭正在运行的 Web 应用

问题2: JSP 如何得到 Servlet 初始化参数?

使用另一请求属性将模型信息传递给 JSP,JSP接收转发请求,显然这不适用于当变量是整个 Web应用 都需要使用的全局变量的情况,因此要引入 ServletContext

二、上下文初始化参数 - ServletContext

  1. 上下文初始化参数:对整个 Web 应用可用 ,即 servlet 和 JSP 都可以访问,配置方式如下:
        <content-param>
            <param-name>fooparam-name>
            <param-value>barparam-value>
        content-param>

2. 其他功能:

【Web基础】作为Web应用 - Servlet参数 / 上下文初始化参数 / 监听器 / 属性 / 请求分派_第2张图片
3. 与ServletConfig的区别:

每个servlet 有一个 ServletConfig ,每个 Web应用有一个 ServletContext
【Web基础】作为Web应用 - Servlet参数 / 上下文初始化参数 / 监听器 / 属性 / 请求分派_第3张图片

三、 监听器 - ServletContentListener

1. 监听器:监听事件,在应用为客户服务前运行一些代码
2. 功能

  1. 监听上下文属性
  2. 监听 servlet 请求和属性
  3. 监听 HTTP 会话 和会话属性相关的事件

3. 场景:
【Web基础】作为Web应用 - Servlet参数 / 上下文初始化参数 / 监听器 / 属性 / 请求分派_第4张图片

4. 分类

【Web基础】作为Web应用 - Servlet参数 / 上下文初始化参数 / 监听器 / 属性 / 请求分派_第5张图片

四. 属性

1. 属性: 就是一个对象,可以简单地认为是一个映射实例对象的名值对
2. 三个作用域: 上下文,请求,会话
3. 线程安全情况

(1)上下文作用域不是线程安全的,整个 web 应用都可以访问,怎么可能安全

解决:而是对上下文加锁,对 servlet 加锁(同步服务方法)不能保护上下文属性,因为我们只是自己不访问了,不能阻止其他 servlet 访问

(2)会话属性也不是线程不安全,一个客户可以打开多个浏览器窗口

解决:HttpSession 同步

(3)请求属性和局部变量是线程安全的

4. 请求分派

希望应用的其他组件接管全部或部分请求,用到 RequestDispatcher

RequestDispatcher 只含foward() include() 方法, RequestDispatcher可以从请求中得到或从上下文中得到,只需要告知把请求转发给那个 Web组件即可

【Web基础】作为Web应用 - Servlet参数 / 上下文初始化参数 / 监听器 / 属性 / 请求分派_第6张图片

你可能感兴趣的:(Web基础,servlet,前端,java,web)