在过滤器的dofilter方法中获取httpservletrequest

时间:2016-11-07 07:08:37

标签: java spring spring-mvc

我使用Filter拦截每个请求,在过滤器中我只能获得ServletRequest输入流,它返回空输入流,以获取输入流。似乎我需要获取HttpServletRequest。 怎么做到这一点? 我尝试了转换以及转换为httpservletrequest。 没有办法,我能够使用

获得价值
request.getParameter("aaa") //when request content type is multipart/file.

3 个答案:

答案 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() {

    }
}