前提・実現したいこと
現在Eclipceを用いて、簡単な、Javaの動的Webアプリケーションを作っています。
具体的には、HTMLの画面に氏名と年齢を入力してリクエストすると、レスポンスとして入力した名前と年齢が、文字列となり帰ってくるという仕組みのものを作成しています。
エラーの原因となっているのは、Jspファイル内のキャストをしている部分で、HTML画面で名前と年齢を入力してServletにリクエストを行ったところで500エラーになってしまいます。
何回見直してみても、どう記述すればエラーが解消されるのかがわからず、困っています‥。
どなたか、ご教授いただけると幸いです。
宜しくお願いいたします。
発生している問題・エラーメッセージ
HTTPステータス 500 – Internal Server Error タイプ 例外報告 メッセージ JSPのクラスをコンパイルできません: 説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。 例外 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: JSPファイル: [/output.jsp] の中の[12]行目でエラーが発生しました Human cannot be resolved to a type 9: <body> 10: 11: <% 12: Human human; 13: human = (Human)request.getAttribute("human"); 14: %> 15: JSPファイル: [/output.jsp] の中の[13]行目でエラーが発生しました Human cannot be resolved to a type 10: 11: <% 12: Human human; 13: human = (Human)request.getAttribute("human"); 14: %> 15: 16: <p>入力された情報は以下です</p> Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:213) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:482) org.apache.jasper.compiler.Compiler.compile(Compiler.java:392) org.apache.jasper.compiler.Compiler.compile(Compiler.java:362) org.apache.jasper.compiler.Compiler.compile(Compiler.java:346) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:605) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:400) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) InputServlet.doPost(InputServlet.java:29) javax.servlet.http.HttpServlet.service(HttpServlet.java:652) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
該当のソースコード
#####input.html(名前と年齢の入力画面)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <p>名前と年齢を入力してください</p> <form action="InputServlet" method="post"> <input type="text" name="name"><br> <input type="text" name="age"><br> <input type="submit" value="送信"> </form> </body> </html>
#####Human.java(人間クラス)
public class Human { private String name; private int age; public Human(String name, int age) { this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } }
#####input.servlet.java(サーブレット)
import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/InputServlet") public class InputServlet extends HttpServlet { protected void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String name = request.getParameter("name"); String age = request.getParameter("age"); int Age = Integer.parseInt(age); Human human = new Human(name, Age); //モデルがかかわる処理はここだけ。 request.setAttribute("human", human); RequestDispatcher rd = request.getRequestDispatcher("output.jsp"); rd.forward(request, response); } }
#####output.jsp(エラー発生ファイル)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% Human human; human = (Human)request.getAttribute("human"); %> <p>入力された情報は以下です</p> <p>名前:<%= human.getName() %></p> <p>年齢:<%= human.getAge() %></p> </body> </html>
試したこと
・構文間違いとスペルミスがないかの確認。
・サーバーの再起動
補足情報(FW/ツールのバージョンなど)
・実行したURLは↓以下です。
http://localhost:8080/DatebaseSample/InputServlet
・テキストエディタはEclipceを使用しています。
・サーバーはApache Tomcat/9.0.44 を使用しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。