我使用Filter拦截每个请求,在过滤器中我只能获得ServletRequest输入流,它返回空输入流,以获取输入流。似乎我需要获取HttpServletRequest。 怎么做到这一点? 我尝试了转换以及转换为httpservletrequest。 没有办法,我能够使用
获得价值request.getParameter("aaa") //when request content type is multipart/file.
答案 0 :(得分:1)
getInputStream()
是ServletRequest
接口的一部分,因此即使您将ServletRequest
转换为HttpServletRequest
(从ServletRequest扩展),结果也是相同的。
也许这个answer会帮助您找出输入流为空的原因。
答案 1 :(得分:1)
如果输入流为空,则没有请求正文。让HttpServletRequest
赢得改变:事实上,你已经拥有它。
答案 2 :(得分:0)
我成功地将“servletRequest”类型转换为我的自定义过滤器类中的“HttpServletRequest”。以下是摘录,
public class SAMLFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest)servletRequest;
if(servletRequest instanceof HttpServletRequest) {
httpServletRequest = (HttpServletRequest)servletRequest;
System.out.println("getInputStream = " + httpServletRequest.getInputStream());
} else {
System.out.println("NOT CAST");
}
@Override
public void destroy() {
}
}