csdn_sqj 2019-12-16 10:53 采纳率: 40%
浏览 555
已采纳

请问doPost和doGet方法有什么不同,为什么例程里的方法写在doPost里,我的代码只能写在doGet

简单的说,就是同样的代码,例程里写在doPost()里
我的代码只能写在doGet()里,写在doPost()里不会生效
图片说明
图片说明

++++++++++++++++++++++++++++++++++++++++++++++
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1、设置request编码
req.setCharacterEncoding("utf-8");
// 2、获取 jsp页面 中对应的参数,注意区分大小写
String username = req.getParameter("username");
String password = req.getParameter("password");
String checkCode = req.getParameter("checkCode");

    // 3、获取 CheckCodeServlet.java 生成的验证码
    // 注意,getAttribute() 里的参数是要存在的,CheckCodeServlet那里是有的
    HttpSession session = req.getSession();
    // Object checkCode_session = session.getAttribute("checkCode_session");
    String checkCode_session = (String) session.getAttribute("checkCode_session");
    // 注意,这里有两个验证码,可以理解为checkCode_session是答案,checkCode是试卷

    // 4、判断验证码是否正确
    // 注意,下面用到的比较方法可以不区分大小写,但是两个比较的值要是String,所以上面的Object要转型
    if(checkCode_session.equalsIgnoreCase(checkCode)){
        System.out.println("1111111");
        // 如果验证码一致,则判断用户名与密码是否一致
        if("ycw".equals(username) && "123".equals(password)){
            System.out.println("2222222");
            // 账号密码一致
            // 这里原本是要调用 userDao 查询数据库的,现在只是模拟,下面的username也是暂时的
            session.setAttribute("user", username); // ===>返回登录页面一个叫 user 的参数,它的值是username


            // 测试用
            System.out.println("登录成功");

            // 重定向到success.jsp
            resp.sendRedirect(req.getContextPath()+"/success.jsp");
        }
        else {
            // 账号密码不一致
            // 存储提示信息到request
            req.setAttribute("login_error", "账号或者密码错误");
            // 转发到登录页面
            req.getRequestDispatcher("/login.jsp").forward(req, resp);

            // 测试用
            System.out.println("账号或者密码错误");
        }
    }
    else {
        System.out.println("3333333");
        // 验证码不一致
        // 存储提示信息到request
        req.setAttribute("cc_error", "验证码错误");
        // 转发到登录页面
        req.getRequestDispatcher("/login.jsp").forward(req, resp);

        // 测试用
        System.out.println("验证码错误");
    }

}
  • 写回答

1条回答

  • 笑看烟雨红尘 2019-12-16 10:55
    关注

    两者区别在于你的请求方式,post请求会进doPost,get请求会进doGet

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多