Spring mvc 如何在spring mvc中获取过滤器外部的字符串
当我运行它时,我会以正确的格式获取原始请求字符串,但是当我尝试在doFilter方法之外的任何地方获取此原始请求时,它会返回nullSpring mvc 如何在spring mvc中获取过滤器外部的字符串,spring-mvc,servlets,servlet-filters,Spring Mvc,Servlets,Servlet Filters,当我运行它时,我会以正确的格式获取原始请求字符串,但是当我尝试在doFilter方法之外的任何地方获取此原始请求时,它会返回null 是否有一种方法可以在doFilter方法之外获取此字符串。我尝试将此字符串传递给一个新方法,但没有任何效果。一个简单的解决方案是将刚刚读取的原始请求字符串添加到ServletRequest属性中: @Override public void doFilter(ServletRequest req, ServletResponse res, FilterCh
是否有一种方法可以在doFilter方法之外获取此字符串。我尝试将此字符串传递给一个新方法,但没有任何效果。一个简单的解决方案是将刚刚读取的原始请求字符串添加到ServletRequest属性中:
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
StringWriter writer = new StringWriter();
IOUtils.copy(request.getInputStream(), writer, "UTF-8");
rawRequest = writer.toString();
System.out.println("raw Request :" + rawRequest);
chain.doFilter(req, res);
}
然后,您可以将其恢复到您有权访问请求对象的任何位置:
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
StringWriter writer = new StringWriter();
IOUtils.copy(request.getInputStream(), writer, "UTF-8");
rawRequest = writer.toString();
System.out.println("raw Request :" + rawRequest);
req.setAttribute("rawRequest", rawRequest);
chain.doFilter(req, res);
}
将其传递给新方法是什么意思?显示更多代码。。
String rawRequest = (String)req.getAttribute("rawRequest");