2011-07-21 3 views
5

कहा जाता है, मैं जावा एप्लिकेशन के भीतर एक एम्बेडेड जेटी सर्वर का उपयोग कर रहा हूं। लेकिन doGet() विधि को दो बार बुलाया जा रहा है। इसके अलावा इसे httpservlet क्लास की सेवा विधि के भीतर (method.equals (METHOD_GET)) स्थिति के परिणामस्वरूप कहा जा रहा है।डूगेट को दो बार जेटी सर्वर

मैंने क्रोम और एक्सप्लोरर दोनों का उपयोग करने का अनुरोध करने की कोशिश की लेकिन मेरे पास एक ही परिणाम था।

किसी 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(); 
} 
} 
+0

वोटिंग अप क्योंकि मैवेन जेट्टी प्लगइन का उपयोग करते समय मुझे यह समस्या भी मिली है और यह सब अच्छा था। और पसंदीदा में जोड़ना। – Shahzeb

उत्तर

7

आप एक ब्राउज़र के साथ एक पृष्ठ का अनुरोध करते हैं, यह भी एक आइकन अनुरोध करता है। उदाहरण के लिए, http://foo.com पर एक अनुरोध http://foo.com/favicon.ico का भी अनुरोध करेगा। साइट्स की पहचान करने में आपकी सहायता के लिए यही आपके पता बार में छोटा आइकन डालता है। यह सर्वलेट के लिए आपके दूसरे अनुरोध का स्रोत भी है। इस लाइन को अपने सर्वलेट में जोड़ने का प्रयास करें:

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