• 締切済み

サーブレットの【405】POSTについて

「HTTPのGETメソッドは、このURLではサポートされていません。」のエラーが出ます。 コードは「スッキリわかるサーブレット&JSP」本の10章です。 サーブレットを右クリックで実行すると、上記のエラーが出ます。 ----------------------------------------------------------------- package servlet; 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 javax.servlet.http.HttpSession; import model.LoginLogic; import model.User; @WebServlet("/Login") public class Login extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // リクエストパラメータの取得 request.setCharacterEncoding("UTF-8"); //PrintWriter out = response.getWriter(); //out.println(createHTML("POST")); //out.close(); String name = request.getParameter("name"); String pass = request.getParameter("pass"); // Userインスタンス(ユーザー情報)の生成 User user = new User(name, pass); // ログイン処理 LoginLogic loginLogic = new LoginLogic(); boolean isLogin = loginLogic.execute(user); // ログイン成功時の処理 if (isLogin) { // ユーザー情報をセッションスコープに保存 HttpSession session = request.getSession(); session.setAttribute("loginUser", user); } // ログイン結果画面にフォワード RequestDispatcher dispatcher =request.getRequestDispatcher("/WEB-INF/jsp/loginResult.jsp"); dispatcher.forward(request, response); } //private char[] createHTML(String string) { // TODO 自動生成されたメソッド・スタブ //return null; //} } ------------------------------------------------------------------------------------ ビュー <%--つぶやきトップ画面 --%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>つぶやき画面</title> </head> <body> <br><br><br><p style="text-align:center"><b>ようこそ!!つぶやきアプリへ!</b></p> <form action="Tsubuyaki/Login" method="post"> <p style="text-align:center">ユーザー名:<input type="text" name = "name"></p> <p style="text-align:center">パスワード:<input type="text" name = "pass"></p> <p style="text-align:center"><input type="submit" value="ログイン"></p> </form> </body> </html> ------------------------------------------------------------------------------------ どこがダメかご回答願います。

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

  • gr32
  • ベストアンサー率18% (2/11)
回答No.1

doGetがないからです。 つまり、このサーブレットはポストしか受け付けないからです。

