私はキャッチオールサーブレットを使用しています:
@WebServlet(name="RequestHandler", urlPatterns="/*")
public class RequestHandler extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
new SeedPlanter(request, response).sow();
}
}
すべてのリクエストを処理します。urlPattern
/
*に注意してください。その理由は、テンプレート化、オブジェクトの処理など、さまざまなものをロードするためです。サーブレットは、基本的に、すべての html レンダリングを処理するカスタム フレームワークの前にある単なるファサードです。
問題は、リソースに直接アクセスできなくなったことです。
たとえば、web-inf ディレクトリ ( localhost:8080/myapp/test.html
) の外にある html ファイルを読み込もうとすると、404 エラーが発生します。実際、ページに画像 ( ) を読み込もうとしてもlocalhost:8080/myapp/images/test.png
、404 リソースが見つからないというメッセージが表示されます。サーブレットを削除すると明らかにアプリケーション全体が台無しになりますが、それらのリソースをロードできるので、サーブレットが問題の原因であると確信しています。
私のようにサーブレットを使用し、それらのリソースをロードするにはどうすればよいですか?