【问题标题】:Verify header before request receive in tomcat在tomcat中接收请求之前验证标头
【发布时间】:2016-03-18 03:36:30
【问题描述】:

我需要在收到请求之前验证标头。我发现tomcat阀门可以帮助它。我按照以下步骤操作,但不调用阀门:

  1. 制作一个 maven 项目并在其中执行此代码。

    包 cz.ValveTest; 导入 java.io.IOException; 导入 java.util.Enumeration; 导入 java.util.logging.Level; 导入 java.util.logging.Logger; 导入 javax.servlet.ServletException; 导入 javax.servlet.http.HttpServletRequest; 导入 org.apache.catalina.connector.Request; 导入 org.apache.catalina.connector.Response; 导入 org.apache.catalina.valves.ValveBase; 公共类 ProcessingValve 扩展 ValveBase { private static final Logger logger = Logger.getLogger(ProcessingValve.class.getName()); @覆盖 公共无效调用(请求请求,响应响应)抛出 IOException, Servlet异常{
    HttpServletRequest httpServletRequest = request.getRequest();
    
     Enumeration<String> headerNames = httpServletRequest.getHeaderNames();
     logger.info("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
    
    而(headerNames.hasMoreElements()){ 字符串头 = headerNames.nextElement(); logger.log(Level.INFO, "Header --> {0} Value --> {1}", new Object[]{header, httpServletRequest.getHeader(header)}); }
      getNext().invoke(request, response);  
    
    } }
  2. 制作jar并将jar放入tomcat/lib文件夹中

  3. 在 server.xml 中添加这一行

    <valve className="cz.ValveTest.ProcessingValve"/>
    
  4. 重启tomcat。

  5. 现在我用标题访问我的网络服务:

    期望:100-继续

但是使用这个配置和代码阀门在http命中时没有被调用。如果有人知道为什么没有调用tomcat阀门,请帮助。

【问题讨论】:

  • 你把&lt;valve&gt;元素放在server.xml文件的什么地方?

标签: java web-services tomcat http-headers


【解决方案1】:

server.xml 中的标签区分大小写

所以试试这个:

<Valve className="cz.ValveTest.ProcessingValve"/>

【讨论】:

  • 感谢现在每个 http 请求都会调用它
猜你喜欢
  • 2016-03-15
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 2019-03-04
  • 2020-11-09
相关资源
最近更新 更多