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的问题。