2016-10-30 13 views
0

Google App EngineでホストされているWebアプリケーションで、ブラウザでURLを入力してサーブレットを呼び出すと、サーブレットに対して2回の呼び出しが行われます。ただし、アンカーをクリックしてサーブレットを呼び出すと、1回だけ呼び出されます。Servlet Called Twice

原因とはどのようなものですか?どのようにこの動作を修正できますか?

の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> 

サーブレット:

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"); 
    } 
} 

更新:

問題は、Google Chromeは、独自の要求を行うことに起因すると思われます。 URLを入力するたびに、実際にEnterを押してから実際のリクエストを行う前にリクエストが行われます。これらのタイプのリクエストを自分のアプリケーションに許可しない方法はありますか?

+0

ブラウザの開発ツールを開き、ネットワークパネルをクリックして、何が起こるかをご覧ください。 –

+0

ネットワークパネルには、一度呼び出されたサーブレットのみが表示されますが、ログには2回の呼び出しがあったことが示されます。 – Sven

+0

あなたのhtml/jspコードはどこですか? – developer

答えて

0

同じ問題がChromeでのみ発生しましたが、サーブレットは/にマップされており、favicon.icoのリクエストも受け付けていました。私にとって、これは2番目のリクエストのソースです。