@[toc] 一.遇到的问题 这是一个JavaWeb工程,写了请求表单之后报了HTTP状态 405 - 方法不允许。此URL不支持Http方法POST。如下图: 我目前是写了应该表单,是使用了post方法,get可以正常请求
@[toc]
一.遇到的问题
这是一个JavaWeb工程,写了请求表单之后报了HTTP状态 405 - 方法不允许。此URL不支持Http方法POST。如下图:我目前是写了应该表单,是使用了post方法,get可以正常请求,post就会405。我的前端代码如下,没有错误:
<form action="${pageContext.request.contextPath}/login" method="post"> 用户名:<input type="text" name="username"> <br> 密码:<input type="password" name="password"> <br> 我是: <input type="checkbox" name="yu" value="上进小菜猪"> 上进小菜猪 <input type="checkbox" name="yu" value="菜猪"> 菜猪 <input type="checkbox" name="yu" value="小菜"> 小菜 <input type="checkbox" name="yu" value="小猪"> 小猪 <br> <input type="submit"> </form>错误在后端,请看下文。
二.此URL不支持Http方法POST【解决方法】
后端我继承了HttpServlet,重写了doGet。如下
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setCharacterEncoding("utf-8"); String user = req.getParameter("username"); String pass = req.getParameter("password"); String[] yus = req.getParameterValues("yu"); System.out.println("---------------------"); System.out.println(user); System.out.println(pass); System.out.println(Arrays.toString(yus)); System.out.println("---------------------"); req.getRequestDispatcher("/sussess.jsp").forward(req,resp); }为了解决这个HTTP状态 405 - 方法不允许的bug,我们需要重写一下doPost方法:让doPost直接指向doGet,即可解决这个问题。代码如下:
@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }HTTP状态 405 - 方法不允许/此URL不支持Http方法POST——BUG已解决。