关于Servlet报错:405 HTTP method GET is not supported by this URL问题解决方法
在编写一个项目的某个 Servlet
时候,在运行时候,报出了错误:
405 HTTP method GET is not supported by this URL
在通过查询,得到大家很多解决方法,为了能总结归纳,现在都列举出来,这些都不是我的解决方法,我也没有每一种情况都测试,如果方法中有错误的请忽略:
网络版1
出处 http://weishang-java.iteye.com/blog/688133 (这个可能不是原创的地址,但是是我看到的,如果影响到原作者,请与我联系修改或者删除)。
问题产生原因
继承自HttpServlet的Servlet没有重写对于请求和响应的处理方法:doGet或doPost等方法;默认调用父类的doGet或doPost等方法。
父类HttpServlet的doGet或doPost等方法覆盖了你重写的doGet或doPost等方法;不管是1或2,父类HttpServlet的doGet或doPost等方法的默认实现是返回状态代码为405的HTTP错误表示对于指定资源的请求方法不被允许。
问题解决方法
子类重写doGet或doPost等方法。
在你扩展的Servlert中重写doGet或doPost等方法来处理请求和响应时 不要调用父类HttpServlet的doGet或doPost等方法,即去掉super.doGet(request, response)和super.doPost(request, response)。
网友版2
出处 http://bbs.jxjyzy.com/space/viewspacepost.aspx?postid=30811 (这个可能不是原创的地址,但是是我看到的,如果影响到原作者,请与我联系修改或者删除)
问题产生原因及解决方法
在Servlet中接收参数要写在方法最前面。
最终版
以上的两种方法我没有做针对性的测试,只是没有解决了我的问题,如果其中有错误或者没有解决了您的问题,可以继续往下看,试试我的解决方法,以下是我的解决方法:
问题原因分析
我写的 Servlet
是一个判断表单的程序,当我正常通过表单提交数据的时候,这时是不会报错的,只有当我直接访问 Servlet
的时候,才会报出上述错误,于是我想到了我的表单是通过 POST
方式提交的,而且我的 Servlet
中是写 doPost
方法,而没有写 doGet
方法,所以,当直接访问一个页面或者一个地址默认是通过GET方式访问的,所以默认调用的是 doGet
方法,而我的 Servlet
中没有 doGet
方法,才导致了上述错误的产生。
问题解决方法
在 Servlet
中要有与提交方式对应的方法,即 doPost
或者 doGet
方法,直接访问 Servlet
而且没有声明访问类型,那么默认的是 GET
方式,所以要有 doGet
方法,如果以 POST
方式提交表单或者其他 POST
方式访问 Servlet
那么就要有 doPost
方法,如果上述两种情况都有可能出现,那么 doGet
和 doPost
就都必须存在,否则就会报出错误。
以上是我对于解决 405 HTTP method GET is not supported by this URL
错误的一种方法,可能会对一些网友有帮助,也可能没有帮到一些网友,希望大家能够在对于问题的解决方法做以补充。如果我的方法中存在不足或者错误的,也欢迎大家能够联系我指正。
- 本文标题:关于Servlet报错:405 HTTP method GET is not supported by this URL问题解决方法
- 本文作者:kenticny
- 创建时间:2012-06-03 20:32:40
- 本文链接:https://luyun.io/2012/06/03/java-servlet-405-error-solution/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!