67,514
社区成员
发帖
与我相关
我的任务
分享
{"tag":"Maven_Test-pl","time":"2017/10/17 15:44:58.230","level":"ERROR","kind":"","tid":"","fid":"",E099999 : org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: getOutputStream() has already been called for this response
Caused by: java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:624)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:211)
at org.thymeleaf.spring4.view.ThymeleafView.renderFragment(ThymeleafView.java:335)
at org.thymeleaf.spring4.view.ThymeleafView.render(ThymeleafView.java:189)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
... 44 more
0268D8C570C1F092D199031C9B1BA4E3 /getreports 0:0:0:0:0:0:0:1
user-agent :[Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko]
method :[POST]
content type :[application/x-www-form-urlencoded; charset=UTF-8]
content length:[74]
request headers:[content-type=application/x-www-form-urlencoded; charset=UTF-8,accept=*/*,x-requested-with=XMLHttpRequest,referer=http://localhost:8080/Maven_Test/home,accept-language=en-US,en;q=0.8,ja;q=0.6,zh-Hans-CN;q=0.4,zh-Hans;q=0.2,accept-encoding=gzip, deflate,user-agent=Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko,host=localhost:8080,content-length=74,connection=Keep-Alive,cache-control=no-cache,cookie=JSESSIONID=0268D8C570C1F092D199031C9B1BA4E3; mbox=PC#1506488747119-884425.24_11#1509433793|session#1508224063796-450388#1508226053|check#true#1508224253; s_fid=5C5BA480303F72DA-0C18CB1F102AA4E4; s_nr=1508224401589-Repeat,authorization=Basic bWlkYXN1c2VyOm1pZGFzdXNlcg==]
request params:[reportCategory=99,reportStatus=99,tradeDate=2017/10/17,startDate=すべて]
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.MainSource.earth.servlet.filter.AccessLogFilter.doFilter(AccessLogFilter.java:101)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.MainSource.earth.servlet.filter.ParameterAttackFilter.doFilter(ParameterAttackFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.MainSource.earth.servlet.filter.RequestRestrictionFilter.doFilter(RequestRestrictionFilter.java:90)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.MainSource.earth.servlet.filter.EncodingFilter.doFilter(EncodingFilter.java:44)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.MainSource.earth.servlet.filter.PoxyFilter.doFilter(PoxyFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.MainSource.earth.servlet.filter.ParameterLogFilter.doFilter(ParameterLogFilter.java:131)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1457)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:624)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:211)
at org.thymeleaf.spring4.view.ThymeleafView.renderFragment(ThymeleafView.java:335)
at org.thymeleaf.spring4.view.ThymeleafView.render(ThymeleafView.java:189)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
... 44 more
try (OutputStream out = response.getOutputStream();
FileInputStream inputToRead = new FileInputStream(fileToDownload);) {
response.setContentType("application/x-pdf; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + fileName);
response.setContentLength((int) fileToDownload.length());
byte[] buffer = new byte[4096];
int length;
while ((length = inputToRead.read(buffer)) > -1) {
out.write(buffer, 0, length);
}
logger.info("{}: file downloaded for customerId: {}",fileName,userAccount.getCustomerId());
} catch (IOException e) {
logger.error("downloadreport / IO exception");
}
[/quote]
在处理下载文件转发的jsp页面加<%.....上面内容....%>
@SuppressWarnings("unchecked")
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain filter) throws IOException, ServletException {
try {
HttpServletRequest request = (HttpServletRequest) req;
for (int i = 0; i < ignorePathList.size(); i++) {
String ignorePath = ignorePathList.get(i);
if (request.getServletPath().startsWith(ignorePath)) {
filter.doFilter(req, res);
return;
}
}
String sessionId = "Invalidate session";
try {
HttpSession session = request.getSession();
sessionId = session.getId();
} catch (IllegalStateException e) {
}
MDC.put(MdcLogParameter.MDC_KIND.getId(), PARAM_LOG);
StringBuilder sb = new StringBuilder(128);
sb.append(sessionId).append(", ").append(request.getServletPath()).append(":").append(request.getMethod());
sb.append(", request parameters:[");
List<String> keys = new ArrayList<String>();
keys.addAll(request.getParameterMap().keySet());
int size = keys.size();
int last = size - 1;
for (int i = 0; i < size; i++) {
String key = keys.get(i);
// When parameter key contains in the maskingParams list, and not debugging mode, the value have to masking.
String val = maskingParams.contains(key) && (! logger.isDebugEnabled()) ? MASK : request.getParameter(key);
sb.append(key).append("='").append(val).append("'");
if (i != last) sb.append(", ");
}
sb.append("]");
logger.info(sb.toString());
} finally {
MDC.remove(MdcLogParameter.MDC_KIND.getId());
}
filter.doFilter(req, res);
}
try (OutputStream out = response.getOutputStream();
FileInputStream inputToRead = new FileInputStream(fileToDownload);) {
response.setContentType("application/x-pdf; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + fileName);
response.setContentLength((int) fileToDownload.length());
byte[] buffer = new byte[4096];
int length;
while ((length = inputToRead.read(buffer)) > -1) {
out.write(buffer, 0, length);
}
logger.info("{}: file downloaded for customerId: {}",fileName,userAccount.getCustomerId());
} catch (IOException e) {
logger.error("downloadreport / IO exception");
}