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

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

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

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

2回答

2279閲覧

eclipseでjsp実行時、エラーが起こってしまう

rascals

総合スコア3

JSP

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2020/06/09 02:54

編集2020/06/11 02:31

前提・実現したいこと

eclipseを使用してログインの処理をしたいのですが、ログインボタンを押すと、
”HTTPのPOSTメソッドは、このURLではサポートされていません。”
となってしまい実行することができません。

よろしくお願いします。

修正箇所
・doGet処理が足りていないとの指摘を受けたので追記しましたが変わらず同じエラー内容が出ます
・@Overrideの追加

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

HTTPのPOSTメソッドは、このURLではサポートされていません。
The specified HTTP method is not allowed for the requested resource.

該当のソースコード

Loginbefor.jsp

<%@page contentType="text/html" pageEncoding="UTF-8" session="false" %> <!DOCTYPE html> <html> <jsp:include page="header.jsp" flush="true" /> <body> <br> <div id="login"> <table width=25% border="0" cellspacing="0" cellpadding="3" id="loginform"> <tr class="sub_title1" align="center"> <b> ログイン入力 </b> </tr> </table> <form action="/BBS/LoginUser" method="post"> <table id="loginform"> <tr> <th>ID</th> <td><input type="text" name="id" /></td> <th></th> </tr> <tr> <th>パスワード</th> <td><input type="password" name="pass" /></td> </tr><br> <td><input type="submit" value="ログイン"></td> </table> </form> <% String error = (String)request.getAttribute("error"); if (error != null) { %> <p style="color:red; font-size: larger;"><%= error %></p> <% } %> <br> <hr> <li class="main_info_small"> ※ログインしてご利用いただくためには、<a href="/BBS/RegisterUser">ID登録</a>が必要です。 </li> <input type="hidden" name="KBN" value="login_user" /> <br> <a href="top.html">Topへ戻る</a> </div> </body> </html>

LoginUser.java

package LoginUserServlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class LoginUser extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LoginUser() { super(); } @Override protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String id = request.getParameter("id"); String pass = request.getParameter("pass"); UserDao dao = new UserDao(); UserDto user = dao.findUser(id); boolean isLogin = (user != null && id.equals(user.getId()) && pass.equals(user.getPass())); HttpSession session = request.getSession(); session.setAttribute("isLogin", isLogin); if (isLogin) { request.setAttribute("name", user.getId()); request.getRequestDispatcher("/BBS/loginsuccess.jsp").forward(request, response); } else { request.setAttribute("error", "IDかパスワードが間違っています。\n再入力してください。"); request.getRequestDispatcher("/loginbefor.html").forward(request, response); } } }

UserDao.java

