在Java Filter中获取方法名称

时间:2015-05-22 13:14:37

标签: java servlets filter

有一个Java过滤器负责拦截某些端点。

在doFilter方法中,如下:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException;

如何获取访问的方法名称?

例如:

给定2个Servlet后跟操作名称:

LifeCycle
   create
   delete
SearchService
   findByName
   findById

当前端透视调用LifeCycle.create操作时,过滤器会拦截它,但我不知道调用的操作是创建还是删除?

有没有办法在Java Filter中获取“创建”操作名称?

提前致谢。

3 个答案:

答案 0 :(得分:1)

当向服务器(servlet或jsp)发出请求时,Web容器将调用过滤器。它们不是由Servlet或jsps调用的。

您可以在下图中看到过滤器的生命周期:

enter image description here

有关详情,请参阅DOCUMENTATION

如果您想知道从前端调用哪个操作,那么您可以使用请求参数,然后从ServletRequest

中捕获它

答案 1 :(得分:1)

我可以使用以下方式获取操作名称:

text.Replace('ö','o')

答案 2 :(得分:-1)

如果您正在搜索方法名称,那么您可以尝试这段代码:

    StackTraceElement[] st = Thread.currentThread().getStackTrace();
    String methodName = st[2].getMethodName();

您可以进一步修改 st 的索引以获取链式调用方法。它只是一个包含类和方法名称的简单堆栈跟踪对象数组。祝你好运!