DoGet дважды позвонил на пристань - PullRequest
5 голосов
/ 22 июля 2011

Я использую встроенный сервер Jetty в приложении Java.Но метод doGet () вызывается дважды.Кроме того, он вызывается в результате этого условия (method.equals (METHOD_GET)) в методе обслуживания класса httpservlet.

Я попытался выполнить запрос, используя и хром, и проводник, но у меня былтот же результат.

может кто-нибудь увидеть причину, по которой дважды вызывается doget ..

public class HelloServlet extends HttpServlet{
  private String greeting="Hello World";
    public HelloServlet(){}
    public HelloServlet(String greeting)
    {
        this.greeting=greeting;
        System.out.println("started the server" + greeting);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        response.setContentType("text/html");
        response.setStatus(HttpServletResponse.SC_OK);
        response.getWriter().println("<h1>"+greeting+"</h1>");
        response.getWriter().println("session=" + request.getSession(true).getId());
        count = count+1;
        System.out.println(count);
        response.getWriter().println("count=" + count);
        response.flushBuffer();
    }
}

public class OneServletContext{
public static void main(String[] args) throws Exception
{
    Server server = new Server(8080);

    ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
    context.setContextPath("/");
    server.setHandler(context);
    System.out.println("about to start the servlets");
    context.addServlet(new ServletHolder(new HelloServlet()),"/*");
   context.addServlet(new ServletHolder(new HelloServlet("Buongiorno Mondo")),"/it/*");
   context.addServlet(new ServletHolder(new HelloServlet("Bonjour le Monde")),"/fr/*");

    server.start();
    System.out.println("started the servlets");
    server.join();
}
}

1 Ответ

7 голосов
/ 22 июля 2011

Когда вы запрашиваете страницу в браузере, он также запрашивает значок. Например, запрос к http://foo.com также запросит http://foo.com/favicon.ico.. Это то, что помещает маленький значок в адресную строку, чтобы помочь вам идентифицировать сайты. Это также источник вашего второго запроса к сервлету. Попробуйте добавить эту строку в ваш сервлет:

System.out.println("request URI=" + request.getRequestURI());
...