HTTP method POST is not supported by this URL解决方案

avatar 2017年07月08日16:43:16 1 5138 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此
刚才在做一个简单的Session案例——实现用户登录的Demo,将Login.html,LoginServlet.java,IndexServlet.java以及web.xml等代码都写好后。打开登录页面,输入信息后,跳转到如下错误页面



HTTP method POST is not supported by this URL

以下是错误时候的代码

(1)form.html代码如下
  1.  <form action="/ServletTest/LoginServlet" method="post">
  2.         用户名:<input type="text" name="username" /> <br />
  3.         密 码:<input type="password" name="password" /> <br />
  4.         <input type="submit" value="提交" id="sub" />
  5. </form>

这里是post方式提交的

(2)LoginServlet.java代码如下
  1. package com.liuyanzhao;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. /*
  9.  * @author LiuYanzhao
  10.  */
  11. public class LoginServlet extends HttpServlet{
  12.     @Override
  13.     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  14.         //防止乱码
  15.         resp.setContentType("text/html;charset=utf-8");
  16.         String username = req.getParameter("username");
  17.         String password = req.getParameter("password");
  18.         PrintWriter out = resp.getWriter();
  19.         //假设正确的账号是admin,密码是123456
  20.         if("admin".equals(username)&&"123456".equals(password)) {
  21.             User user = new User();
  22.             user.setUsername(username);
  23.             user.setPassword(password);
  24.             req.getSession().setAttribute("user", user);
  25.             resp.sendRedirect("/ServletTest/IndexServlet");
  26.         } else {
  27.             out.print("用户名和密码错误,登录失败!");
  28.         }
  29.     }
  30. }

很明显,错在这里,没有 doPost 方法

因为 post 的提交方式只能用 dopost 方法来处理,get 或者 url 的提交方式 只能用 doget 的方法来处理



解决方案,有两种。

第一种是把 Login.html 里的 post 提交方式改成 get 的

第二种就是在IndexServlet类里面加上 doGet 方法下面 加上 doPost 方法

代码可以如下
  1. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  2.         doGet(req, resp);
  3. }

然后就解决了,其实这本不是啥问题,细心一点就不会有啦



本文链接:https://liuyanzhao.com/4891.html
  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 编程爱好者交流群
  • 资源分享,问题解决,技术交流。QQ群:424285828(新群)
  • weinxin
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0