为什么我应该为ServletContext使用setInitParameter()而不是setAttribute()?

时间:2015-04-15 07:28:04

标签: java servlets servletconfig

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

说,

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

1 个答案:

答案 0 :(得分:1)

  1. 是的,你的方法是正确的。使用ServletContext::setAttribute是执行您正在执行的操作的正确方法。如果您查看ServletContext::setInitParameter的javadoc,您会看到它:
  2.   

    IllegalStateException - 如果此ServletContext已初始化

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

      Servile 3.0引入了
    1. setInitParameter,它引入了基于注释的配置作为XML配置的替代方案。我假设添加了此方法以允许基于注释的配置通过Java方法调用填充init参数。