java - 在 servlet 中获取过滤器初始化参数

标签 java init-parameters

我有一个看起来像这样的过滤器:

   <filter>
      <filter-name>TestFilter</filter-name>
      <filter-class>org.TestFilter</filter-class>
      <init-param>
         <param-name>timeout</param-name>
         <param-value>30</param-value>
      </init-param>
   </filter>

既然我们在谈论 ServletFilter 和 Servlets。本质上,我已经在我的 servlet 中并执行了 doFilter 的第一部分。所以容器必须知道初始参数。我无权更改 Filter 类。

是否有可能获得给定 HttpServletRequest 对象的初始参数值?

我能想到的唯一解决方案是将 web.xml 作为资源读取并尝试手动查找值。但感觉有更好的解决方案。

最佳答案

为什么您一开始就需要在您的 servlet 中使用它?过滤器参数属于过滤器。您的选择是:

  1. 将所述参数移动到上下文初始化参数;您将能够从过滤器和 servlet 访问它。
  2. 在你的过滤器的 doFilter 方法中设置一个带有参数值的属性(根据请求),让你的 servlet 读取它。

上下文参数示例。

web.xml:

  <context-param>
    <param-name>param1</param-name>
    <param-value>value</param-value>
  </context-param>

你的代码:

String paramValue = getServletContext().getInitParameter("param1");

并且过滤器可以使用以下方式访问相同的参数值:

String paramValue = filterConfig.getServletContext().getInitParameter("param1");

关于java - 在 servlet 中获取过滤器初始化参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1461335/

相关文章:

xml - 如何在 liferay 中获取 portlet.xml 的初始化参数?

java - 有没有办法在 servletconfig 和 servletContext 对象中设置 init 参数?

java - 与rabbitmq java客户端API交换的列表绑定(bind)

java - hibernate 中实体的 setter 中的空指针异常

java - 在 JAR 中导出时,Weka 和 Snowball 不起作用

java - 为什么不弹出警报?

java - <context-param> 和 <init-param> 之间的区别

java - MongoDB 和 Spring MVC : PATCH operation?

java - 多个 java servlet 的 web.xml 中的通用初始化参数?

servlets - 在 servlet 上下文监听器中获取 servlet 初始化参数