2016-10-30 65 views
0

在我的Web應用程序上託管Google App Engine時,無論何時通過在瀏覽器中輸入URL調用Servlet,都會導致對Servlet進行兩次調用。但是,如果我通過單擊一個錨點來調用Servlet,則只有一個調用被創建。稱爲兩次的Servlet

原因是什麼?如何糾正這種行爲?

的web.xml

<servlet> 
     <servlet-name>ServletOne</servlet-name> 
     <servlet-class>com.test.nz.MyServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>ServletOne</servlet-name> 
     <url-pattern>/myservlet</url-pattern> 
    </servlet-mapping> 

的Servlet:

public class MyServlet extends HttpServlet { 

    @Override 
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException 
    { 
     final Logger log = Logger.getLogger(MyServlet.class.getName()); 
     log.info("Here in MyServlet"); 
    } 
} 

更新:

這個問題似乎是由谷歌瀏覽器使得它自身的請求引起的。每當我輸入一個網址時,在我實際按下輸入之前發出一個請求,然後是實際的請求。有沒有辦法禁止這些類型的請求到我的應用程序?

+0

打開瀏覽器開發工具,點擊網絡面板,看看會發生什麼。 –

+0

網絡面板只顯示一次被調用的Servlet,但日誌顯示它導致兩個調用。 – Sven

+0

你的html/jsp代碼在哪裏也添加完整的web.xml? – developer

回答

0

我有同樣的問題,只有在Chrome中,事實證明servlet被映射到/並且也接受了favicon.ico的請求。對我來說,這是第二次請求的來源。