*未解决 javaweb登录+验证码 bug存留

参考:https://www.cnblogs.com/ajing2018/p/15917166.html 感谢大佬指路 虽然还是没跑起来quq

## 案例:验证码
    1. 案例需求:
        1. 访问带有验证码的登录页面login.jsp
        2. 用户输入用户名,密码以及验证码。
            * 如果用户名和密码输入有误,跳转登录页面,提示:用户名或密码错误
            * 如果验证码输入有误,跳转登录页面,提示:验证码错误
            * 如果全部输入正确,则跳转到主页success.jsp,显示:用户名,欢迎您*

“这里没有用dao层,但是写了,妄想写dao层连数据库进行比较,但是我不会啊- - 先做几个案例再回来解决 报错500比404害烦”

  • 分析

 

 

 

  • 项目结构

 

 

 

 

 

 代码:

package cn.com.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Map;

@WebServlet("/loginKServlet")
public class LoginKServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.设置request编码
        request.setCharacterEncoding("utf-8");
        //2 获取map 链接数据库就用这边这个
//        Map<String, String[]> map = request.getParameterMap();
        //2 简易版:
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String checkCode = request.getParameter("checkCode");
        //先获取生成的验证码
        HttpSession session = request.getSession();
        String checkCode_session = (String) session.getAttribute("checkCode_session");
        //判断验证码
        //获取数据库的值 check_session
//        username =username

        if (checkCode_session.equalsIgnoreCase(checkCode)) {
            //本来想能不能直接checkCode.equals(request.getSession().getAttribute())
            //但是放在if中前面的就是为了一定程度的空指针异常 //忽略大小写
            if ("admin".equals(username) && "root".equals(password)) {//调用userdao

                //储存信息,重定向到sussece,jsp
                session.setAttribute("username", username);
                response.sendRedirect(request.getContextPath() + "/success.jsp");

            } else {
                //不一致
                request.setAttribute("login_error", "error of password or username");
                //转发到登录页面
                request.getRequestDispatcher("/Login.jsp").forward(request, response);
            }
        } else {
            //不一致
            request.setAttribute("cc_error", "error");
            //转发到登录页面
            request.getRequestDispatcher("/Login.jsp").forward(request, response);
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}
LoginKServlet

 

 

  • 运行结果
    •   jsp页面

 

 

    •     submit页面

 

 

 单独访问failsevlet可以成功显示出来,successservlet也可以;

所以问题应该是在LoginKservlet里

但是先不管了,因为本次的代码也没有加dao层- -实践不够 继续往下了 存档为主

posted @ 2022-02-25 22:48  Tityaaaa  阅读(97)  评论(0编辑  收藏  举报