【问题标题】:What is the need of servlet init parameters?servlet init 参数需要什么?
【发布时间】:2014-04-27 14:30:53
【问题描述】:

在 servlet 配置中使用 init-parameters 有什么需要? 如果答案是让 servlet 初始化它的参数,那么这个答案的问题是“当服务器下次启动以再次实例化 Servlet 时,这个初始化值是否仍然存在?”。 将这些参数存储在文件中可能是一个更好的选择。 我只是想澄清一下我是否可以在 destroy() 中设置 init-parameter 的值,以便下次服务器启动时它会在 init() 中更新此参数的值。

【问题讨论】:

    标签: servlets init-parameters


    【解决方案1】:

    第一个问题是,第二个问题不是。初始化参数应该在 ServletConfig 对象中使用,但它们是不可变的(你怎么能做 setInitParameter?)

    【讨论】:

    • 谢谢安德里亚。您能否在相同的上下文中回答以下查询。 init 参数的值如何保持?假设我在 web.xml 中有一个名为 EmpSalary 的初始化参数,其值为 1000。我已经在 init() 中获取了这个值,然后在我的 servlet 中的某个时刻我已经将该值更新为 2000,那么我如何确保下次服务器启动时我会在 init() 中获得 2000? (将其存储在文件中可以完成我的工作,但是使用什么初始化参数呢?)
    • 简短的回答是:您不能使用 servlet 标准程序。正如我告诉你的,你在 web.xml 中设置的参数是不可变的。如果您需要这种持久性,则不应使用它们(将它们视为最终的静态常量),而应使用诸如数据库或文件之类的东西。最好的,安德里亚
    • 此外,每个 servlet 调用一次 init() 方法(这不是很精确,但它涵盖了 99.99%)所以即使您能够更新该值(这是不可能的),您下次启动后会再次读取该值,这听起来很奇怪(生产应用程序不应该崩溃或关闭)
    • 是的,这就是我想知道的,如果它们是不可变的,那么我们为什么需要它们。我的意思是我们可以直接在类本身中定义最终变量(常量)以具有初始化参数。我还不清楚,需要init-parameter吗?
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多