簡體   English   中英

如何使用servlet過濾器修改和設置發布請求主體

[英]How to modify and set the post request body using servlet filter

我想對JSON請求和響應都進行一些加密/解密。為此,我選擇了servlet過濾器。但是,我不知道如何修改和設置JSON請求主體。 任何解決方案都是高度贊賞的。

您必須使用包裝器:

private static class MyRequestWrapper extends HttpServletRequestWrapper {
    private ServletInputStream input;

    public MyRequestWrapper(ServletRequest request) {
        super((HttpServletRequest)request);
    }

    @Override
    public ServletInputStream getInputStream() throws IOException {
        if (input == null) {
            input = new InputStreamDecoder(super.getInputStream());
        }
        return input;
    }
}

private static class MyResponseWrapper extends HttpServletResponseWrapper {
    private ServletOutputStream output;

    public MyResponseWrapper(ServletResponse response) {
        super((HttpServletResponse)response);
    }

    @Override
    public ServletOutputStream getOutputStream() throws IOException {
        if (output == null) {
            output = new OutputStreamEncoder(super.getOutputStream());
        }
        return output;
    }

    public void close() throws IOException {
        if (output != null) {
            output.flush();
        }
    }
}

@Override
public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain)
        throws IOException, ServletException {
    MyRequestWrapper req = new MyRequestWrapper(request);
    MyResponseWrapper res = new MyResponseWrapper(response);
    chain.doFilter(req, res);
    res.close();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM