leighy 2022-02-19 15:06 采纳率: 25%
浏览 31
已结题

servlet登录界面,使用验证码验证缺无法成功登录

问题遇到的现象和发生背景

使用servlet设计登录项目,无法正常登录

问题相关代码,请勿粘贴截图

验证码servlet

package com.leighy.emp.controller;

import cn.dsna.util.images.ValidateCode;

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;

@WebServlet(name = "CreateCodeController",value = "/createCode")
public class CreateCodeController extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ValidateCode validateCode = new ValidateCode(200,30,4,20);
        String codes = validateCode.getCode();
        HttpSession session = request.getSession();
        session.setAttribute("codes",codes);

        validateCode.write(response.getOutputStream());
    }

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


登录servlet

package com.leighy.emp.controller;

import com.leighy.emp.entity.EmpManager;
import com.leighy.emp.service.EmpManagerService;
import com.leighy.emp.service.impl.EmpManagerServiceImpl;

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;

@WebServlet(name = "EmpManagerLoginController",value = "/manager/EmpManagerLoginController")
public class EmpManagerLoginController extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.收参
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String inputVcode = request.getParameter("inputVcode");

        //2.校验验证码
        String codes = (String)request.getSession().getAttribute("codes");
        if(!inputVcode.isEmpty() && inputVcode.equalsIgnoreCase(codes)){
            //调用业务逻辑实现登录
            EmpManagerService empManagerService = new EmpManagerServiceImpl();
            EmpManager empManager = empManagerService.login(username,password);
            if(empManager!=null){
                //登录成功
                //存储在session作用域
                HttpSession session = request.getSession();
                session.setAttribute("empManager",empManager);

                //跳转到查询所有的controller
                response.sendRedirect(request.getContextPath()+"/manager/showAllEmpController");
            }else {
                response.sendRedirect(request.getContextPath()+"/login.html");
            }
        }else {
            response.sendRedirect(request.getContextPath()+"/login.html");
        }
    }

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


登录成功跳转展示数据库内容servlet

package com.leighy.emp.controller;

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 java.io.IOException;

@WebServlet(name = "ShowAllEmpController",value = "/manager/showAllEmpController")
public class ShowAllEmpController extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("登录成功!");
    }

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


dao包

package com.leighy.emp.dao.impl;

import com.leighy.emp.dao.EmpManagerDao;
import com.leighy.emp.entity.EmpManager;
import com.leighy.emp.utils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import java.sql.SQLException;

public class EmpManagerDaolmpl implements EmpManagerDao {
    QueryRunner queryRunner = new QueryRunner();

    @Override
    public EmpManager select(String username) {
        try {
            EmpManager empManager = queryRunner.query(DbUtils.getConnection(),"select * from empmanager where username = ?;",new BeanHandler<EmpManager>(EmpManager.class),username);
            return empManager;

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }
}
package com.leighy.emp.dao;

import com.leighy.emp.entity.EmpManager;

public interface EmpManagerDao {
    public EmpManager select(String username);
}


实体类

package com.leighy.emp.entity;

public class EmpManager {
    private String username;
    private String password;

    public EmpManager() {
    }

    public EmpManager(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}


service应用层

package com.leighy.emp.service.impl;

import com.leighy.emp.dao.EmpManagerDao;
import com.leighy.emp.dao.impl.EmpManagerDaolmpl;
import com.leighy.emp.entity.EmpManager;
import com.leighy.emp.service.EmpManagerService;
import com.leighy.emp.utils.DbUtils;

public class EmpManagerServiceImpl implements EmpManagerService {
    private EmpManagerDao empManagerDao = new EmpManagerDaolmpl();
    @Override
    public EmpManager login(String username, String password) {
        EmpManager empManager = null;
        try {
            DbUtils.begin();
            EmpManager temp = empManagerDao.select(username);
            if(temp!=null){
                if(temp.getPassword().equals(password)){
                    empManager = temp;
                }
            }
            DbUtils.commit();
        } catch (Exception e) {
            DbUtils.rollback();
            e.printStackTrace();
        }
        return null;
    }
}



package com.leighy.emp.service;

import com.leighy.emp.entity.EmpManager;

public interface EmpManagerService {
    public EmpManager login(String username,String password);
}


utils

package com.leighy.emp.utils;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DbUtils {
    private static DruidDataSource ds;
    private static final ThreadLocal<Connection> THREAD_LOCAL = new ThreadLocal<>();

    static {
        Properties properties = new Properties();
        InputStream is = DbUtils.class.getResourceAsStream("/database.properties");
        try {
            properties.load(is);
            try {
                ds = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
            } catch (Exception e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    public static Connection getConnection(){
        Connection connection = THREAD_LOCAL.get();
        try {
            if(connection==null){
                connection = ds.getConnection();
                THREAD_LOCAL.set(connection);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return connection;
    }
//开启事务
    public static void begin(){
        Connection connection = null;
        try {
            connection = getConnection();
            connection.setAutoCommit(false);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }
    public  static void commit(){
        Connection connection = null;
        try {
            connection = getConnection();
            connection.commit();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
           closeAll (connection,null,null);
        }
    }
    public  static void rollback(){
        Connection connection = null;
        try {
            connection = getConnection();
            connection.rollback();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            closeAll (connection,null,null);
        }
    }
    public static void closeAll(Connection connection, Statement statement, ResultSet resultSet){
        try {
            if(resultSet != null){
                resultSet.close();
            }
            if (statement!=null){
                statement.close();
            }
            if(connection!=null){
                connection.close();
                THREAD_LOCAL.remove();
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

}


database.properties

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/emp?useSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8
username=root
password=111111
initialSize=10
maxActive=20
minIdle=5
maxWait=3000

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
<form action="/empproject/manager/EmpManagerLoginController" method="post">
    用户名:<input type="text" name="username"> <br/>
    密码:<input type="password" name="password"> <br/>
    验证码:<input type="text" name="inputVcode"><img src="/empproject/createCode"/> <br/>
    <input type="submit" value="登录">


</form>

</body>
</html>

create database emp;
use emp;
create table empManager(
username varchar(20) not null,
password varchar(20) not null

)charset=UTF8;
insert into empManger(username,password) values('tom',123);
select * from empmanger;

运行结果及报错内容

能正确进入html界面,但输入数据库中数据时,无法完成正确跳转
输入正确数据

img


输入后还是弹回这个界面

img

我的解答思路和尝试过的方法
我想要达到的结果

正常登录,到showallempmanager中查看输出

  • 写回答

2条回答 默认 最新

  • piaoyiren 2022-02-19 17:48
    关注

    远程看看吧,可以吗?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月27日
  • 已采纳回答 2月19日
  • 创建了问题 2月19日

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料