1.我遇到的問題
最近在練習一個簡單的SpringBoot增刪查改小案例,其中在寫“注冊”接口時,遇到如下的錯誤:
(1)頁面報錯:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Fri Aug 06 08:34:13 CST 2021
There was an unexpected error (type=Method Not Allowed, status=405).
(2)控制台報錯:
Request method 'GET' not supported.
其中注冊接口中如下:
//2.開發用戶注冊
@PostMapping("/regist")
public String regist(User user, String code, HttpSession session){
System.out.println("user===>" + user);
//1.判斷驗證碼是否通過
if (session.getAttribute("code").toString().equalsIgnoreCase(code)){ //通過了才注冊奧!
userService.save(user);
return "redirect:/ems/login.jsp"; //通過了跳到登錄頁面
}else {
return "redirect:/ems/regist.jsp"; //不通過回到注冊頁面
}
}
前端代碼如下:
<form action="${pageContext.request.contextPath}/user/regist" method="post">
常見的狀態碼有哪些?
① 200:請求成功,瀏覽器會把響應體內容(通常是html)顯示在瀏覽器中;
② 404:(客戶端問題)請求的資源沒有找到,說明客戶端錯誤的請求了不存在的資源;
③ 500:(服務端問題)請求資源找到了,但服務器內部發生了不可預期的錯誤;
④ 301/302/303:(網站搬家了,跳轉)重定向
⑤ 304: Not Modified,代表上次的文檔已經被緩存了,還可以繼續使用。如果你不想使用本地緩存可以用Ctrl+F5 強制刷新頁面
2.分析:
很顯然我遇到的錯誤是405,即:不允許使用此方法,也就是不允許我使用get方法。但是我明明使用的是post方法啊,接口里
使用@PostMapping注解,前端表單代碼里的方法也是post類型的,搞不清楚。
3.解決辦法:
將接口里的@PostMapping注解改成@RequestMapping注解,然后將前端代碼的post改為get,就行了。
4.遺留問題:
本應該通過接口路徑去訪問注冊頁面的:
http://localhost:8080/ems/user/regist 但是用這個路徑還是一直報405的錯誤。
最后用下面的路徑(靜態路徑)訪問並注冊成功了:
http://localhost:8080/ems/ems/regist.jsp
5.總結:
看來問題還是沒有解決,不是get/post的問題。