SpringBoot 使用 HandlerInterceptorAdapter 修改 GET 请求参数 (无需重定向)
可以通过 HandlerInterceptorAdapter 的 preHandle 方法来修改请求参数,不需要使用重定向。以下是一个示例代码:
public class MyInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (request.getMethod().equals('GET')) {
String oldParam = request.getParameter('oldParam');
String newParam = 'newParamValue';
request.setAttribute('newParam', newParam);
String queryString = request.getQueryString();
if (queryString == null) {
queryString = '';
} else {
queryString = '?' + queryString;
}
String newUrl = request.getRequestURI() + queryString.replace('oldParam=' + oldParam, 'newParam=' + newParam);
request.getRequestDispatcher(newUrl).forward(request, response);
return false;
}
return true;
}
}
在 preHandle 方法中,首先判断请求方法是否为 GET,然后获取原始参数 'oldParam',将新的参数 'newParam' 存储在 request 的属性中。接下来,构造新的请求 URL,并将请求转发到该 URL,最后返回 false,表示请求处理已完成,不需要继续执行。这样就可以在不使用重定向的情况下修改 GET 请求参数了。
原文地址: https://www.cveoy.top/t/topic/n8rf 著作权归作者所有。请勿转载和采集!