2017-03-19 11 views
0

サーブレットが正しく転送されません。私は何を試しているかによって、Tomcat-8.5 404または500エラーページに転送され続けます。 500エラーが発生したとき、サーブレットは例外をスローしただけです。サーブレットが転送されない - サーブレット例外

(ナビゲーションバーにある)アンカータグの名前を取得しようとしていますが、その名前に基づいて正しいJSPに転送しています。私がこの作業をしたら、このサーブレットを使って既存のセッションをチェックしたり、新しいセッションを開始したりします。

ご協力いただきありがとうございます。以下は

<servlet> 
    <servlet-name>SessionTracker</servlet-name> 
    <servlet-class>SessionTracker</servlet-class> 
</servlet> 

<!-- Servlet Maps --> 
<servlet-mapping> 
    <servlet-name>SessionTracker</servlet-name> 
    <url-pattern>/donate/*</url-pattern> 
</servlet-mapping> 

は、アンカータグである:以下

は私のサーブレットマッピングである

<li><a href="/donate/donate.jsp?name=donate" name="donate">Donate</a</li>

<li><a href="/donate/donate.jsp" name="donate">Donate</a></li>

注、私はまた、アンカータグに次のことを試してみました

ベロワットそれぞれのJava関数です:

@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    ServletContext sc = getServletContext(); 
    String url = forwardRequest(request, response, sc); 

    sc.getRequestDispatcher(url).forward(request, response); 
} 

private static String forwardRequest(HttpServletRequest request, HttpServletResponse response, ServletContext sc){ 
    String url = new String(""); 
    String name = request.getParameter("name"); 

    switch(name){ //switch state to determine which 
     case "donate": 
      url = "/donate/donate.jsp"; 
      break; 

     case "mission": 
      url = "/about/missionStatement.jsp"; 
      break; 
    } 

    return url; 
} 
+0

その例外とは何でしょうか? –

+0

ログからスタックトレースを取得できたとき、NullPointerExceptionが発生し、別の時にStackOverflowが発生しました。 –

+0

Tomcatを停止してもログにはまだ負荷が残っていました –

答えて

1

OK]をクリックしてのあなたのコードを分析してみましょう:

1.- DD(web.xmlファイル)

<servlet-class>SessionTracker</servlet-class> 

けれどもそこ(、デフォルトのパッケージを使用しないようにしてくださいここで問題ありません)

<url-pattern>/donate/*</url-pattern> 

誰かが使用している場合は、ここでああ少年が、問題は、HEY、あなたはコンテナに言っている、ありますURL http://localhost:8080/mysite/donate/whateverIDonは「サーブレットSessionTrackerを呼び出すtCareので、私はこれがパスをdiferents、それはだからそれが良いではありません

/mysite/donate/some 
/mysite/donate/hereWeGo 
/mysite/donate/lol 

同じサーブレットを呼び出します使用することができ、

<url-pattern>/donate/SesionTrackerServlet</url-pattern> 

2に変更してみてください。 - あなたを見てください

<li><a href="/donate/donate.jsp?name=donate" name="donate">Donate</a</li> 

あなたは失敗を見ることができますか?はい、私が言ったように、ユーザーがここをクリックするとサーブレットを呼び出すので、サーブレットはメソッドforwardRequestを呼び出すでしょう。何が起こると思いますか?はい、それはurl = "/donate/donate.jsp"に進むでしょう。待って、私のポイント1を見たか?あなたはもう一度サーブレットを呼び出すでしょうし、もう一度やり直してください。エサドHTTP 500 - サーブレットの実行は、ループを作ったので例外を投げました。

しかし、私はCHANGE言ったように、このTO:

ウェブ。XML

<servlet> 
<servlet-name>SessionTracker</servlet-name> 
<servlet-class>SessionTracker</servlet-class> 
</servlet> 

<servlet-mapping> 
<servlet-name>SessionTracker</servlet-name> 
<url-pattern>/donate/SessionTrackerServlet</url-pattern> 
</servlet-mapping> 

今、このURLを入力します(あなたが必要な場合はもちろん、あなたのポートを変更する)

http://localhost:8080/Test/donate/SessionTrackerServlet?name=donate

そしてwoooala =)

[![enter image description here][1]][1] 
[![enter image description here][2]][2] 
[![enter image description here][3]][3] 
[![enter image description here][4]][4] 


    [1]: https://i.stack.imgur.com/9hhTO.png 
    [2]: https://i.stack.imgur.com/Hqha7.png 
    [3]: https://i.stack.imgur.com/uUvn4.png 
    [4]: https://i.stack.imgur.com/Tge2x.png 
+0

ありがとうございます。非常に有益。 –

+0

問題はありません;)画像を申し訳ありません、私はそれを投稿できませんでした:(私は学んでいます – Yussef

関連する問題