一.发现400错误的,第一步确认postmen中发送的数据类型是json。比如Headers中Content-Type类型是application/json;或是前端代码Ajax中添加:contentType: ‘application/json;charset=UTF-8‘(如图);
二.第一步确认postmen中发送的数据格式是否正确。postmen中经常有人有漏写一对“{}“或是缺少逗号,引号,冒号的小问,好在postmen会自动报错提示; 而在前端中你必须重新包装传入参数为JSON型。使用JSON.stringify(params)将params参数重新包装;
三.正常解决以上两个问题,多数人错误也该解决了。如果还没有,我们就要在Controller接收处查找问题。
顺带一说:前端用json传入,后端如果用对象接收,及时传入变量名与该对象的属性名对应上,也不会自动封装进去,当然也不会直接报错。如果想json型自动转换成对象,需要在对象前面添加@RequestBody注解。它会将JSON进行转换成为你指定的对象。
? 但是我个人更喜欢用JSONObeject或Strng去接受,在用手动将它转化为我需要的对象,因为我传入的对象可能是嵌套好的,其中有一个对象,还有其他对象的List。在头部自动转化就会出现一些问题。
言归正传,第三个可能出现400的问题就在这。使用RequestBody转化成String时,意外报错,类型不匹配。这一点也是我万万没想到的。因为之前一个项目基本都是用String在接收前端的JSON对象。这次却卡在400处。解决的方案很简单,使用JSONObject原原本本的接收JSON对象!直接使用!
如: (1)在地址栏上的路径有问题(大小写不对); (2)超链接值与地址栏路径不一致; (3)两个servlet-name不一致 ;(4)没有部署项目 (5)项目的组织结构有问题
404问题对于刚刚接触web开发的新手朋友来说,算得上是头痛的问题。其实这个问题很简单。根本原因就是服务器找不到目标页面(或者说成找不到目web资源)而产生的。既然找不到资源,那么很大原因就是访问路径或者XML的配置的出了问题。解决办法我们就从这里入手:
第一个方法:检查表单的action属性中路径是否正确,是否有因为粗心而打错的字:
<from action = "/login/registServlet" method = "post" enctype = "multipart/form-data">
第二个方法:a标签中路径是否正确。
<a href = "../login.jsp">登录</a>
需要注意的是表单或a标签中的路径有时候应该加上你的basePath。
<servlet>
<description></description>
<display-name>InitServlet</display-name>
<servlet-name>InitServlet</servlet-name>
<servlet-class>com.imooc.servlet.Init/Servlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
继承自HttpServlet的Servlet没有重写对于请求和响应的处理方法:doGet或doPost等方法;默认调用父类的doGet或doPost等方法;
父类HttpServlet的doGet或doPost等方法覆盖了你重写的doGet或doPost等方法;
不管是1或2,父类HttpServlet的doGet或doPost等方法的默认实现是返回状态代码为405的HTTP错误,表示对于指定资源的请求方法不被允许。
? 重写doGet,doPost方法
原因:
由于该程序调用到的JAVA类文件没有正确上传;
解决方案:
将JAVA类文件重新上传。
JAVA类文件已经上传,但应用服务器并未检测到,建议将JSP页面重新更新。
解决方案:
将JSP页面更新并上传;或将应用程序服务器进行重新启动。
原因:
1.对系统所访问外部资源,未执行关闭操作,导致外部资源大量浪费,最终可能导致系统无法正常运行;
2.对系统所访问的外部资源关闭次数太多,外部系统无法正常处理;
3.系统访问的外部资源出现异常情况。
解决方案:
1.访问外部资源前,首先检查该资源(如数据库)是否可正常连接或操作。
2.访问外部资源时,如果进行了连接,一定进行关闭操作,并仅进行一次关闭操作。
3.尽量在同一操作中共享外部资源,以减少该操作对资源的消费,提高程序的执行效率。
原文:https://www.cnblogs.com/lix-2020/p/13711331.html