package LoginUserServlet; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class UserDao { private static Connection getConnection() { try { Class.forName("com.mysql.jdbc.Driver"); return DriverManager.getConnection("jdbc:mysql://localhost:3306/user","root", "ecosys"); } catch (Exception e) { throw new IllegalArgumentException(e); } } private static void allClose(PreparedStatement statement, Connection connection) { if (statement != null) { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } static Connection connection = null; static PreparedStatement statement = null; public UserDto findUser(String id) { UserDto user = new UserDto(); try { connection = getConnection(); statement = connection.prepareStatement("SELECT * FROM user WHERE id = ?"); statement.setString(1, id); ResultSet resultSet = statement.executeQuery(); if (!resultSet.next()) { return null; } user.setId(resultSet.getString("id")); user.setPass(resultSet.getString("pass")); } catch (SQLException e) { e.printStackTrace(); } finally { allClose(statement, connection); } return user; } }

UserDto.java

package LoginUserServlet; public class UserDto { private String id; private String pass; private String name; public String getId() { return id; } public String getPass() { return pass; } public String getName() { return name; } public void setId(String id) { this.id = id; } public void setPass(String pass) { this.pass = pass; } public void setName(String name) { this.name = name; } }

web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>LoginUser</servlet-name> <servlet-class>LoginUserServlet.LoginUser</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginUser</servlet-name> <url-pattern>/LoginUser</url-pattern> </servlet-mapping> </web-app>

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

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

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

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

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

m.ts10806

2020/06/09 03:04

>Rogin この手のミスは後々響きますし恥ずかしいです。エラーにはならないとはいえ、間違いなので修正してください。
rascals

2020/06/09 03:08

Loginなのはわかってます めんどくさいのでそのままにして統一してるだけなので
m.ts10806

2020/06/09 03:11

そんな面倒なコード量でもないでしょうに…。結構大事なことなんですけどね。命名なので。 起きているのが簡単な問題でも命名1つで辿りにくくなりますから。
rascals

2020/06/09 03:17

命名だし自分しか使わないから何でもいいかなって思ってたんですけど後々癖になっちゃうかもなので変えるようにします。 ご指摘ありがとうございます。
YT0014

2020/06/10 04:56

ログインボタンがあるページのソースもご提示ください。 サーブレットに届いていない可能性もありますので。
rascals

2020/06/10 05:54

ログインボタンがあるページのソースを掲載いたしました。 よろしくお願いします。
YT0014

2020/06/10 07:55

jspには、特に気になる点はないですが、念のため、LoginUserのコンストラクタにブレークポイントを設定してから、ログインを試みてください。 止まらずにエラーが出るようなら、設定の問題です。 また、doGet(),doPost()ですが、警告が出ていると思うので、@Overrideを追加してみてください。
YT0014

2020/06/10 08:03

また、もし実行されていないようでしたら、クリーンを行ってからの再ビルドを行ってからの、tomcatの再起動も、お試しください。
rascals

2020/06/11 02:29

ブレークイポイントを設定してログインを試みた結果、止まらずエラーが出てしまうので設定の問題のようです。 設定というのはEclipseとかの設定ですかね? @Overrideやクリーンも行いましたが変わらずでした。
退会済みユーザー

退会済みユーザー

2020/06/11 03:25

エクリプスで起動している Tomcat を止めてアクセスしたらどうなりますか?
rascals

2020/06/11 04:22

localhost で接続が拒否されました。 となりアクセスはできなくなります。
YT0014

2020/06/11 04:49

ご提示いただいているweb.xmlは、プロジェクトのWEB-INFの中にあるファイルですよね?tomcatのconfにあるweb.xmlではないですよね?
rascals

2020/06/11 05:27

web.xmlはWEB-INFのなかにあるファイルです。
YT0014

2020/06/11 06:19

LoginUserのコンストラクタにブレークポイントを設定してから、ログインですが、呼ばれるのは、最初の1回だけなので、tomcatの起動直後に、ログインを試してみてください。
guest

回答2

0

doGetメソッドがないためと思われます。

formでpostをする際にもdoGetメソッドが必要です。

LoginUser.java のdoPostの前にdoGetを追加して

protected void doGet (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { this.doPost(request, response); } protected void doPost (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { … }

にしてみてはどうでしょうか。

投稿2020/06/09 05:23

Mashiro

総合スコア654

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

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

rascals

2020/06/09 06:19

LoginUser.javaにdoGetの処理を追加してみたのですが、変わらず ”HTTPのPOSTメソッドは、このURLではサポートされていません。” という表示がされてしまいます…
guest

0

ベストアンサー

エラーログもなにも提示してないからぱっと見で突っ込み

request.getRequestDispatcher("/BBS/loginsuccess.jsp").forward(request, response);

JSP のパスはあってますか?(問題の可能性1)

request.getRequestDispatcher("/loginbefor.html").forward(request, response);

HTML へのフォワードはサポートされてますか?(問題の可能性2)

投稿2020/06/11 05:50

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

rascals

2020/06/11 08:47

HTML へのフォワードは別に設定しなければならないんですね。 jspに変更したら問題なく動きました。
YT0014

2020/06/11 12:52

今更ですが、tomcatとjavaのバージョンを教えていただけないでしょうか?java8の RequestDispatcherのjavadocには、明確に、「サーバー上の任意のリソース(サーブレット、HTML ファイル、JSP ファイルなど)に送信するオブジェクトを定義します」とあり、htmlのままでも、動作するはずです。ご面倒でなければ、再度、htmlに戻して、試していただけないでしょうか?
退会済みユーザー

退会済みユーザー

2020/06/11 13:41

YT0014 所詮「DefaultServlet」の実装なんだよね、「RequestDispatcher」がサポートされてるされてないというよりは。
退会済みユーザー

退会済みユーザー

2020/06/11 13:43

おおそらく GET は問題なく行ける
YT0014

2020/06/11 14:06

この現象のチェックの為、eclipse4.5、java6、tomcat7で実行してみたんですが、POSTで、普通にhtmlへ遷移したのを確認していたんです。なので、バージョンの確認をしたいんです。
rascals

2020/06/12 02:37

javaは7、tomcatは6です。 eclipseは4.3を使用しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問