関連するQ&A

  • Tomcatを使用したWebログイン画面

    Tomcatを使用して、 サーバ(logintest.html)にブラウザからアクセスしてログイン画面を表示させます。 ユーザIDがuser、パスワードがpasswordだった場合は「ログイン成功」と表示し、それ以外は「ログイン失敗」と表示させます。 Servletのソース(loginteset.java)がコンパイルエラーになります。 アドバイスをいただけませんか? logintest.html <html> <head> <meta http-equiv="content-type" content="text/html; charset=Windows-31J" /> <title>Login</title> </head> <body> <form action="./checkservlet" method="post">   ユーザIDを入力してください : <input type="text" name="userid" size="20" /> <br><br>   パスワードを入力してください : <input type="password" name="userpass" size="20" /> <br><br> <input type="submit" value="ログイン" /> </form> </body> </html> logintest.java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FormServletTest extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=Windows-31J"); } String id = request.getParameter("userid"); String pass = request.getParameter("userpass"); if(id.equals("user") && pass.equals("password")){ out.println("ログイン成功"); } else { out.println("ログイン失敗"); } }

    • ベストアンサー
    • Java
  • HTTP 404 error

    Vine Linux,Tomcat5で (1)webapps/conf/server.xml ... <HOST> <Context path="/apress" docBase="apress" debug="0" reloadable="true" /> ... (2)webbapps/apress/login.jsp ... <table width="500" border="0" cellspacing="0" cellpadding="0"> <form name="loginForm" method="post" action="servlet/chapter2.login"> <tr><td width="402"><div align="right">User Name: </div></td> <td width="399"><input type="text" name="username"></td> </tr> ... (3)webapps/apress/WEB-INF/web.xml ... <servlet> <servlet-name>login</servlet-name> <servlet-class>chapter2.login</servlet-class> </servlet> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> ... (4)webapps/apress/WEB-INF/classes/chapter2/login.java package chapter2; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class login extends HttpServlet { private String target = "/welcome.jsp"; private String getUser(String username, String password) { // Just return a statice name // If this was reality, we would perform a SQL lookup return "Bob"; } .... (4)現象: http://xxx.xxx.xxx.xxxx:8080/apress/login.jsp でsubmit action 後、次のエラーが出てきました: HTTP 404 error, The requested resource (/apress/servlet/chapter2.login) is not available. この問題はどこにあるでしょうか教えてください。

  • サーブレットに関して

    ポスグレのデータベースをイクリプスと連携させようとしています。 現状は接続の確認として下記Connect13.javaを実行し接続確認をしています。 しかし、405が表示されてしまい接続が上手くいきません。 どこが間違っているのか教えて頂きたいです。 下記が現在のスペックです。 OS:Windows バージョン 10 Eclipse 4.0 ※ソースコードは------で分けて今回はここに記載しています。 よろしくお願いいたします。 Connect13.java package jp.co.sss.dao; import java.io.IOException; import java.sql.Connection; 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 jp.co.sss.dao.DBManager; @WebServlet("/connect13") public class Connect13 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection con = null; con = DBManager.getConnection(); if(con !=null){request.setAttribute("message","接続に成功しました。"); } DBManager.close(con); request.getRequestDispatcher("/jsp/sample13/pizza_result2.jsp").forward(request, response); } } ----------------------------------------------------------------------------------------------------------------------- DBManager.java package jp.co.sss.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class DBManager { public static Connection getConnection(){ String url="jdbc:postgresql://localhost:5432/postgres"; String user = "postgres"; String password = "reds1113"; try{ Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection(url,user,password);////urlの指定のみ return con; }catch (Exception e){ throw new IllegalStateException(e); } } public static void close(Connection con){ if (con !=null){ try{ con.close(); }catch (SQLException e){ e.printStackTrace(); } } } public static void close(PreparedStatement ps, Connection con){ if (ps !=null) { try { ps.close(); }catch (SQLException e){ e.printStackTrace(); } } if (con != null){ try { ps.close(); }catch (SQLException e){ e.printStackTrace(); } } } } ----------------------------------------------------------------------------------------------------------------------- pizza_result.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>シェアードピザ</title> </head> <body> <article class ="main"> <h2>${message}</h2> <form action="<%=request.getContextPath()%>/connect13"method="post"> <input type="submit" value="接続画面に戻る"/> </form> </article> </body> </html>

  • JSPからサーブレットを呼び出す際に404エラー

    現在、tomcatとeclipseでサーブレット/JSPの勉強をしています。 参考書に載っている、jspの入力画面で入力した値をサーブレットで受け取り、そのまま表示させるようなサンプルを作成しています。 JSPの入力画面は表示できるのですが、値を入力してサーブレットに移動する際、404エラーが出てしまいます。 ■eclipseのパッケージエクスプローラー basic |-WEB=INF/src |..|input |...|EchoServlet.java |-WEB-INF |..|web.xml |.|echo.jsp (WEB-INF直下に作成) ■echo.jsp内のサーブレットのパスに関する記述 <FORM ACTION="/servlet/EchoServlet"> ■web.xmlの記述 <servlet> <servlet-name>EchoServlet</servlet-name> <servlet-class>input.EchoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>EchoServlet</servlet-name> <url-pattern>/servlet/EchoServlet</url-pattern> </servlet-mapping> ■EchoServlet.javaの記述 package input; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class EchoServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String msg = request.getParameter("message"); response.setContentType("text/plain; charset=Windows-31J"); PrintWriter out = response.getWriter(); out.println("message=" + msg); } } お気づきの点がございましたらご査収の程よろしくお願いいたします。

  • サーブレットに移動できないできない

    HTTPステータス 405 - HTTPのGETメソッドは、このURLではサポートされていません。 type ステータスレポート メッセージ HTTPのGETメソッドは、このURLではサポートされていません。 <%@ page contentType="text/html; charset=UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link href="css/style.css" rel="stylesheet" type="text/css" /> <title>ログイン画面</title> </head> <body> <header> <h3>書籍一覧システム</h3> </header> <div id="main"> <p>ユーザーIDとパスワードを入力してください。</p> <form action="/book_list/login" method="post"> ユーザーID:<input type="text" name="bookUserId"><br> パスワード:<input type="password" name="password"><br> <input type="submit" value="ログイン"><br> <a href="<%=request.getContextPath() %>/Login">gogoggo</a> </form> </div> <%@ include file="footer.jsp"%> </body> </html> <a href="<%=request.getContextPath() %>/Login">gogoggo</a> ↑個人的にはこの部分がだめで動かないと思っているのですが まだわからないのでどなたかお力添えをお願いします

  • WEBブラウザからJSPを介して、サーブレットを呼び出したいのですが・・・

    オールインワンeclipse3.4 tomcat5.5を使用して 動的WEBプロジェクトを作成して JSP~サーブレットを呼び出したいのですが、 なぜかJSPファイルを認識してくれず、404エラーとなります。 考えられるのは、ファイルの配置箇所くらいしか、思いつきませんが、色々動かしても結果は変わりませんでした。 どなたか、ご指導お願いいたします。 □basic |□javaリソースsrc>□パッケージinput>EchoServret.java |□WebContent>echo.jsp echo.jspソース <%@ page contentType="text/html; charset=windows-31j"pageEncoding="windows-31j"%> <html> <body> <h2>EchoServletの入力</h2> <form action = "../servlet/input.EchoServlet"> <input type="text" name="message"> <input type="submit"> </form> </body> </html> EchoServlet.javaソース package input; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class EchoServlet extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{ String msg = request.getParameter("message"); response.setContentType("text/plain; charset=Windows-31J"); PrintWriter out = response.getWriter(); out.println("message=" + msg); } } WEB.XML <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>basic2</display-name> <servlet> <display-name>EchoServlet</display-name> <servlet-name>EchoServlet</servlet-name> <servlet-class>input.EchoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>EchoServlet</servlet-name> <url-pattern>/EchoServlet</url-pattern> </servlet-mapping> <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> </web-app> よろしくお願いいたします!

    • ベストアンサー
    • Java
  • サーブレットからBeanに

    こんにちは areaフォルダに AreaServlet 、GetterServlet beanフォルダに FirstBean ============================== package area; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class AreaServlet extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=Shift_JIS"; public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { String info="滋賀県"; bean.FirstBean fiBe = new bean.FirstBean(); fiBe.setZip(info); response.setContentType(CONTENT_TYPE); PrintWriter out=response.getWriter(); out.println("<html>"); out.println("<head><title>BeanServlet</title></head>"); out.println("<body>"); out.println("FirstBeanにセットされたデータ:" + fiBe.getZip() ); out.println("<p><a href=\"/jspbean2/servlet/area.GetterServlet\">Bean確認用</a>"); out.println("</body></html>"); } } ============================== package area; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class GetterServlet extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=Shift_JIS"; public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { response.setContentType(CONTENT_TYPE); PrintWriter out=response.getWriter(); bean.FirstBean fiBe = new bean.FirstBean(); out.println("FirstBeanにセットされたデータ:" + fiBe.getZip() ); } } ============================== package bean; public class FirstBean { private String zip; //Setterの定義 public void setZip(String newZip) { zip = newZip; } //Getterの定義 public String getZip() { return zip; } } ============================== AreaServlet ではきちんと bean へ文字列を setし、また文字列を getしているようです。 その後 AreaServlet から GetterServlet へと移ったとき GetterServlet にも bean から文字列をgetしたいのに、どうしてか null が返ってgetできません??? どのようにしたら良いでしょうか? よろしくお願いします。

  • サーブレットを始めようとしたのですが・・・

    サーブレットを始めようとして、「10日でおぼえるJSP/サーブレット入門教室」を使って勉強しようとしているのですが、最初のファイルをコンパイルしようとしたら下記のようなエラーが出てコンパイルできませんでした。 SrvIntro.java:6: パッケージ javax.servlet は存在しません。 import javax.servlet.ServletException; ^ SrvIntro.java:7: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServlet; ^ SrvIntro.java:8: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServletRequest; ^ SrvIntro.java:9: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServletResponse; ^ SrvIntro.java:11: シンボルを解決できません。 シンボル: クラス HttpServlet 場所 : day07.SrvIntro の クラス public class SrvIntro extends HttpServlet{ ^ SrvIntro.java:12: シンボルを解決できません。 シンボル: クラス HttpServletRequest 場所 : day07.SrvIntro の クラス public void doGet(HttpServletRequest request, HttpServletResponse respon se) ^ SrvIntro.java:12: シンボルを解決できません。 シンボル: クラス HttpServletResponse 場所 : day07.SrvIntro の クラス public void doGet(HttpServletRequest request, HttpServletResponse respon se) ^ SrvIntro.java:13: シンボルを解決できません。 シンボル: クラス ServletException 場所 : day07.SrvIntro の クラス throws ServletException, IOException{ ^ エラー 8 個 調べた感じだとクラスパスの設定が間違っている可能性大ということらしいのですが、何度確かめてもクラスパスは合ってると思うのです・・ 何かこれじゃないか?という原因に心当たりがあればよろしくお願いします。

    • ベストアンサー
    • Java
  • java サーブレット セッションの使用方法

    たびたび質問してすいません eclipse tomcatを使ったクイズの問題ですが1問目から回答を保持したまま2問目に移動する方法が分かりません、 作りかけが下にあります,これだと1問目から3問目に2問目を飛ばしていってしまいます 条件 使用できるのはPage1.java・Page2java・web.xmlのみ 表示したいページはこんな感じです Page1の問題 データ通信の通信速度や通信手順の取り決めは? ○ Aプログラム ○ Bプロトコル ○ Cプロファイル ○ Dプロメテウス Page2へ進む Page2の問題 1MBを1KBに換算すると? ○ A1024 ○ B1022 ○ C1028 ○ D1026 Page3へ進む Page3 問題1は正解/不正解です 問題2正解/不正解です 問題1 package servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class UseSession1 extends HttpServlet{ String html; String html1="<!doctype html><html lang=ja><head><meta charset=utf-8><title>UseSession1</title></head></body>"; String html2="<form action=UseSession1 method=post><table><tr><td><input type=radio name=pp value=Aプログラム>Aプログラム<br>"+ "<input type=radio name=pp value=Bプロトコル>Bプロトコル<br>"+ "<input type=radio name=pp value=Cプロファイル>Cプロファイル<br>"+ "<input type=radio name=pp value=Dプロメテウス>Dプロメテウス</td></tr></table><br>"+ "<input type=submit value =送信><input type=reset value=リセット></form></body></html>"; public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); html=html1+html2; out.println(html); out.close(); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ request.setCharacterEncoding("UTF-8"); HttpSession session =request.getSession(); session.setAttribute("pp",request.getParameter("pp")); ServletContext context=getServletConfig().getServletContext(); RequestDispatcher dispatcher =context.getRequestDispatcher("/UseSession3"); dispatcher.forward(request,response); } } 問題2 package servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class UseSession2 extends HttpServlet { String html; String html1="<!doctype html><html lang=ja><head><meta charset=utf-8><title>UseSession1</title></head></body>"; String html2="<form action=UseSession2 method=post><table><tr><td><input type=radio name=oo value=A1024>A1024<br>"+ "<input type=radio name=oo value=B1022>B1022<br>"+ "<input type=radio name=oo value=C1028>C1028<br>"+ "<input type=radio name=oo value=D1026>D1026</td></tr></table><br>"+ "<input type=submit value =送信><input type=reset value=リセット></form></body></html>"; public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); html=html1+html2; out.println(html); out.close(); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ request.setCharacterEncoding("UTF-8"); HttpSession session =request.getSession(); session.setAttribute("oo",request.getParameter("oo")); ServletContext context=getServletConfig().getServletContext(); RequestDispatcher dispatcher =context.getRequestDispatcher("/UseSession3"); dispatcher.forward(request,response); } }

  • サーブレットの構成が上手く行かない

    サーバーサイド技術の学習を始めたばかりの新参者です。 今回はサーブレットが動作しない問題が発生したため、質問させて頂きます。 要件はウェブブラウザで"UserAuthentication.html"にアクセスし、そのページのステータスをTomcat上に構成されたサーブレットに渡し、返却されるhtmlを受け取って表示する、という単純な物です。 サーブレットの構成に必要なリソースを以下の様な内容に編集し、準備しましたが、実際にTomcatのサービスを起動し、ブラウザで"UserAuthentication.html"上の"送信"ボタンを押すと、"HTTPステータス 404 ~ The requested resource (/System/TestServlet) is not available."というエラーが返却されてしまいます。 2日余りこの問題と向き合いましたが、エラーが除去出来ず、途方に暮れています。 何が問題なのかご指摘頂けませんでしょうか、よろしくお願いします。 =TestServlet.class= import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ // ContentTypeを設定 response.setContentType("text/html; charset=Shift_JIS"); // 出力用PrintWriterを取得 PrintWriter out = response.getWriter(); out.println("<html"); out.println("<head>"); out.println("<title>テストサーブレット</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Welcome!! MyServlet!!</h1>"); out.println("</body>"); out.println("</html>"); } } =web.xml= <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>TestServlet</servlet-name> <servlet-class>TestServlet.class</servlet-class> </servlet> <servlet-mapping> <servlet-name>TestServlet</servlet-name> <url-pattern>/System/UserAuthentication.html</url-pattern> </servlet-mapping> </web-app> =UserAuthentication.html= <html> <head> <title>システム:利用者認証画面</title> </head> <div align="center"> <h1>利用者認証画面</h1> <h2>認証する利用者の情報を入力して"送信"ボタンを押して下さい</h2> <br> <form action="TestServlet" method="get"> <table border="4"> <tr> <td>  ネーム:<input type="text" name="name"></td> <td>パスワード:<input type="text" name="password"></td> </tr> <tr> <td><div align="left"><a href="index.html">戻る</a></div></td> <td><div align="right"><input type="reset" value="取消"><input type="submit" value="送信"></div></td> </tr> </table> </form> <br> </div> </body> </html>

    • ベストアンサー
    • Java

専門家に質問してみよう