Spring boot勉強中での質問
Q&A
Closed
※ログインボタン押下後の実装は7章で実施していました。
現時点では6章実施中なのでスキップします。
解決したいこと
Spring解体新書という書籍で6章部分を実施中です。
ログイン画面からのログインボタンを押下するとエラーが発生しています。
解決方法を教えて下さい。
本来はレイアウトは以下のようになるのが正解です。
発生している問題・エラー
There was an unexpected error (type=Method Not Allowed, status=405).
Method 'POST' is not supported.
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' is not supported
at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:267)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:441)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:382)
at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.getHandlerInternal(RequestMappingInfoHandlerMapping.java:127)
at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.getHandlerInternal(RequestMappingInfoHandlerMapping.java:68)
at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:507)
at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1284)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1065)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
該当するソースコード
■login.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<meta>
<meta charset="UTF-8"></meta>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!--CSS読込-->
<link rel="stylesheet" th:href="@{/webjars/bootstrap/css/bootstrap.min.css}">
<link rel="stylesheet" th:href="@{/css/login/login.css}">
<!--JS読込-->
<script th:src="@{webjars/jquery/jquery.min.js}" defer></script>
<script th:src="@{webjars/bootstrap/css/bootstrap.min.js}" defer></script>
<title>ログイン</title>
</head>
<body class="bg-light">
<div class="text-center">
<form method="post" th:action="@{/login}" class="form-login">
<h2>ログイン</h2>
<!--ユーザID-->
<div class="form-group">
<label for="userId" class="sr-only">userId</label>
<input type="text" class="form-control" placeholder="ユーザーID" name="userId">
</div>
<!--パスワード-->
<div class="form-group">
<label for="password" class="sr-only">password</label>
<input type="text" class="form-control" placeholder="パスワード" name="password">
</div>
<input type="submit" value="ログイン" class="btn btn-primary"/>
</form>
<a th:href="@{/user/signup}">新規登録はこちら</a>
</div>
</body>
■LoginController.java
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class LoginController {
/*ログイン画面を表示*/
@GetMapping("/login")
public String getLogin() {
return "login/login";
}
}
自分で試したこと
本通りに構造や、ソースは記載できていると思っていますが解決できていません。。
アドバイス頂けるとありがたいです。よろしくおねがいします。