有一个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中获取“创建”操作名称?
提前致谢。
答案 0 :(得分:1)
当向服务器(servlet或jsp)发出请求时,Web容器将调用过滤器。它们不是由Servlet或jsps调用的。
您可以在下图中看到过滤器的生命周期:
有关详情,请参阅DOCUMENTATION
如果您想知道从前端调用哪个操作,那么您可以使用请求参数,然后从ServletRequest
答案 1 :(得分:1)
我可以使用以下方式获取操作名称:
text.Replace('ö','o')
答案 2 :(得分:-1)
如果您正在搜索方法名称,那么您可以尝试这段代码:
StackTraceElement[] st = Thread.currentThread().getStackTrace();
String methodName = st[2].getMethodName();
您可以进一步修改 st 的索引以获取链式调用方法。它只是一个包含类和方法名称的简单堆栈跟踪对象数组。祝你好运!