404エラーが発生した際の対処法
14.2 404エラーが発生した際の対処法
404エラーは、画面遷移先として指定したURLのファイルやURLパターンが見つからない時に発生します。
本節では、404エラーが発生した際の対処法とその手順を説明します。
14.2.1 誤字脱字は無いか
404エラーの主な原因に、ファイル名やURLパターンの記述内容が一致していないことが挙げられます。誤字脱字が無いことはもちろん、アルファベットの大文字・小文字や半角・全角についても完全一致している必要がありますので、しっかりと確認しておきましょう。
①URLバーから画面遷移する場合に確認すべき場所
・URLバーに入力したURL
・(遷移先がjspの場合)jspファイル名や、jspファイルが格納されているフォルダ名
・(遷移先がサーブレットの場合)web.xmlに記載したURLパターン
図 14.2.1 誤字脱字の確認箇所(URLバーから遷移した場合)
②入力フォームやリンクから画面遷移する場合に確認すべき場所
・formタグのaction属性やaタグのhref属性に記載しているURL
・(遷移先がjspの場合)jspファイル名や、jspファイルが格納されているフォルダ名
・(遷移先がサーブレットの場合)web.xmlに記載したURLパターン
図 14.2.2誤字脱字の確認箇所(フォームから遷移した場合)
14.2.2 コンテキスト・パスは正しく配備されているか
誤字脱字は無いのに404エラーが発生している場合は、tomcatへのコンテキスト・パスの配備が失敗している可能性があります。コンテキスト・パスの配備に失敗すると、その時に追加・修正したウェブページだけでなく、対象のプロジェクトで扱える全てのURLが全て使えなくなってしまいます。
以下の手順に沿って、コンテキスト・パスが適切に配備されているか確認しましょう。
①そもそもコンテキスト・パスが配備されているか
Tomcatを時すると、コンソール上にメッセージが出力されてコンテキスト・パス(プロジェクト名.xml)が配備されますが、その中に使いたいプロジェクトのコンテキストパスが無い場合は、URLバーにプロジェクトのURLを入力しても、404エラーになります。
図 14.2.3 Tomcat起動時のコンソール上に、docsの配備より前に「~.xmlを配備します」が出力されていない
この時、プロジェクト名を右クリックして「Tomcatプロジェクト」→「コンテキスト定義を更新」を選択すると、コンテキスト・パスが配備され、プロジェクトがURLとして使えるようになります。
図 14.2.4 コンテキスト・パスの配備
また、もし今回取り扱うプロジェクトが別のプロジェクトをコピーして名前変更(リファクタリング)したものの場合は、このコンテキスト・パスが修正後の名前になっていない可能性があります。こちらもプロジェクト名を右クリックし、「プロパティ」→「Tomcat」を選択し、コンテキスト名をプロジェクト名と同じ文字列にそろえてあげてください。
図 14.2.5 コンテキスト名の修正
②配備に失敗している
使いたいプロジェクトのコンテキスト・パスがあったとしても、配備に失敗している時があります。
図 14.2.6 Tomcat起動時に配備に失敗した際のメッセージ
コンテキスト・パスの配備に失敗する原因としては以下が挙げられます。直近で追記した箇所を中心に、記述内容を確認しましょう。
・servlet-nameタグの記述内容が一致していない
・重複している記述がある
・タグ名にスペルミスがある
・URLパターンの先頭に / が無い
図 14.2.7 web.xmlの確認ポイント
③原因のメッセージが書かれていない
図 14.2.8 原因のメッセージが書かれていない
もし、図のように原因のメッセージが何も書かれていない場合は、対象のURLが利用不可能になっています。まずはtomcatのコンソールを確認し、履歴を見てみましょう。
図 14.2.9 利用不可能にマークされた履歴がある
図のように「サーブレット[XXXX]を利用不可能にマークします」というメッセージが出力されている場合は、プロジェクトの他のURLは使えるものの、利用不可能になったURLは使えない状態になり、アクセスすると404エラーが表示されます。
原因としては、サーブレットの初期化に失敗したURLに再度アクセスしていることにあるので、後述の「14.4.1 サーブレットの初期化中にエラーが発生した」の手順に沿って確認し、適宜ファイルを修正してください。