是否可以添加到请求的可用参数(HttpServletRequest)

Viv*_*ira 9 java servlets http

我想拦截过滤器/ servlet中的请求并向其添加一些参数.但是,请求不会公开'setParameter'方法,并且操作时参数map会抛出一个错误,说明它已被锁定.我可以试试吗?

Bru*_*ine 12

子类HttpServletRequestWrapper并覆盖getParameter方法.这个类的描述如下:

提供HttpServletRequest接口的便捷实现,该接口可以由希望将请求适配到Servlet的开发人员进行子类化.

在过滤器中,将请求包装在子类的实例中.


Pan*_*ros 6

我ussualy将原始的HttpServletRequest包装到一个新的CustomHttpServletRequest中,该CustomHttpServletRequest充当原始请求的代理,然后将这个新的CustomHttpServletRequest传递给过滤器链.

在这个CustomHttpServletRequest中,您可以覆盖getParameterNames,getParameter,getParameterMap方法以返回您想要的任何参数.

这是过滤器的一个示例:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest httpRequest = (HttpServletRequest) request;
    HttpServletRequest customRequest = new CustomHttpServletRequest(httpRequest);
    customRequest.addParameter(xxx, "xxx");
    chain.doFilter(customRequest, response);
}
Run Code Online (Sandbox Code Playgroud)