需准备:
【jdbc驱动包】
【Tomcat】
【mysql】
一、创建数据库
新建user数据库并创建userinfo表,表的属性包括id、username、password。
在表中添加四个用户。
二、JDBC连接数据库
把JDBC驱动包放在lib目录下,并刷新项目,防止项目读取不到驱动包
新建一个 DBUtil类:
需要注意的是String ip的user是创建的数据库名,String username是Mysql登陆账号,String password是Mysql登陆密码。
业务逻辑:编写一个 loginCheck( ) 方法接收用户输入的账号密码,return true 或者 false 给 servlet 作进一步处理。
注意sql查询语句的组装,select * from userinfo where username='xxxx' and password='xxxxx'
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.jdbc.Driver;
public class DBUtil {
public static Connection getConnection(){
Connection conn = null;
String ip = "jdbc:mysql://localhost:3306/user";
String username = "root";
String password = "123456";
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(ip, username, password);
return conn;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch(SQLException e){
e.printStackTrace();
}
return null;
}
public static boolean loginCheck(String username, String password){
boolean status = false;
Connection conn = getConnection();
Statement stmt = null;
ResultSet rs = null;
try {
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from userinfo where username= '" + username + "' and password= '" + password + "'" );
if (rs.next()) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
conn.close();
stmt.close();
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return status;
}
public static void main(String[] args) {
Connection conn = getConnection();
if (conn != null) {
System.out.println("success");
}else{
System.out.println("fauled");
}
}
}
三、创建servlet
业务逻辑:使用getParameter( )方法获取从页面提交的账号、密码,调用 loginCheck( ) 方法传递给DBUtil类进行账号密码的验证,如果返回true,则跳转到index.jsp 页面,否则跳转回 login.jsp 页面。
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ServletCheck
*/
@WebServlet("/ServletCheck")
public class ServletCheck extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ServletCheck() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
//通过HttpServletRequest工具类从网页获取username、password数据
String username = request.getParameter("username");
String password = request.getParameter("password");
if (DBUtil.loginCheck(username, password)) {
//servlet将页面跳转到主页
request.getRequestDispatcher("/index.jsp").forward(request, response);
}else{
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
}
需要在jsp网页中form表单关联servlet文件:
输入数据库中任意一个账号密码即可登陆成功: