javaweb登录系统账号密码验证等

javaweb实现登录系统,登陆系统界面,servlet跳转,登录过程中error错误信息获取

涉及内容(适合初学javaweb者):

  • javaweb
  • MySQL
  • servlet
  • jsp

项目导航
项目导航
运行tomcat定向到login界面:
运行tomcat后,浏览器会默认打开index.jsp页面,需要在index.jsp中添加如下代码,使默认打开login.jsp。

<body>
<jsp:forward page="login.jsp"></jsp:forward>
</body>

用户登录的jsp页面:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: HP
  Date: 2021/10/16
  Time: 22:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
<%
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html; charset=UTF-8");
    //获取登录操作转发的信息
    Object error = request.getAttribute("error");
    System.out.println("error = " + error);
%>
<form action="LoginServlet" method="post">
    <table align="center" width="600px" bgcolor="#f0f8ff" height="320px">
        <tr>
            <th colspan="600px" height="120px" align="center"><font size="5px" color="black">员工信息管理系统</font></th>
        </tr>
        <tr>
            <td colspan="600px" height="50px" align="center"><input type="text" name="name" placeholder="请输入账号"></td>
        </tr>
        <tr>
            <td colspan="600px" height="50px" align="center"><input type="password" name="password" placeholder="请输入密码">
            </td>
        </tr>
        <tr>
            <td align="center"><font color="red"><%=(error == null ? "" : error)%></font></td>
        </tr>
        <tr>
            <th><input type="submit" value="登录"></th>
        </tr>

    </table>
</form>
</body>
</html>

登录界面效果:
登录界面

controller中的loginServlet映射:

package controller;

import dao.EmployeeDao;
import utils.JDBCUtils;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "LoginServlet", value = "/LoginServlet")
public class LoginServlet extends HttpServlet {
    
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    

        //判断登陆信息是否正确
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html; charset=UTF-8");
        //获取表单账号密码
        String name = request.getParameter("name");
        String password = request.getParameter("password");
        System.out.println("name = " + name);
        System.out.println("password = " + password);
        //设置错误信息
        String error;

        if (null==name||null==password||"".equals(name)||"".equals(password)){
    
    
            //告知用户账号或密码不能为空
            error = "账号或密码不能为空";
            request.setAttribute("error",error);
            //把错误信息返回到登录界面
            request.getRequestDispatcher("login.jsp").forward(request, response);

        }else {
    
    
            //校验用户账号或密码是否正确
            EmployeeDao emp = new EmployeeDao();
            boolean flag = emp.loginQuery(name,password);

            if (flag){
    
    
                //登陆成功
                request.setAttribute("name",name);
                System.out.println(name+"登陆成功");
                //重定向到首页
                request.getRequestDispatcher("home_page.jsp").forward(request, response);
            }else {
    
    
                //设置错误信息
                error = "账号或密码错误";
                request.setAttribute("error",error);
                request.getRequestDispatcher("login.jsp").forward(request, response);
            }

        }

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    

        doGet(request, response);
    }
}

验证登录的String error用于返回错误的信息:

  1. error = “账号或密码不能为空”;request.setAttribute(“error”,error);
  2. error = “账号或密码错误”;request.setAttribute(“error”,error);
  3. 获取到错误将error转发到login.jsp

在这里插入图片描述
在这里插入图片描述
Dao层查询账号密码是否正确数据

package dao;

import utils.JDBCUtils;

import java.sql.ResultSet;
import java.sql.SQLException;

public class EmployeeDao {
    
    
    //根据账号密码查询
    public boolean loginQuery(String name,String password){
    
    
        boolean b = false;
        String sqlQuery = "select * from employee where name=? and password=?";
        ResultSet rs = JDBCUtils.query(sqlQuery,name,password);
        try {
    
    
            if (rs.next()){
    
    
                b = true;
            }else {
    
    
                b=false;
            }
        } catch (SQLException throwables) {
    
    
            throwables.printStackTrace();
        }
        return b;
    }
}

utils数据库查询方法

public static ResultSet query(String sql,Object... objs){
    
    
        //预处理
        getConnect();
        try {
    
    
            statement = connection.prepareStatement(sql);
            //判断objs是否为空或为0
            if(objs != null && objs.length > 0){
    
    
                for (int i = 0; i < objs.length; i++) {
    
    
                    statement.setObject(i+1,objs[i]);
                }
            }
            //查询操作
            resultSet = statement.executeQuery();
        } catch (SQLException throwables) {
    
    
            throwables.printStackTrace();
        }

        return resultSet;
    }

gitee代码:https://gitee.com/guo-yc/gyc202/tree/master/src/IDEA/src/Web

写此文主要是想认真总结,主动写代码的逻辑,训练一下自己敲代码的速度,这只是入门,算是一步步记录自己的学习过程,本人也是初学javaweb,本文有不当的地方欢迎大佬改正。

猜你喜欢

转载自blog.csdn.net/m0_51390535/article/details/121067402