Spring MVC出现POST 400 Bad Request &405 Request method 'GET' not supported
来源:互联网 发布:高丝 艾文莉 知乎 编辑:程序博客网 时间:2024/05/29 14:11
首先描述一下出现错误的情景:
我刚学springmvc,想做一个登录界面的东西。然后试着写了一个controller如下: @RequestMapping(value = "/login", method = RequestMethod.POST)
public String login( String name,
String password, Model model) {
User u = userService.login(name, password);
if (u == null)
throw new UserException("no user exist!");
if (!u.getPassword().equals(password)) {
throw new UserException("password is not right!");
}
model.addAttribute("loginUser", u);
return "redirect:/user/users";
}
然后就出现了 400 badrequest这个错误了。网上找资料,说是属性不匹配吧,于是找jsp页面的错误,没有不匹配的地方,于是添加
log4j.logger.org.springframework.web=debug
到log4j日志里面,果然出现错误的地方了。究其原因是
@RequestMapping(value = "/{id}", method = RequestMethod.GET) public String show(@PathVariable int id, Model model) { model.addAttribute("user", userService.load(id)); return "user/show"; }
因为这个mapping地址localhost:8080/xxx/user/id(int类型)的,
login的mapping地址localhost:8080/xxx/user/login(String类型)的,
所以在dispatch的时候,spring误认为是要去访问show这个方法,就造成了数据类型不匹配,也就是String型无法转变为int类型的错误,也就造成了400 bad request错误了,如此,解决方法就是在show方法的 @RequestMapping(value = "/{id}", method = RequestMethod.GET)
改为 @RequestMapping(value = "show/{id}", method = RequestMethod.GET)
这样就区别开了。
到此,第一个问题解决。方法是
- 先检查一下数据类型是否匹配。
- 自己检查不到,就用控制台输出一个debug信息,然后查看,Springmvc中
log4j.logger.org.springframework.web=debug
到log4j日志里面 - 查看信息,修改即可。
405 Request method ‘GET’ not supported
这个错误,纯属自己的问题了,我也查看了jsp页面提交方法是post,然后controller的方法也是method = RequestMethod.POST,怎么会出现GET请求呢?原来是我直接访问login页面。
我在controller中写了一个方法,将视图转到login页面就解决了
如下: @RequestMapping(value="",method=RequestMethod.GET)
public String index(){
return "user/login";
}
另,附上我在网上查找资料的时候,别人遇到的一些错误原因:
@Controller@RequestMapping("/newPost.htm")public class NewPostController{ @Autowired PostsBusinessDelegate postsBusinessDelegate = null; @Autowired AddNewPostFormBean addNewPostFormBean = null; @RequestMapping(method=RequestMethod.GET) public String getCreateForm(Model model) { model.addAttribute(addNewPostFormBean); return "/newPost.htm"; } @RequestMapping(method=RequestMethod.POST) public String create(AddNewPostFormBean article, BindingResult result, HttpServletRequest request) { if (result.hasErrors()) { return "/newPost.htm"; } postsBusinessDelegate.addNewPost((User) request.getSession().getAttribute("CURRENT_USER"), article); return "redirect:/index.htm"; } @RequestMapping(***method=RequestMethod.GET***) public String getView(Model model) { AddNewPostFormBean anpfb = this.addNewPostFormBean; if (anpfb == null) { return "/newPost.htm"; } model.addAttribute(anpfb); return "/newPost.htm"; } @ExceptionHandler(Exception.class) public String exception(Throwable t) { return "/index.htm"; }
<form:form method="post" > <form:errors path="*"/> <p>Title: <form:input path="articleTitle" size="45" maxlength="60"/></p> <form:select path="categoryId"> <form:option value="Select Category..."></form:option> <c:forEach items="${sessionScope.CATEGORIES}" var="category" varStatus="index"> <form:option value="${category.categoryId}" label="${category.categoryName}"></form:option> </c:forEach> </form:select> <form:textarea path="articleText" id="editor1"/> <div class="buttons"> <input type="submit" value="Add Post" /> </div> </form:form>
这个问题主要出现在有两个GET,不知道映射哪个。controller中create跟getView方法
如有错误,请指出,刚学习springmvc不久。谢谢!
- Spring MVC出现POST 400 Bad Request &405 Request method 'GET' not supported
- Spring MVC-Request method 'POST' not supported:
- HTTP Status 405 - Request method 'POST' not supported (Spring MVC)
- spring MVC form表单提交用RequestMethod.POST报错 : Request method 'GET' not supported
- Spring MVC Request method 'POST' not supported错误
- Spring MVC HTTP Status 405 – Request method ‘POST’ not supported
- jsp spring mvc 上传时HTTP Status 405 - Request method 'GET' not supported是什么原因
- request method 'post' not supported
- Request method 'POST' not supported
- Request method 'GET' not supported
- Request method 'GET' not supported
- Spring MVC Json 405 (Method Not Allowed)/ 404 Bad Request
- curl发送post请求出现:Request method 'post' not supported
- springmvc解决 405 request method post not supported(Request method 'POST' not supported)
- spring mvc处理json文件静态资源文件报错Request method 'POST' not supported
- Spring mvc 405 Request method 'POST' not support
- request method 'post' not supported问题解决
- 记另类Request method 'GET' not supported
- IOS 关于Text Field设置键盘
- Zookeeper的事件驱动和订阅模式
- Android中常见的热门标签的流式布局的实现
- 从哪里找寻安全感?
- HDU 2255 奔小康赚大钱 KM模板题
- Spring MVC出现POST 400 Bad Request &405 Request method 'GET' not supported
- MyBatis学习总结(七)——Mybatis缓存
- Caffe、TensorFlow、MXnet三个开源库对比
- 为listview设置padding时,滑动页面顶部与底部不显示padding
- 在STM32中使用printf发送字符串到串口
- GTK+2.0编程范例代码分析-第二章(2)
- Mac 科研常用软件
- 关于cookie与网络安全的一些学习
- 基于p2p的sip电话系统