我正在处理 UTM 参数,我需要在登录后将参数转发到登录页面。我设法通过将它们放入 sessionAttributes 并在登录后调用登录页面来做到这一点。如果我导航到另一个页面并返回到原始页面,我将丢失 utm 参数。在这里,我不想在每个导航链接上附加参数。我正在考虑的解决方案是提出一个过滤器,将现有的 URL 附加到会话属性中已经存在的 utm 参数中。我尝试HttpServletRequestWrapper并覆盖了 getQueryString 方法,但我没有看到附加参数反映的新查询字符串我在这里遗漏了什么?这是有效的吗?我只在下面放了必要的代码
public class CustomConcurrentSessionFilter extends ConcurrentSessionFilter {
static class FilteredRequest extends HttpServletRequestWrapper {
public FilteredRequest(ServletRequest request) {
super((HttpServletRequest)request);
}
@Override
public String getQueryString() {
String queryString = super.getQueryString();
String utmQueryString = (String) this.getSession().getAttribute("utmQueryString");
queryString+=utmQueryString;
return queryString;
}
}
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
if(request.getRequestURI().contains("landing.htm")) {
chain.doFilter(new FilteredRequest(request), response);
}else {
chain.doFilter(request, response);
}
}
}