2016-05-15 10 views
1

私は次のようにマップされたサーブレットを持っている:localhost:8080/test/1またはlocalhost:8080/test/99にアクセスして、すべてが同じサーブレットに扱うとlocalhost:8080/test/1/test.html無限のリダイレクトをサーブレットにどのように修正しますか?

に転送され

@WebServlet("/test/*") 

ようにするための問題があることである - 私の転送が下に落ちています同じワイルドカードルールはtest/* - 無限ループを引き起こしています。

私は運が悪いとこれを修正しようとしました。サーブレットが何回呼び出されたかを把握するために何らかのカウンタを追加することを考えていましたが、サーブレットを適切に再利用したい場合には、それが私を制限し、別の問題を作成するだけでした。

私は一日中このことに悩まされているので、すべての助けがありがたいです。ありがとう、ありがとう、ありがとう!

@WebServlet("/test/*") 
public class WildcardTest extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
      System.out.println(request.getRequestURL()); 
      RequestDispatcher view = request.getRequestDispatcher("test.html"); 
      view.forward(request, response);  
    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     doGet(request, response); 
    } 
} 

解像度: 私はあなたのHTMLビューを保存するためにWEB-INFディレクトリを使用。サーブレットのマッピングを行わずにそこに転送することができます。これで解決できると思ったが、それでも私には同じ問題がある。

RequestDispatcher view = request.getRequestDispatcher("WEB-INF/views/login.html"); 

出力http://localhost:8080/test/testを要求:

2016-05-15T21:12:37.798+0200|Info: http://localhost:8080/test/test 
2016-05-15T21:12:37.798+0200|Info: http://localhost:8080/test/WEB-INF/views/login.html 
2016-05-15T21:12:37.798+0200|Info: http://localhost:8080/test/WEB-INF/views/WEB-INF/views/login.html 
2016-05-15T21:12:37.798+0200|Info: http://localhost:8080/test/WEB-INF/views/WEB-INF/views/WEB-INF/views/login.html 
2016-05-15T21:12:37.798+0200|Info: http://localhost:8080/test/WEB-INF/views/WEB-INF/views/WEB-INF/views/WEB-INF/views/login.html 
+0

"/ test/*"にマップされているので、/ test/a/b/c/d/e/fに関係なく、 "/ teste/*"に一致するものはすべてサーブレットで処理されます。/gまたは他のすべて。なぜあなたはリダイレクトループを持っているのですか?マッピングを変更したり、リクエストを別の場所にリダイレクトすることができます。 – Jaumzera

答えて

1

は、あなたのHTMLビューを保存するためにWEB-INFディレクトリを使用します。サーブレットのマッピングを行わずにそこに転送することができます。

+0

/WEB-INF /を使用してHTMLを保存する場合、外部からアクセスできないことを考慮する必要があります。 – Jaumzera

+0

@Jaumzeraこれは通常、特にJSPを使用するときには良いことと考えられています。 – Kayaman

+0

こんにちは、あなたが言ったようにしましたが、それでも私は無限のループを与えてくれます。最新の投稿をご覧ください。 @Kayaman –

関連する問題