3

如果我必须在运行时定义一个context-visib参数,我不会使用ServletContext.setInitParameter(),因为 init 参数是在部署描述符中定义的,我认为这ServletContext().setAttribute()会更合适。

说,

  1. 我的方法正确吗?在哪种情况下我应该使用ServletContext.setInitParameter()而不是ServletContext().setAttribute()
  2. 为什么调用该方法setInitParameter()初始化参数实际上是ServletConfigweb.xml文件中定义的,我正在设置/获取上下文参数(拥有 to ServletContext)。
4

1 回答 1

1
  1. 是的,你的方法是正确的。使用ServletContext::setAttribute是做你正在做的事情的正确方法。如果您查看 javadoc for ServletContext::setInitParameter,您会看到它说:

IllegalStateException - 如果这个 ServletContext 已经被初始化

因此,一旦上下文启动,您将无法再调用该方法。

  1. setInitParameter在 Servlet 3.0 中引入,它引入了基于注解的配置作为 XML 配置的替代方案。我假设添加此方法是为了允许基于注释的配置通过 Java 方法调用填充 init 参数。
于 2015-04-15T08:26:51.037 回答