java - 使用过滤器/拦截器捕获相关的用户请求
问题描述
我正在捕获为我的网站请求的 URL。我需要查看从我的网站请求的所有页面。
为此,我创建了一个基本过滤器,并从那里开始记录页面请求。
现在,此过滤器捕获特定于页面的所有请求。
例如abc.com/page1、abc.com/resources/myjs.js等。
我的问题是,对于每个页面请求,也会请求后续资源(js、css)。我只想捕获相关请求。
现在,我检查是否有类似/resources
忽略此类请求的模式,但我正在寻找一种更干净的方法。
另外,拦截器在这里会更有用吗?我也看到了过滤器模式。但这些都没有用,因为我必须为我的过滤器创建模式。
解决方案
如果您想捕获从您的网站访问的 url,您可以配置 spring boot 以通过以下方式生成访问日志,直到您不想要更多高级信息:
server.tomcat.accesslog.directory=/logs/ #absolute directory path for log files\
server.tomcat.accesslog.enabled=false #Enable access log.
server.tomcat.accesslog.pattern=any_pattern # log string format pattern for access logs.
要根据任何请求模式执行任何操作,您可以继续使用过滤器。我正在通过以下方式使用过滤器来满足此类要求:
public class CustomFilter extends OncePerRequestFilter{
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
String url = request.getRequestURI();
if (url.startsWith("/resources/")) {
//your business logic
}
filterChain.doFilter(request,response);
}
}
推荐阅读
- amazon-web-services - SSH 拒绝规则允许我使用 SSH?
- git - Git拒绝使用远程分支执行活动
- sql - 在 R 中使用 dbWriteTable 将数据帧写入 SQL 数据库表时出错
- java - 将 Java Instant 格式化为“YYYYMMdd”会增加一年?
- c# - 就绪事件处理程序超时
- angular - Nswag Typescript API 客户端 InjectionToken 没有被解析
- reactjs - 如何使用新的 auth0-spa.js 在不单击登录按钮的情况下重定向到 auth0?
- jenkins - jenkinsfile 页面加载事件
- javascript - 为什么我的 Ajax 调用没有超过 readystate 1?
- r - 如何计算R中数据框中每行出现多个字符串的次数