关于Servlet报错:405 HTTP method GET is not supported by this URL问题解决方法

kenticny

在编写一个项目的某个 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 方法,如果上述两种情况都有可能出现,那么 doGetdoPost 就都必须存在,否则就会报出错误。

以上是我对于解决 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 许可协议。转载请注明出处!
 评论
此页目录
关于Servlet报错:405 HTTP method GET is not supported by this URL问题解决方法