
如前所述
HttpServletRequest,没有setParameter方法。这是故意的,因为该类表示来自客户端的请求,而修改参数将不表示该请求。
一种解决方案是使用
HttpServletRequestWrapper类,该类使你可以将一个请求与另一个请求包装在一起。你可以对其进行子类化,并重写该getParameter方法以返回经过清理的值。然后,你可以将该包装的请求传递给
chain.doFilter而不是原始请求。
这有点丑陋,但这就是servlet API所说的。如果你尝试将其他任何内容传递给doFilter,则某些servlet容器会抱怨你违反了规范,并拒绝处理它。
一个更好的解决方案是更多的工作-修改处理该参数的原始servlet / JSP,以便它期望使用请求属性而不是参数。过滤器检查参数,将其净化,然后使用
request.setAttribute净化值设置属性(使用)。没有子类,没有欺骗,但确实需要你修改应用程序的其他部分。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)