「はじめてのJSP&サーブレット」をEclipse4.6を使って勉強しています。
同じ著者によるコードがネット上にあります。
リンク内容
サーブレットとJSPファイルを連携して、データベースを検索表示して、
変更処理、新規登録、削除などをできるTODO管理アプリケーションを作成しています。
MariaDB,HediSQLを使っています。構成は以下の通りとなっており、
必要なファイルはリンクを参照していただければ幸いです。
となっています。
DetailServlet.java, InputServlet.java,SearchServlet.java、は正常に実行されます。
InputServlet.javaを実行し、新規に登録をしてエンターで RegisterServlet.javaが実行されて正常(文字化けありますが)に表示されます。
RegisterServlet.javaを単独でEclipseで実行するとHTTPステータス 405 - Method Not Allowedが出て困っています。
それでprotected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
メソッド(ネットを参考に)を後のほうに追加して実行しました。
ブラウザははhttp://localhost:8080/10_todo_400_405/todo/registerという表示で、
白い画面で何も表示されていませんが、エラーは消えました。
一昨日までは、何か画面に表示されていたような気がします。間違っているのか、これで正常なのかわからないので、教えていただきたいのですがよろしくお願いします。
//RegisterServlet package todo.web; 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; import todo.dao.TodoDAO; import todo.dto.Todo; /** * 登録処理を行う。 */ @WebServlet("/todo/register") public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // リクエストパラメータを受け取り、DTOに格納する準備をする。 int id = Integer.parseInt(request.getParameter("id")); String title = request.getParameter("title"); String task = request.getParameter("task"); String inputLimitdate = request.getParameter("limitdate"); String userid = request.getParameter("userid"); int status = Integer.parseInt(request.getParameter("status")); // DTOへ格納する。登録される期限(limit)はTodoクラスではinputLimitになる。 Todo dto = new Todo(); dto.setId(id); dto.setTitle(title); dto.setTask(task); dto.setInputLimitdate(inputLimitdate); dto.setUserid(userid); dto.setStatus(status); // 入力チェックを行う。 boolean checkResult = dto.valueCheck(); // もし入力チェックエラーがあった場合は、エラーメッセージを表示し、再入力させるため元の詳細画面へ戻る if (! checkResult ) { request.setAttribute("errorMessages", dto.getErrorMessages()); // タスク1件のvoをリクエスト属性へバインド request.setAttribute("dto", dto); // 詳細画面を表示する RequestDispatcher rd = request.getRequestDispatcher("/detail.jsp"); rd.forward(request, response); return; } String message = ""; try(TodoDAO dao = new TodoDAO()) { // 更新または登録処理を行う // idが0のときは新規登録、id>=1のときは更新 if (id == 0) { dao.registerInsert(dto); message = "タスクの新規登録処理が完了しました。"; } else { dao.registerUpdate(dto); message = "タスク[ " + id + " ]の更新処理が完了しました。"; } setMessage(request, message); } catch (Exception e) { throw new ServletException(e); } // 登録完了→一覧画面を表示する RequestDispatcher rd = request.getRequestDispatcher("/todo/search"); rd.forward(request, response); } /** * JSPで表示するメッセージを設定する。 * * @param request * サーブレットリクエスト * @param message * メッセージ文字列 */ protected void setMessage(HttpServletRequest request, String message) { request.setAttribute("message", message); } }
//InputServlet.java package todo.web; 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; import todo.dto.Todo; /** * 新規登録の入力画面を表示する。 */ @WebServlet("/todo/input") public class InputServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // voの作成 Todo dto = new Todo(); // 新規登録であることを判別するためid=0としている。 dto.setId(0); // タスク1件のvoをリクエスト属性へバインド request.setAttribute("dto", dto); // 詳細画面を表示する RequestDispatcher rd = request.getRequestDispatcher("/detail.jsp"); rd.forward(request, response); } }
HTTPステータス 405 - Method Not Allowed Type ステータスレポート メッセージ HTTPのGETメソッドは、このURLではサポートされていません。 説明 The method received in the request-line is known by the origin server but not supported by the target resource






回答1件
あなたの回答
tips
プレビュー