405エラーが発生した際の対処法
14.3 405エラーが発生した際の対処法
本節では405エラーが発生した際の対処法とその手順を説明します。
405エラーは、入力フォームで指定している送信方式と、サーブレット側で用意しているdoGet()メソッド/doPost()メソッドの記述が噛み合ってない時に発生します。
14.3.1 GET送信に失敗している場合
図 14.3.1 GET送信に失敗した際の405エラーメッセージ
図のようなメッセージが表示された時は、以下の点について確認しましょう。
①送信方式はGETで正しいのか
仕様書・設計書を確認し、送信方式がGETで良いのか、まず確認しましょう。例えば、ログイン時のID・パスワードを入力するフォームのデータを送信する場合は、POST送信を指定することがほとんどなので、受け取るサーブレット側はdoPost()メソッドしか用意していないことがあります。
②画面遷移に関わるフォーム、サーブレットの記述は全てGET送信のもので統一されているか
入力フォームのmethod属性の記述欄を確認しましょう。また、遷移先のサーブレットにdoGet()メソッドが用意されているかも確認しましょう。もし、サーブレットから別のサーブレットに遷移している場合は、その遷移先のサーブレットもdoGet()メソッドが用意されていないと405エラーが発生しますので、全ての遷移先についてしっかり確認しましょう。
③doGet()メソッド名にスペルミスが無いか
大文字小文字含めて正しく定義されているか、確認しましょう。
14.3.2 POST送信に失敗している場合
図 14.3.2 POST送信に失敗した際の405エラーメッセージ
図のようなメッセージが表示された時は、以下の点について確認しましょう。
①送信方式はPOSTで正しいのか
仕様書・設計書を確認し、送信方式がPOSTで良いのか、まず確認しましょう。また、URLバーからアクセスしたり、リンクをクリックして画面遷移している場合は必ずGET送信になります。POST送信を想定した記述になっている場合は、本来の仕様に応じて、GET送信の記述に修正する必要があります。
②画面遷移に関わるフォーム、サーブレットの記述は全てPOST送信のもので統一されているか
入力フォームのmethod属性の記述欄を確認しましょう。また、遷移先のサーブレットにdoPost()メソッドが用意されているか確認しましょう。もし、サーブレットから別のサーブレットに遷移している場合は、その遷移先のサーブレットもdoPost()メソッドが用意されていないと405エラーが発生しますので、全ての遷移先についてしっかり確認しましょう。
③doPost ()メソッド名にスペルミスが無いか
大文字小文字含めて正しく定義されているか、確認しましょう。