前提・実現したいこと
編集画面(edit.jsp)で更新ボタンを押下したところ、「HTTPのPOSTメソッドは、このURLではサポートされていません。」というエラーが表示されてしまいます。
対応方法をご教示いただきたいです。
発生している問題・エラーメッセージ
HTTPステータス 405 – Method Not Allowed Type ステータスレポート メッセージ HTTPのPOSTメソッドは、このURLではサポートされていません。 説明 リクエストラインで受信されたメソッドは、オリジンサーバーによって認識されますが、ターゲットリソースによってサポートされていません。
該当のソースコード
edit.jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8" import="java.io.*,java.util.*,java.text.*,dto.*"%> 3<!DOCTYPE html"> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>更新画面</title> 8</head> 9<body> 10 <% 11 // リストデータをリクエストから取得 12 13 ArrayList<BookDto> list = new ArrayList<BookDto>(); 14 list = (ArrayList) request.getAttribute("list"); 15 16 for (int i = 0; list.size() > i; i++) { 17 BookDto bookDto = list.get(i); 18 String bookName = bookDto.getBooktitle(); 19 String author = bookDto.getAuthor(); 20 String detail = bookDto.getBooktext(); 21 %> 22 <form method="post" action=""> 23 <input type="hidden" name="id" maxlength="100" value="ここはID"> タイトル:<input name="title" maxlength="100" value=<%= bookName%>> 24 <!--タイトル maxlength="100" --> 25 <br> 作者:<input name="author" maxlength="30" value=<%= author%>> 26 <!--作者名 maxlength="30" --> 27 <br> 本文 <br> 28 <textarea name="text" cols="200" rows="50"><%=detail%></textarea> 29 <br> <input type="submit" value="更新"> 30 </form> 31 <button onclick="history.back()">戻る</button> 32<%} %> 33</body> 34</html>
BookUpdateServlet.java
1package book; 2 3import java.io.IOException; 4 5import javax.servlet.RequestDispatcher; 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11 12import dao.BookDao; 13import dba.DBManager; 14import dto.BookDto; 15 16/** 17 * Servlet implementation class BookUpdateServlet 18 */ 19@WebServlet(description = "更新画面にて登録ボタン押下時に受け取るServletクラス", urlPatterns = { "/BookUpdateServlet" }) 20public class BookUpdateServlet extends HttpServlet { 21 private static final long serialVersionUID = 1L; 22 23 /** 24 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 25 */ 26 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 27 request.setCharacterEncoding("utf-8"); 28 DBManager db = new DBManager(); 29 30 int id = 0; 31 String title = request.getParameter("title"); 32 String text = request.getParameter("text"); 33 String author = request.getParameter("author"); 34 35 try { 36 BookDao bookDao = new BookDao(db); 37 38 BookDto book = new BookDto(id, title, text, author); 39 40 boolean judge = bookDao.update(book); 41 42 if(judge == true) { 43 RequestDispatcher complete = request.getRequestDispatcher("/complete.jsp"); 44 complete.forward(request, response); 45 } 46 }catch(Exception e){ 47 e.printStackTrace(); 48 } 49 } 50} 51
BookDao.java(update箇所)
1 public boolean update(BookDto book) throws Exception { 2 boolean judge = false; 3 String sql = "UPDATE T_BOOK SET BOOKTITLE = ?, BOOKTEXT = ?, AUTHOR = ? WHERE ID = ?"; 4 5 String booktitle = book.getBooktitle(); 6 String booktext = book.getBooktext(); 7 String author = book.getAuthor(); 8 int id = book.getId(); 9 10 11 Connection conn = db.getConnection(); 12 13 PreparedStatement pStmt = conn.prepareStatement(sql); 14 pStmt.setString(1, booktitle); 15 pStmt.setString(2, booktext); 16 pStmt.setString(3, author); 17 pStmt.setInt(4, id); 18 19 int count = pStmt.executeUpdate(); 20 21 if (count == 1) { 22 judge = true; 23 } 24 return judge; 25 }
回答1件
あなたの回答
tips
プレビュー