zoukankan      html  css  js  c++  java
  • 注解方式过滤器(Filter)不能过滤Servlet的问题

    https://www.aliyun.com/jiaocheng/778495.html

    今天写filter(过滤器)的时候,碰到一个奇怪的问题,发现filter可以过滤urlPatterns,但是无法过滤servlet。

    测试结果:

    1.LoginFilter 可以过滤 urlPatterns 的请求 ,但无法过滤 servletNames 里的Servlet

    2. 如果在web.xml文件中配置servlet的方式,有可以过滤。

    难道就非要使用web.xml配置的方式不可么。

    经过仔细研究发现,filter在查找servlet是通过servletNames进行查找的。而servlet注解方式创建的时候,默认是没有给servlet命名的,只是给了一个urlPatterns。导致filter找不到servlet,自然就无法完成过滤。

    解决方案:

    修改servlet的注解,指定servlet的name。

    修改后:

    @WebServlet(name="CartItemServlet", urlPatterns="/CartItemServlet")

    再测试,filter可以成功过滤servlet。

    @WebFilter(

    urlPatterns = {
    "/jsps/cart/*",
    "/jsps/order/*"
    },
    servletNames = {
    "CartServlet",
    "OrderServlet"
    })
    public class LoginFilter implements Filter {

    }

    @WebServlet(name="CartServlet",urlPatterns="/CartServlet")
    public class CartServlet extends BaseServlet {}

    @WebServlet(name="OrderServlet" ,urlPatterns="/OrderServlet")
    public class OrderServlet extends BaseServlet {}

  • 相关阅读:
    python ipython使用
    Django ORM 操作
    Django uwsgi 基础知识
    前端 vue router 传递参数
    观察者模式和发布订阅模式
    关于重绘和回流
    Vuex入门简单示例(五)
    Vuex入门简单示例(四)
    Vuex入门简单示例(三)
    Vuex入门简单示例(二)
  • 原文地址:https://www.cnblogs.com/xiqoqu/p/9213474.html
Copyright © 2011-2022 走看看