jspとサーブレットの連携の勉強をしているのですが、405エラーが出てしまいます。
servlet
1(IndexData.java) 2 3import java.io.*; 4import javax.servlet.*; 5import javax.servlet.http.*; 6 7public class IndexData extends HttpServlet { 8 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ 9 response.setContentType("text/html; charset=utf-8"); 10 PrintWriter out = response.getWriter(); 11 12 String view = "/WEB-INF/views/index.jsp"; 13 RequestDispatcher dispatcher = request.getRequestDispatcher(view); 14 dispatcher.forward(request, response); 15 } 16}
jsp
1(index.jsp) 2 3<%@ page language="java" contentType="text/html; charset=UTF-8" 4 pageEncoding="UTF-8"%> 5<!DOCTYPE html> 6 7<html> 8 <head> 9 <meta http-equiv="Content-Type" content="text/html" charset="UTF-8"> 10 <title>ゲーム一覧</title> 11 </head> 12 <body> 13 <h1>ログイン</h1> 14 <form action="/mywork/login" method="get"> 15 ID:<input type="text" name="id"><br> 16 パスワード:<input type="text" name="pass"><br><br> 17 <input type="submit" value="送信"> 18 </form> 19 <br><br><br> 20 <p>新規作成は<a href="/mywork/touroku">こちら</a>から!</p> 21 </body> 22</html>
上記のサーブレット・jspのリンクを押したら下記のサーブレットを呼び出すようにしたいのですが、
servlet
1(TourokuData.java) 2 3import java.io.*; 4import javax.servlet.*; 5import javax.servlet.http.*; 6 7public class TourokuData extends HttpServlet { 8 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ 9 response.setContentType("text/html; charset=utf-8"); 10 PrintWriter out = response.getWriter(); 11 12 String view = "/WEB-INF/views/touroku.jsp"; 13 RequestDispatcher dispatcher = request.getRequestDispatcher(view); 14 dispatcher.forward(request, response); 15 } 16}
jsp
1(touroku.jsp) 2 3<%@ page language="java" contentType="text/html; charset=UTF-8" 4 pageEncoding="UTF-8"%> 5<!DOCTYPE html> 6 7<html> 8 <head> 9 <meta http-equiv="Content-Type" content="text/html" charset="UTF-8"> 10 <title>新規登録</title> 11 </head> 12 <body> 13 <form action="kakunin" method="post"> 14 ID(全角10文字):<input type="text" name="id"><br> 15 パスワード(全角20文字):<input type="text" name="pass"><br><br> 16 <input type="submit" value="送信"> 17 </form> 18 </body> 19</html>
今のままではリンクを押してもエラーとなってしまいます。
HTTPステータス 405 – Method Not Allowed
タイプ ステータスレポート
メッセージ HTTP method GET is not supported by this URL
説明 リクエストラインで受信されたメソッドは、オリジンサーバーによって認識されますが、ターゲットリソースによってサポートされていません。
Paiza Cloudを使って作成しました。
Apache Tomcat/9.0.26です。
一応405エラーについて調べましたが、formでの値の受け渡しについての答えは見つけたのですが、リンクとして貼った上でのエラーについては私の検索能力では出てきませんでした。
分かりにくいことや情報の不備などあったら申し訳ございません。
[追記]
・indexのurlはhttps://wrwrdlove.paiza-user.cloud:8080/mywork/indexです。
[web.xml] <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0" metadata-complete="true"> <servlet> <servlet-name>Login</servlet-name> <servlet-class>LoginGame</servlet-class> </servlet> <servlet-mapping> <servlet-name>Login</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet> <servlet-name>Index</servlet-name> <servlet-class>IndexData</servlet-class> </servlet> <servlet-mapping> <servlet-name>Index</servlet-name> <url-pattern>/index</url-pattern> </servlet-mapping> <servlet> <servlet-name>Kakunin</servlet-name> <servlet-class>Kakunin</servlet-class> </servlet> <servlet-mapping> <servlet-name>Kakunin</servlet-name> <url-pattern>/kakunin</url-pattern> </servlet-mapping> <servlet> <servlet-name>Touroku</servlet-name> <servlet-class>TourokuData</servlet-class> </servlet> <servlet-mapping> <servlet-name>Touroku</servlet-name> <url-pattern>/touroku</url-pattern> </servlet-mapping> </web-app>
回答2件
あなたの回答
tips
プレビュー