質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

9996閲覧

画面遷移時のエラー「HTTPのPOSTメソッドは、このURLではサポートされていません。」

shogakusha

総合スコア12

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2020/06/18 11:14

前提・実現したいこと

編集画面(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 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/06/18 14:12

とりあえずスタックトレースはあなたの作成したクラスまで追記してください
guest

回答1

0

ベストアンサー

<form method="post" action="">

action属性に、ボタンを押したときのURLを記載しますが、書かれていないようです。

投稿2020/06/18 14:07

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shogakusha

2020/06/18 21:48

ありがとうございます。 基本的なところが漏れておりました。 解消いたしました。
A-pZ

2020/06/19 01:02

d(・ω・ あるあるです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問