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用于返回错误的信息:
- error = “账号或密码不能为空”;request.setAttribute(“error”,error);
- error = “账号或密码错误”;request.setAttribute(“error”,error);
- 获取到错误将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,本文有不当的地方欢迎大佬改正。