使用 web.xml 在 Tomcat 8 上设置自定义过滤器

Posted

技术标签:

【中文标题】使用 web.xml 在 Tomcat 8 上设置自定义过滤器【英文标题】:Set custom filter on Tomcat 8 using web.xml 【发布时间】:2019-10-15 22:58:40 【问题描述】:

我想使用此方法启用 CORS Tomcat 8(自定义过滤器) Tomcat CORS filter

我对在 web.xml 中调用自定义过滤器的步骤感到困惑。

如何设置.java文件?这个文件(SimpleCORSFilter)的目录在哪里?

public class SimpleCORSFilter implements Filter 

  public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException 
      HttpServletResponse response = (HttpServletResponse) res;
      response.setHeader("Access-Control-Allow-Origin", "*");
      response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
      response.setHeader("Access-Control-Max-Age", "3600");
      response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
      chain.doFilter(req, res);
  

【问题讨论】:

【参考方案1】:

将过滤器定义为example连接到URL:

<filter>
    <filter-name>cors</filter-name>
    <filter-class>com.robin.filters.SimpleCORSFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>cors</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

将过滤器定义为example连接到servlet:

<filter>
    <filter-name>MyFilter</filter-name>
    <display-name>MyFilter</display-name>
    <filter-class>com.xxx.yyy.zzz.MyFilter</filter-class>
</filter>

<filter-mapping>
   <filter-name>MyFilter</filter-name>
   <servlet-name>MyAction</servlet-name>
</filter-mapping>

【讨论】:

所以,我可以把脚本'public class SimpleCORSFilter implements Filter .....' @RidhoDwiDharmawan 这是 Java 代码,它是您的 Java 应用程序源代码的一部分。 只是放入web.xml还是放入其他文件? 把它的全名放在web.xml中作为filter-class值,作为我的例子 我用这个内容(下面的代码)创建 .java 文件,然后我必须把文件放在哪里? public class SimpleCORSFilter implements Filter public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException HttpServletResponse response = (HttpServletResponse) res; response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Contro .....

以上是关于使用 web.xml 在 Tomcat 8 上设置自定义过滤器的主要内容,如果未能解决你的问题,请参考以下文章

从 web.xml 迁移到基于 Java 的配置 - 无法启动 Tomcat 8

需要帮助在 tomcat 上设置 CORS

web.xml - Java Servlet 过滤器 - 在处理 JSP 页面之前未运行(在 Tomcat 上)

如何在 Tomcat web.xml 中添加标头?

tomcat配置文件server.xml详解

tomcat 需要访问默认主页 已设置了web.xml