当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《是否可以添加到请求的可用参数(HttpServletRequest)》经验,为你挑选了2个好方法。

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



1> Bruno De Fra..:

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

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

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



2> Panagiotis K..:

我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);
}

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有