eclipseでJavaを書いている際に、JSPファイルが開きませんでした。(404エラー)
原因を追究したところ、多くのサイトにはxmlファイルが原因という記述が多数でしたが、
結論、私の場合はサーブレットクラスの記述ミスでした。
解決策を共有しますので、参考までにどうぞ。
何をしようとしたか?
・課題で占いアプリケーションを作ろうとした。
・サーブレットクラス、JavaBean、JSPファイルを作成。
問題部分
JSPファイルを実行すると404エラーが起こる。
【確認部分】
・xmlは問題なし
・eclipseの設定はデフォルト
・すべてのファイルの記述は一見問題なし
解決策
解決策は、非常に単純。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package web; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FortuneServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String name = request.getParameter("name"); int year = Integer.parseInt(request.getParameter("year")); int month = Integer.parseInt(request.getParameter("month")); int date = Integer.parseInt(request.getParameter("date")); LogicBean logic = new LogicBean(); ResultBean bean = logic.execute(name,year,month,date); request.setAttribute("result", bean); RequestDispatcher rd = request.getRequestDispatcher("/jsp/result.jsp"); rd.forward(request, response); } } |
下から2つめの記述、
RequestDispatcher rd = request.getRequestDispatcher("/jsp/result.jsp");
オレンジ色のマーカー部分を間違えていたため、404エラーが発生しました。
ここをこうすると、
RequestDispatcher rd = request.getRequestDispatcher("/result.jsp");
コンパイルできます!!!
ちなみにresult.jspファイルは、占いの結果を出力するために作ったものです。
そもそも、404エラーとは?
404エラー(別名:404 Not Found)とは、サーバーエラーの中の1つで、ページが存在していないときに表示されます。
Webブラウザでページを見る際、裏側ではWebブラウザがページのデータが保管されているサーバーに向けてリクエストを送ります。そのリクエストに対してサーバーが応え、Webブラウザにデータを送ることでページがWebブラウザに表示されています。
404エラーは、Webブラウザからサーバーに対してリクエストを送っているものの、サーバーからそんなデータはありません。と、返答されているときに表示されます。
ここがわからなければ何が問題なのかもわからないので、逃げずに意味を理解しなければなりません。
以上です。
(ちなみに問題解決にかかった時間は3時間 (´;ω;`)、精進します)