ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-02-25 23:02:18  阅读:141  来源: 互联网

标签:username javaweb request 验证码 session import servlet bug


## 案例:验证码
    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层- -实践不够 继续往下了 存档为主

标签:username,javaweb,request,验证码,session,import,servlet,bug
来源: https://www.cnblogs.com/tityaaaa/p/15938090.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有