servlet登录mysql数据库_Servlet入门----连接MySql数据库,实现登录验证操作

本文介绍了一个使用Servlet、JSP和MySQL构建的简单登录应用程序。通过创建数据库表、User类、DBDao连接数据库类、UserDao数据库操作类以及LoginServlet处理请求,实现了用户登录验证的功能。当用户名和密码匹配时,用户被重定向到LoginSuccess.jsp,否则重定向到LoginFailed.jsp。
摘要由CSDN通过智能技术生成

连接数据库,实现登录验证

一个简单的运用Servlet+JSP+MySQL的登录小程序!

工程目录结构如下图所示:

0e4cb57f51adf40fdb52a2d069629484.png

第一步:创建数据库login,新建登录表login_info,表内包含两个字段:

username和password。

PS:我是用的Navicat for MySQL工具建的表,省时省力哈哈

第二步:构建User.java类,存放username和password.代码如下:

package com.nantian.user;

/*

* 用户登录类,定义基本属性用户名和密码

*/

public class User {

private String username;

private String password;

public String getUsername(){

return this.username;

}

public void setUsername(String username){

this.username = username;

}

public String getPassword(){

return this.password;

}

public void setPassword(String password){

this.password = password;

}

}

第三步:编写连接数据库的类:DBDao.java;代码如下:

package com.nantian.dao;

import java.sql.*;

public class DBDao {

private static String USER = "root";

private static String PASSWORD = "root";

private static String DB_URL = "jdbc:mysql://localhost:3306/login";

private static String DB_DRIVER = "com.mysql.jdbc.Driver";

// private static String SQL = "";

private static Connection connection = null;

//连接数据库

public static Connection getConnection(){

try {

Class.forName(DB_DRIVER);

connection = DriverManager.getConnection(DB_URL, USER, PASSWORD);

} catch (Exception e) {

System.out.println("数据库连接异常");

e.printStackTrace();

}

return connection;

}

public static void closeConnection(Connection connection){

if(connection != null){

try {

connection.close(); // 关闭数据库连接

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

第四步:编写数据库操作类:UserDao.java;代码如下:

package com.nantian.dao;

import java.sql.*;

import java.sql.ResultSet;

import com.mysql.jdbc.PreparedStatement;

import com.nantian.user.User;

public class UserDao {

User user = null;

private String SQL ="";

public User login(String username, String password){

SQL = "select * from login_info where username = ? and password = ?";

Connection connection = null;

PreparedStatement pstmt = null;

try {

connection = DBDao.getConnection();

pstmt = (PreparedStatement) connection.prepareStatement(SQL);

//这里的意思将用户名和密码填到SQL语句的问号处

pstmt.setString(1, username);

pstmt.setString(2, password);

ResultSet rSet = (ResultSet) pstmt.executeQuery();//得到数据库的查询结果,一个数据集

//判断结果集是否有效

if(rSet.next()){

user = new User();

user.setUsername(rSet.getString("username"));

user.setPassword(rSet.getString("password"));

}

connection.close();

pstmt.close();

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}finally{

DBDao.closeConnection(connection);

}

return user;

}

}

第五步:编写Servlet类:LoginServlet.java;代码如下:

package com.nantian.login.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.nantian.dao.UserDao;

import com.nantian.user.User;

public class LoginServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setCharacterEncoding("GBK");

//获取用户名和密码

String username = request.getParameter("username");

String password = request.getParameter("password");

//获取UserDao实例

UserDao userDao = new UserDao();

User user = userDao.login(username,password);

// 判断user是否为空

if(user != null){

// 转发到LoginSuccess.jsp页面

// getRequestDispatcher()是请求转发

request.getRequestDispatcher("LoginSuccess.jsp").forward(request, response);

}else{

// 登录失败

request.getRequestDispatcher("LoginFailed.jsp").forward(request, response);

}

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

}

第六步:编写login.jsp,LoginSuccess.jsp,LoginFailed.jsp

login.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

登录界面

if(form.username.value == ""){

alert("用户不能为空!");

return false;

}

if(form.password.value == ""){

alert("密码不能为空!");

return false;

}

}

用户名:

密码:

登录角色:

普通用户

管理员

PS:角色这里并没有用,就是一个权限管理的意思,没做。

LoginSuccess.jsp

登陆成功

欢迎您!!!

LoginFailed.jsp

登录失败

登录失败,请返回重新登录

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值