【问题标题】:How do i get servlet instance from web.xml in my java class如何在我的 java 类中从 web.xml 获取 servlet 实例
【发布时间】:2013-01-24 12:42:09
【问题描述】:

我的web.xml 中有以下条目,我需要在我的 java 文件中使用该类的实例 我该怎么做?

<servlet>
    <servlet-name>DummyServlet</servlet-name>
    <servlet-class>javax.faces.webapp.Xxxx</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

【问题讨论】:

标签: java servlets


【解决方案1】:

目前我不相信你可以作为 servlet 容器创建任何给定 servlet 的单个实例并产生线程来满足请求。访问容器也正在使用的那个实例根本不符合您的利益

还有(现已弃用)ServletContext.getServlet("yourClassName")。但不要这样做 我很难想象在什么情况下您需要控制 DI 和良好设计无法帮助您避免的 servlet 实例。具体问题是什么?

【讨论】:

  • 例如对我来说,问题是我需要在 filterChain 全部用于第一个过滤器之前访问 servlet
【解决方案2】:

通常不需要,servlet 容器负责为 web.xml 中的每个 servlet 元素实例化单个 Servlet 实例,并使用这些实例来处理请求和生成响应。

否则,您可能需要解析 web.xml 并使用 Class.forName(className) 获取 servlet 类,然后使用 clazz.newInstance() 创建一个实例,假设存在默认构造函数(它应该这样做,因为这是一个小服务程序)。

【讨论】:

  • 这将创建新的 servlet 老兄而不是给旧的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-26
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 2014-06-22
  • 2020-04-23
相关资源
最近更新 更多