大家好,欢迎来到IT知识分享网。
1、问题描述
今天学生在使用jsp+servlet做一个练习的时候出现了一个错误,截图如下:
点击删除按钮
错误描述
当在用户列表点击删除按钮的时候,发现用户已经删除,但是报了一个405的错误。
2、问题分析
代码过程如下:
Servlet里面先进入doGet方法,然后调用doPost方法进行处理。处理完跳转到查询所有数据的Servlet查询并展示数据:
但是最后数据并没有展示出来。
查看数据库数据,已被删除,但是并没有跳转到home.jsp页面。再看错误,报的是URL不支持POST,明明我们是以get方式发送的数据,却报了一个POST不被支持的错误。
跟踪断点,发现并没有进到EmpListServlet这个类的doPost方法里,仔细观察,原来在EmpListServlet这个类的doGet方法里面,调用doPost写的super.doPost方法。
打开这个方法的源码看一下:
这个类是HttpServlet类:
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String protocol = req.getProtocol(); String msg = lStrings.getString(“http.method_post_not_supported”); if (protocol.endsWith(“1.1”)) { resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg); } else { resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg); } }
在这个方法里面,没有实现具体功能,只是根据协议号,把错误返给前端,就是我们看到的405
3、解决方案
我们在传统Servlet处理的时候,经常doGet去调用doPost,但是调用的时候要注意,调的是自己实现的方法,千万不要调到了父类没有实现的方法。
我们把super.doPost改为doPost即可。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/80649.html