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

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

一、 Servlet参数 - ServletConfig

  1. 使用场景:我们想在 DD 中配置 email 地址,而不是硬编码到 servlet 类中
  2. 特点:只读取一次,在容器初始化 servlet 的时候 ,可将其看作部署时常量,运行时不可改变
    在这里插入图片描述

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

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

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

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

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

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

2. 其他功能:

在这里插入图片描述
3. 与ServletConfig的区别:

每个servlet 有一个 ServletConfig ,每个 Web应用有一个 ServletContext
在这里插入图片描述

三、 监听器 - ServletContentListener

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

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

3. 场景:
在这里插入图片描述
在这里插入图片描述
4. 分类

在这里插入图片描述

四. 属性

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

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

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

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

解决:HttpSession 同步

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

4. 请求分派

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

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值