2011-07-21 7 views
5

私は、Javaアプリケーション内に桟橋サーバーを使用しています。しかし、doGet()メソッドは2回呼び出されています。また、httpservletクラスのserviceメソッド内でこの(method.equals(METHOD_GET))条件の結果として呼び出されています。doGetは2回の桟橋サーバーを呼び出しました

クロームとエクスプローラの両方を使用してリクエストを試みましたが、同じ結果がありました。

誰もがあなたがブラウザでページを要求すると、それはまた、アイコンを要求

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(); 
} 
} 
+0

Mavenの突堤Plugginを使用してTomcatに移動し、すべて良かったしながら、私もこの問題があったのでアップ投票。そしてfavourteに追加する。 – Shahzeb

答えて

7

...二回呼び出されているのdoGetの理由を見ることができます。たとえば、http://foo.comへのリクエストは、http://foo.com/favicon.icoも要求します。これは、あなたのアドレスバーに小さなアイコンを入れてサイトを特定するのに役立ちます。また、サーブレットへの2回目のリクエストのソースです。サーブレットに次の行を追加してみてください:

System.out.println("request URI=" + request.getRequestURI()); 
関連する問題