Tomcat報錯 : 啟動過濾器異常


項目場景

idea + ssm整合 + maven + tomcat8.x + web3.x + JDK1.8 + 登錄攔截器完成 , 跨域過濾器完成並測試

問題描述

報錯內容 :

嚴重 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.filterStart 啟動過濾器異常
java.lang.AbstractMethodError //抽象方法錯誤
		at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
		at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
		at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:106)
		at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4538)
		at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5181)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
		....

報錯截圖 :

原因分析

報錯提示 : filterStart 啟動過濾器異常

可能原因 :

  • 過濾器內編寫代碼有問題
  • 版本兼容問題

解決方案

修改過濾器代碼 (未解決)

過濾器代碼本身沒有問題

版本兼容問題 (已解決)

查找資料后懷疑是版本兼容問題 , 請教過大佬后重寫過濾器的init方法 , 問題解決

代碼演示 :

//原本沒有重寫init方法 , 因為init方法是default修飾的 , 應該是不需要重寫的 , 所以懷疑是版本兼容性問題
@WebFilter("/*")//攔截所有請求
public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        String origin = request.getHeader("Origin");
        
        System.out.println("過濾器");
        // 響應標頭指定 指定可以訪問資源的URI路徑

        response.setHeader("Access-Control-Allow-Origin", origin);

        //響應標頭指定響應訪問所述資源到時允許的一種或多種方法
        response.setHeader("Access-Control-Allow-Methods", "*");

        //設置  受支持請求標頭
        response.setHeader("Access-Control-Allow-Headers", "*");

        // 指示的請求的響應是否可以暴露於該頁面。當true值返回時它可以被暴露
        response.setHeader("Access-Control-Allow-Credentials", "true");
        
        filterChain.doFilter(servletRequest, servletResponse);
    }
}

總結

版本兼容性問題仍需要注意 , 下次在添加依賴和導包之前需要好好了解一下兼容性問題 , 雖然這次只出現在了一個ssm整合的項目中 , 保不齊下次就出現在了springboot中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM