/*
* Copyright 2016 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.appengine.demos;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collections;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
public class DumpServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if (Boolean.parseBoolean(request.getParameter("throw"))) {
throw new ServletException("Test Exception");
}
response.setContentType("text/html");
response.setStatus(HttpServletResponse.SC_OK);
PrintWriter out = response.getWriter();
out.println("<h1>DumpServlet</h1>");
out.println("<h2>Context Fields:</h2>");
out.println("<pre>");
out.printf("serverInfo=%s%n", getServletContext().getServerInfo());
out.printf("getServletContextName=%s%n", getServletContext().getServletContextName());
out.printf("virtualServerName=%s%n", getServletContext().getVirtualServerName());
out.printf("contextPath=%s%n", getServletContext().getContextPath());
out.printf(
"version=%d.%d%n",
getServletContext().getMajorVersion(),
getServletContext().getMinorVersion());
out.printf(
"effectiveVersion=%d.%d%n",
getServletContext().getEffectiveMajorVersion(),
getServletContext().getEffectiveMinorVersion());
out.println("</pre>");
out.println("<h2>Request Fields:</h2>");
out.println("<pre>");
out.printf(
"remoteHost/Addr:port=%s/%s:%d%n",
request.getRemoteHost(),
request.getRemoteAddr(),
request.getRemotePort());
out.printf(
"localName/Addr:port=%s/%s:%d%n",
request.getLocalName(),
request.getLocalAddr(),
request.getLocalPort());
out.printf(
"scheme=%s method=%s protocol=%s%n",
request.getScheme(),
request.getMethod(),
request.getProtocol());
out.printf("serverName:serverPort=%s:%d%n", request.getServerName(), request.getServerPort());
out.printf("requestURI=%s%n", request.getRequestURI());
out.printf("requestURL=%s%n", request.getRequestURL().toString());
out.printf(
"contextPath|servletPath|pathInfo=%s|%s|%s%n",
request.getContextPath(),
request.getServletPath(),
request.getPathInfo());
out.printf(
"session/new=%s/%b%n", request.getSession(true).getId(), request.getSession().isNew());
out.println("</pre>");
out.println("<h2>Request Headers:</h2>");
out.println("<pre>");
for (String n : Collections.list(request.getHeaderNames())) {
for (String v : Collections.list(request.getHeaders(n))) {
out.printf("%s: %s%n", n, v);
}
}
out.println("</pre>");
out.println("<h2>Response Fields:</h2>");
out.println("<pre>");
out.printf("bufferSize=%d%n", response.getBufferSize());
out.printf("encodedURL(\"/foo/bar\")=%s%n", response.encodeURL("/foo/bar"));
out.printf("encodedRedirectURL(\"/foo/bar\")=%s%n", response.encodeRedirectURL("/foo/bar"));
out.println("</pre>");
}
}