Servlet3.0可以用@WebServlet注解给Web容器设置共享的初始化参数吗?答案是当然不可以

Preface:

今天在学习ServletConfig接口时看到书上说:

在Servlet3.0中,可以用@WebServlet注解来在当前Servlet范围内设置初始值.

于是开始突发奇想,那么在Servlet3.0中,可以用WebServlet注解给Web容器设置共享的初始化参数吗?

Analysis:

既然想到了这个问题,那么就一定要搞明白它.

首先我们先来复习一下与此相关的Servlet知识

ServletContext: 

ServletContext表示Web应用的上下文,ServletContext对象可以被Servlet容器中的所有Servlet共享.

它有一个方法 public String getInitParameter(String name) 是用来在整个Web容器中,获取名为name的初始化参数

其初始化参数的取值范围为整个Web容器

ServletConfig:

ServletConfig对象可以在Servlet初始化时,向该Servlet传递信息.

而且它也有一个方法 public String getInitParameter(String name) 是用来在当前项目的所有Servlet范围内,获取名为name的初始化参数

其初始化参数的取值范围为当前项目的所有Servlet范围

那么再看在Servlet3.0中的关于@WebServlet注解的定义

这里已经被明确规定

在Servlet3.0中: 可以用@WebServlet注解来在当前Servlet范围内设置初始值.

没有说可以在Web容器范围内可以设置共享的初始值.

上面是官方的说法,下面是我个人的理解

首先,我们来看一下@WebServlet注解的位置

可以看到@WebServlet注解是在Servlet里面的

那么其范围当然只能在当前Servlet范围内设置初始值

就比如在一个方法内,我们只能定义一个局部变量初始化

而不能在该方法内定义一个全局变量

综上所述

我们不能够用@WebServlet注解给Web容器设置共享的初始化参数

你可能感兴趣的:(Java)