现在刚开始接触SSM框架,连从jsp页面提交参数到controller都各种报错。首先我们分析一下,浏览器报400的错误,主要有两种形式:
1、bad request意思是“错误的请求";
2、invalid hostname意思是"不存在的域名”。
于是我在浏览器中的Network找到的我提交的请求,路径没问题,参数也有,直接访问请求路径,代码执行到编译器断点,可是提交请求断点却没有执行。那么就可以排除请求地址的错误了。可是参数也有,为什么会是“错误的请求呢”
。
后来参考了大神的文献,controller
中接收前端传递过来的数据有几种方式,我使用的是用一个bean
去接收。换种接收方式试试
使用@ModelAttribute
注解的方式controller
接收到了请求,可是参数的值却没有接收到。那么再试试最经典的使用HttpServletRequest
接收参数
请求过来了,参数也接收到了。可是这样的话,要是参数很多,就需要大量的getParameter
方法来接收参数。为什么最方便的使用bean来接收会请求失败呢?
从JSP页面到servlet出现 400这是由于前台json参数转换实体类bean时转换失败,大多发生于form表单提交时input标签没填 ""无法转换成其他int 或者date类型
因为我新增和修改使用的是同一个表单,而新增是productid
是没有值的,input默认值为””,解决方法就只需要将int或者double属性转换为对应的包装类Integer、Double
就可以了。
public class ProductPo implements Serializable{
private Integer productid;
private String productname;
private String productdescribe;
private String cover;
public Integer getProductid() {
return productid;
}
public void setProductid(Integer productid) {
this.productid = productid;
}
将PO类里的int改成包装类Integer,再使用bean接收参数。