csdn_sqj
csdn_sqj
2019-12-16 10:53

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

5
  • java
  • intellij-idea

简单的说,就是同样的代码,例程里写在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条回答