先给数据库创建一张user表,并放入两条用户信息
导入所需要的jar包,放在WEB-INF下的lib中
编写配置文件,名为c3p0-config.xml,放在src下
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///WEB13?serverTimezone=UTC</property>
<property name="user">root</property>
<property name="password">20190222</property>
</default-config>
编写DataSourceUtils工具类
package cn.aynortechnology.utils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DataSourceUtils {
private static ComboPooledDataSource ds=new ComboPooledDataSource();
/**
* 获取数据源
* @return 连接池
*/
public static DataSource getDataSource(){
return ds ;
}
/**
* 释放资源
* @param conn
* @param st
* @param rs
*/
public static void CloseResource(Connection conn,Statement st , ResultSet rs){
closeResultSet(rs);
closeStaement(st);
closeConn(conn);
}
/**
* 获取连接
* @return 连接
* @throws SQLException
*/
public static Connection getConnection() throws SQLException{
return ds.getConnection();
}
/**
*释放连接
* @param conn
* 连接
*/
public static void closeConn(Connection conn){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
conn = null ;
}
}
}
/**
* 释放语句执行者
* @param st
* 语句执行者
*/
public static void closeStaement(Statement st){
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
st = null ;
}
}
}
/**
* 释放结果集
* @param rs
* 结果集
*/
public static void closeResultSet(ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs = null ;
}
}
}
}
编写用户类
package cn.aynortechnology.domain;
public class User {
private int id;
private String username;
private String password;
private String email;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + ", email=" + email + "]";
}
}
编写前端登陆界面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/WEB13/login" method="post">
用户名:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
<input type="submit" value="登录"><br/>
</form>
</body>
</html>
编写用户登录代码
package cn.aynortechnology.login;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import cn.aynortechnology.domain.User;
import cn.aynortechnology.utils.DataSourceUtils;
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//username=user1&password=password1
//1.获得用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
//2.从数据库中验证该用户名和密码是否正确
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
String sql = "select * from user where username=? and password=?";
User user = null;
try {
user = runner.query(sql, new BeanHandler<User>(User.class), username,password);
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
//3.根据返回的结果给用户不同显示信息
if(user!=null) {
//用户登陆成功
response.getWriter().write(user.toString());
}else {
//用户登录失败
response.getWriter().write("sorry your username or password is wrong...");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
发布、找到前端文件夹,输入用户名密码并点击登录
如果网页返回错误500大多是因为缺少jar包
如果网页一直在加载大多数是因为配置文件出错导致浏览器一直等待数据库响应
本文章分为六篇,其他部分请点击跳转
什么是Servlet,Servlet快速入门,完成使用用户名密码登录的校验(页码S1)
Servlet的API和生命周期(页码S2)
Servlet的配置(页码S3)
实现用户登录功能(页码S4)
ServletContext对象(Servlet上下文对象)(页码S5)
统计用户登录人次(页码S6)