可以通过 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录