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

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

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

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

Java

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

servlet

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

Q&A

解決済

1回答

1810閲覧

【Java】DBの情報をWebブラウザに表示できない

ysda

総合スコア65

JSP

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

Java

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

servlet

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

0グッド

1クリップ

投稿2020/05/14 06:01

発生している問題・エラーメッセージ

現在Javaで簡易な蔵書管理システムを作成しています。
DB(MySQL)に格納してある蔵書情報を検索する機能を実装したいのですが、検索ボタンを押下すると下記のようなエラーが表示される状態になっております。
ソースに問題があるのか、あるいは別の問題があるのかご教示いただけますと幸いです。

HTTP Status 405 – Method Not Allowed Type Status Report Message HTTPのPOSTメソッドは、このURLではサポートされていません。 Description The method received in the request-line is known by the origin server but not supported by the target resource. Apache Tomcat/9.0.33

該当のソースコード

search.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> <h1>蔵書検索</h1> <p>検索条件を入力してください</p> <p>フォームが未入力の場合、全ての蔵書が表示されます</p> <form action="/LibrarySystem/Register" method="POST"> <p>タイトル:<input type="text" name="title"></p> <p>著者:<input type="text" name="authors"></p> <p>出版社:<input type="text" name="publisher"></p> <p>出版年:<input type="text" name="publishyear"></p> <input type="submit" value="検索"> </form> <p><a href="home.jsp">↩ホームに戻る</a></p> </body> </html>

RegisterServlet.java(search.jspから受け取った情報をもとにbooks_db内を検索し、searchResult.jspに結果を渡す)

package com.librarysystem; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPOST(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ //DB関連の初期設定 Connection conn = null; PreparedStatement pstmt = null; ResultSet rset = null; //文字コードの設定 request.setCharacterEncoding("UTF-8"); //search.jspで入力した内容の取得 String title = request.getParameter("title"); String authors = request.getParameter("authors"); String publisher = request.getParameter("publisher"); String publishyear = request.getParameter("publishyear"); try { // JDBC Driver の登録 Class.forName("com.mysql.jdbc.Driver"); // Connectionの作成 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/books_db?serverTimezone=UTC&useSSL=false", "suser", "spass"); // sql文作成の準備 StringBuffer sql = new StringBuffer(); // sql文 の作成(nameから) sql.append("select title, authors, publisher, publishyear from books_table where title like '%"); sql.append(title + "%'"); // idが選択されている場合は、追加する if (authors != "") { sql.append("and authors ='" + authors + "'"); } // seiが選択されている場合は、追加する if (publisher != "") { sql.append("and publisher ='" + publisher + "'"); } // nenが選択されている場合は、追加する if (publishyear != "") { sql.append("and publishyear ='" + publishyear + "'"); } // sql文を表示 System.out.println(sql); // sql文実行準備 pstmt = conn.prepareStatement(new String(sql)); // sql文実行 pstmt.execute(); // 実行結果を、ResultSetクラスに代入 rset = pstmt.executeQuery(); // 遷移ページへ、引渡し(Attributeで追加する) request.setAttribute("kekka", rset); request.getRequestDispatcher("/searchResult.jsp").forward(request, response); // 使用したオブジェクトを終了させる rset.close(); pstmt.close(); conn.close(); } catch(Exception e) { e.printStackTrace(); String status ="検索に失敗しました。管理者に連絡してください。"; request.setAttribute("status", status); request.getRequestDispatcher("/Error.jsp").forward(request, response); } finally { try { conn.close(); } catch(Exception e) { } } } }

searchResult.jsp(検索結果表示画面)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="java.sql.*"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <br> <% ResultSet rset = (ResultSet) request.getAttribute("kekka"); %> <table border="1"> <tr bgcolor="#cccccc"> <td><b>タイトル</b></td> <td><b>著者</b></td> <td><b>出版社</b></td> <td><b>出版年</b></td> </tr> <% while (rset.next()) { %> <tr> <td><%=rset.getString(1)%></td> <td><%=rset.getString(2)%></td> <td><%=rset.getString(3)%></td> <td><%=rset.getString(4)%></td> </tr> <% } %> </table> </body> </html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

POST が Post じゃないから

投稿2020/05/14 10:36

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ysda

2020/05/15 02:16

今見直したらうわ…本当ですね… 馬鹿げた質問にご回答本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問