为了方便,就不另外使用服务层了,直接使用Dao进行操作。
首先我们要创建一个连接数据库的工具类,用这个工具类进行对数据库的链接和关闭连接操作。代码如下:
JdbcUtis
package com.utils;
import java.sql.*;
public class JdbcUtil {
private static final String USER = "root";//用户
private static final String PASSWORD = "root";//密码
static final String DRIVER="com.mysql.jdbc.Driver";//数据库驱动
static final String URL="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8";//数据库地址
private static Connection conn;
//加载数据库驱动
static{
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取连接的方法
public static Connection getConnection(){
try {
return conn = DriverManager.getConnection(URL,USER,PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
/**
* 关闭链接
* @param conn
* @param pst
* @param rs
*/
public static void Close(Connection conn, PreparedStatement pst, ResultSet rs){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pst!=null){
try {
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
然后我们要创建一个专门用于用户对数据库进行操作的类,当然,现在我们只需要写两个功能就可以啦。代码如下:
UserDao
package com.dao;
import com.utils.JdbcUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDao {
private Connection conn = JdbcUtil.getConnection();
private PreparedStatement pst = null;
private ResultSet rs = null;
/**
* 登录功能
* @return
*/
public boolean Login(String name,String password){
try{
pst = conn.prepareStatement("select count(*) from users where name = ? and password = ? ");
pst.setString(1,name);
pst.setString(2,password);
rs = pst.executeQuery();
while(rs.next()){
int anInt = rs.getInt(1);
if(anInt>0){
return true;
}
}
}catch (SQLException e){
e.printStackTrace();
}finally {
JdbcUtil.Close(conn,pst,rs);
}
return false;
}
/**
* 新增用户
* @param name
* @param password
* @return
*/
public boolean add(String name,String password){
try{
pst = conn.prepareStatement("insert into users(name,password) values(?,?)");
pst.setString(1,name);
pst.setString(2,password);
int i = pst.executeUpdate();
if(i>0){
return true;
}
}catch (SQLException e){
e.printStackTrace();
}finally {
JdbcUtil.Close(conn,pst,rs);
}
return false;
}
}
接下来就是编写我们的servlet了…为了方便理解查看,我将两个功能分成了两个servlet
LoginSerlvet(用户登录)
package com.servlet;
import com.dao.UserDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//统一编码格式,防止前端传过来的数据乱码
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//前端传过来的用户名和密码
String name = request.getParameter("name");
String password = request.getParameter("password");
//用户登录功能
UserDao dao = new UserDao();
boolean login = dao.Login(name, password);
if(login){//登录成功
request.getRequestDispatcher("user.jsp").forward(request,response);
}else{//登录失败
response.sendRedirect("fail.jsp");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
addServlet(用户注册)
package com.servlet;
import com.dao.UserDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/AddServlet")
public class AddServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//统一编码格式,防止前端传过来的数据乱码
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//前端传过来的用户名和密码
String name = request.getParameter("name");
String password = request.getParameter("password");
//用户注册
UserDao dao = new UserDao();
boolean add = dao.add(name, password);
if(add){//注册成功
request.getRequestDispatcher("login.jsp").forward(request,response);
}else{//注册失败
response.sendRedirect("fail.jsp");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
前端代码
登录页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/LoginServlet" method="post">
<input type="text" name="name"><br>
<input type="password" name="password"><br>
<input type="submit" value="go">
</form>
</body>
</html>
注册页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/AddServlet" method="post">
<input type="text" name="name"> <br>
<input type="password" name="password"> <br>
<input type="submit" value="go">
</form>
</body>
</html>
希望能对你有所帮助!