首先描述一下出现错误的情景:

我刚学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)这样就区别开了。

到此,第一个问题解决。方法是

  1. 先检查一下数据类型是否匹配。
  2. 自己检查不到,就用控制台输出一个debug信息,然后查看,Springmvc中log4j.logger.org.springframework.web=debug到log4j日志里面
  3. 查看信息,修改即可。

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的更多相关文章

  1. Spring Mvc 在非controller层 实现获取request对象

    一般我们在Controller层,会编写类似这样的方法 @Controller @RequestMapping(value="/detail") public class GetU ...

  2. Spring Mvc Http 400 Bad Request问题排查

    如果遇到了Spring MVC报错400,而且没有返回任何信息的情况下该如何排查问题? 问题描述 一直都没毛病的接口,今天测试的时候突然报错400 Bad Request,而且Response没有返回 ...

  3. 戏说 Spring MVC 框架

    Spring MVC 是 Spring 框架的一部分,和 Struts 一样都是属于 web 层框架,根据项目分层的思想,一个项目基本可以分为持久层,业务层和 web 层.而 Spring MVC 主 ...

  4. spring + spring mvc + tomcat 面试题(史上最全)

    文章很长,而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三 ...

  5. Spring Data MongoDB example with Spring MVC 3.2

    Spring Data MongoDB example with Spring MVC 3.2 Here is another example web application built with S ...

  6. spring mvc controller中获取request head内容

    spring mvc controller中获取request head内容: @RequestMapping("/{mlid}/{ptn}/{name}") public Str ...

  7. An overview of the Spring MVC request flow

    The Spring MVC request flow in short: When we enter a URL in the browser, the request comes to the d ...

  8. spring mvc DispatcherServlet详解之三---request通过ModelAndView中获取View实例的过程

    整个spring mvc的架构如下图所示: 上篇文件讲解了DispatcherServlet第二步:通过request从Controller获取ModelAndView.现在来讲解第三步:reques ...

  9. spring mvc DispatcherServlet详解之二---request通过Controller获取ModelAndView过程

    整个spring mvc的架构如下图所示: 上篇文件讲解了DispatcherServlet通过request获取控制器Controller的过程,现在来讲解DispatcherServletDisp ...

随机推荐

  1. elasticsearch cluster 详解

    上一篇通过clusterservice对cluster做了一个简单的概述, 应该能够给大家一个初步认识.本篇将对cluster的代码组成进行详细分析,力求能够对cluster做一个更清晰的描述.clu ...

  2. HTML基础第五讲---控制表格及其表项的对齐方式

    转自:https://i.cnblogs.com/posts?categoryid=1121494 缺省情况下,表格在浏览器屏幕上左对齐,你可以使用<TABLE>的ALIGN属性来指定表格 ...

  3. JS学习笔记 - 面向对象 - 原型

    <script> var arr1 = new Array(12, 55, 34, 78, 676); var arr2 = new Array(12, 33, 1) Array.prot ...

  4. python3 随机生成10以内的加法算术题

    今晚晚饭过后,看到小孩在做加法题,全是10以内的,因为她现在只会10以内的加法题.而这些题是老婆手动出的题目. 看到这个情景,突然想到,可以用python来实现随机出题,而且可以指定出多少题,出多少以 ...

  5. macos中xcode使用opencv,错误总结

    使用opencv时,进行编译时,会出现如上图所示错误,按图示更改就行了(我编译出来的有2处)主要参考 https://blog.csdn.net/fk1174/article/details/7011 ...

  6. IOS获取手机设备所有应用

    //返回一个数组 1 NSMutableArray *applist = [[NSMutableArray alloc]init]; NSString *pathOfApplications = @& ...

  7. [Angular] Stagger animation v4.3.3

    For example, when we open a form, we want to see all the inputs fields comes into one by one. Code f ...

  8. TCP快速重传与快速恢复原理分析(四种不同的算法)

    在TCP/IP中,快速重传和恢复(fast retransmit and recovery,FRR)是一种拥塞控制算法,它能快速恢复丢失的数据包.没有FRR,如果数据包丢失了,TCP将会使用定时器来要 ...

  9. swift开发多线程篇 - NSThread 线程相关简单说明(一些使用和注意点)

    一 说明 本文涉及代码可以从https://github.com/HanGangAndHanMeimei/Code地址获得. 二 NSThread的基本使用和创建 1)基本用法(主线程|当前线程) 1 ...

  10. PHP实现查询两个数组中不同元素的方法

    以下实例讲述了PHP实现查询两个数组中不同元素的方法.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...