@Override public void setCharacterEncoding(final String charset) { httpServletResponse.setCharacterEncoding(charset); }
@Override public void setCharacterEncoding(final String charset) { httpServletResponse.setCharacterEncoding(charset); }
public static void handleRequest(HttpServerExchange exchange, final ServletRequestContext servletRequestContext, final Throwable exception) throws IOException { HttpServletRequestImpl req = servletRequestContext.getOriginalRequest(); StringBuilder sb = new StringBuilder(); //todo: make this good sb.append("<html><head><title>ERROR</title>"); sb.append(ERROR_CSS); sb.append("</head><body><div class=\"header\"><div class=\"error-div\"></div><div class=\"error-text-div\">Error processing request</div></div>"); writeLabel(sb, "Context Path", req.getContextPath()); writeLabel(sb, "Servlet Path", req.getServletPath()); writeLabel(sb, "Path Info", req.getPathInfo()); writeLabel(sb, "Query String", req.getQueryString()); writeLabel(sb, "Stack Trace", ""); sb.append("<pre>"); StringWriter stringWriter = new StringWriter(); exception.printStackTrace(new PrintWriter(stringWriter)); sb.append(escapeBodyText(stringWriter.toString())); sb.append("</pre></body></html>"); servletRequestContext.getOriginalResponse().setContentType("text/html"); servletRequestContext.getOriginalResponse().setCharacterEncoding("UTF-8"); try { ServletOutputStream out = servletRequestContext.getOriginalResponse().getOutputStream(); out.write(sb.toString().getBytes(StandardCharsets.UTF_8)); out.close(); } catch (IllegalStateException e) { PrintWriter writer = servletRequestContext.getOriginalResponse().getWriter(); writer.write(sb.toString()); writer.close(); } }
@Override public PrintWriter getWriter() throws IOException { if (writer == null) { if (!charsetSet) { //servet 5.5 setCharacterEncoding(getCharacterEncoding()); } if (responseState == ResponseState.STREAM) { throw UndertowServletMessages.MESSAGES.getOutputStreamAlreadyCalled(); } responseState = ResponseState.WRITER; createOutputStream(); final ServletPrintWriter servletPrintWriter = new ServletPrintWriter(servletOutputStream, getCharacterEncoding()); writer = ServletPrintWriterDelegate.newInstance(servletPrintWriter); } return writer; }
public void doErrorDispatch(int sc, String error) throws IOException { writer = null; responseState = ResponseState.NONE; resetBuffer(); treatAsCommitted = false; final String location = servletContext.getDeployment().getErrorPages().getErrorLocation(sc); if (location != null) { RequestDispatcherImpl requestDispatcher = new RequestDispatcherImpl(location, servletContext); final ServletRequestContext servletRequestContext = exchange.getAttachment(ServletRequestContext.ATTACHMENT_KEY); try { requestDispatcher.error(servletRequestContext, servletRequestContext.getServletRequest(), servletRequestContext.getServletResponse(), exchange.getAttachment(ServletRequestContext.ATTACHMENT_KEY).getCurrentServlet().getManagedServlet().getServletInfo().getName(), error); } catch (ServletException e) { throw new RuntimeException(e); } } else if (error != null) { setContentType("text/html"); setCharacterEncoding("UTF-8"); if(servletContext.getDeployment().getDeploymentInfo().isEscapeErrorMessage()) { getWriter().write("<html><head><title>Error</title></head><body>" + escapeHtml(error) + "</body></html>"); } else { getWriter().write("<html><head><title>Error</title></head><body>" + error + "</body></html>"); } getWriter().close(); } responseDone(); }