解决HTTP Status 405 -HTTP method POST is not supported by this URL解决

首先说明一下问题的出现:

 学习了jsp和servlet,然后将表单提交到服务器,服务器对查询,然后 给出响应。(登陆页面)

出现问题的原因:

当我们开始简化这个Servlet的不同类时,删除了大量的XML中的Servlet和servlet-mapping。然后只通过一个Servelt类来实现用户登录和注册还有返回功能。当修改完成后,运行原来的正常代码发现报错  :HTTP Status 405 -HTTP method POST is not supported by this URL解决。

错误的操作步骤:

 然后,因为有不同的请求,所以需要创建多个Servlet类,然后导致了占用了大量的空间,然后为了简化代码,我们只使用了UserServlet类和BaseServlet类(因为是注册和登陆,都是对用户进行操作和处理),这里UserServlet里实现了登陆的方法、注册的方法、注销的方法(我之前的实现都是新建一个一个Servlet类 都实现了的httpServlet接口,然后实现不同的功能在这里,我把重写的service方法都提取出来,然后只修改了方法名把这些所有的实现接口的Servlet中的service方法提取出来,都放进UserServlet类中并且继承BaseServlet类,这个时候BaseServlet通过反射知道每个客户端需要响应什么,然后调用UserServlet类中的方法),并且我表单是get请求。

 

错误一:

 因为我的表单是get 请求,get在提交表单的时候,url路径后面会跟上我们提交的数据,比如:

                  http://192.168.55.14:8080/myservlet6/servlet/login?username=abc&&pwd=bcd

  我的表单因为要访问同一个Servlet,所以为了区别不同的请求(注册、登陆),我在表单的action后面添加了如图的内容,如下所示: 这个时候用get方法进行提交,会多出来两个问号(自己添加的?method=login 还有get自己生成的表单提交数据)这个时候就会出错。

修改方案:不能用get请求提交表单,并且在解决编码问题时也需要响应的修改。

错误二:

  因为我为了方便,只是把每一个Servlet类重写service的方法复制黏贴出来,修改了方法名,这个时候就会报错,因为我们继承了HttpServlet的serive方法,只修改方法名是不够的,因为他是protect的修饰符,所以BaseServlet区分了是那种方法后,根本没有权限来访问我们的每一个方法。

  解决方案:修改protect修饰权限  修改为public

你可能感兴趣的:(错误原因及解决方案)