登录注册注销案例

项目路径:

 

 

项目依赖包:

 

 

 

 

 

 

IUserDao.java

复制代码
package com.exp.dao;

import com.exp.domain.User;

public interface IUserDao {
    
    /*
     * 插入数据
     * @param user
     */
    
    public void insert(User user);
    
    /*
     * 通过用户名和密码查找用户
     * @param username
     * @param password
     */
    
    public User findUser(String username,String password);
}
复制代码

 

UserDaoImpl.java

复制代码
package com.exp.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

import com.exp.dao.IUserDao;
import com.exp.domain.User;
import com.exp.utils.DBUtils;

public class UserDaoImpl implements IUserDao {

    @Override
    public void insert(User user) {
        // TODO Auto-generated method stub
        
        Connection conn = null;
        PreparedStatement ps = null;
        
        //1、注册驱动
        //2、获取connection对象
        try {
            conn = DBUtils.getConnection();
            //3、获取statement对象
            String sql = "insert into t_user(username,password,email,birthday) values(?,?,?,?)";
            //4、设置参数
            ps = conn.prepareStatement(sql);
            ps.setString(1, user.getUsername());
            ps.setString(2, user.getPassword());
            ps.setString(3, user.getEmail());
            ps.setDate(4, new java.sql.Date(user.getBirthday().getTime()));
            //4、执行sql语句 delete/update/insert
            int r = ps.executeUpdate();
            //5、打印执行结果行数
            System.out.println("受影响的结果:"+ r );
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            //5、关闭资源 
            DBUtils.close(null, ps, conn);
        }
    }

    @Override
    public User findUser(String username, String password) {
        User user = null;
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            conn = DBUtils.getConnection();
            //3、获取statement对象
            String sql = "select * from t_user where username= ? and password = ?";
            ps = conn.prepareStatement(sql);
            ps.setString(1, username);
            ps.setString(2, password);
            rs = ps.executeQuery();
            while(rs.next()){
                user = new User();
                user.setId(rs.getInt("id"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                user.setEmail(rs.getString("email"));
                user.setBirthday(rs.getDate("birthday"));
                
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            //5、关闭资源 
            DBUtils.close(rs, ps, conn);
        }
        return user;
    }
    
    /*public static void main(String[] args) {
        //1、创建dao对象
        IUserDao userDao = new UserDaoImpl();
        //2、插入数据
        User user = new User();
        user.setUsername("jack");
        user.setPassword("golang123");
        user.setEmail("6834102@qq.com");
        user.setBirthday(new Date());
        userDao.insert(user);
        //3、查找用户
        User user = userDao.findUser("jack", "golang123");
        System.out.println(user);
    }*/

}
复制代码

 

 

MyDateConverter.java

复制代码
package com.exp.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;

import org.apache.commons.beanutils.Converter;

public class MyDateConverter implements Converter{

    /*
     * convert : 转换
     * 
     */
    
    @Override
    public Object convert(Class type, Object value) {
        // TODO Auto-generated method stub
        String str = (String) value;
        //鎶婂瓧绗︿覆杞垚Date绫诲瀷
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            return sdf.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        //System.out.println("value:" + value);
        return null;
    }

}
复制代码

 

RegisterServlet.java

复制代码
package com.exp.web.servlet;

import java.io.IOException;
import java.util.Date;

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 org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;

import com.exp.dao.IUserDao;
import com.exp.dao.impl.UserDaoImpl;
import com.exp.domain.User;
import com.exp.utils.MyDateConverter;

/*
 * BS 架构
 */

@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1、把请求参数封装成模型
            User user = new User();
            try {
                ConvertUtils.register(new MyDateConverter(), Date.class);
                BeanUtils.populate(user, request.getParameterMap());
                System.out.println("请求参数: "+ user);
                
                //2、调用service
                IUserDao userDao = new UserDaoImpl();
                userDao.insert(user);
            
                //3、响应客户端
                response.setHeader("content-type","text/html;charset=utf-8");
                response.getWriter().write("注册成功,三秒后进入登录页");
                response.addHeader("Refresh", "3;url=login.jsp");
                
            } catch (Exception e) {
                e.printStackTrace();
            }
    }

}
复制代码

 

复制代码
package com.exp.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBUtils {

    private static String url = "jdbc:mysql://localhost:3307/day12";
    private static String user = "root";
    private static String password = "123";
    private static String driverClass = "com.mysql.jdbc.Driver";
    static{
        
        try {
            Class.forName(driverClass);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    
    public static Connection getConnection() throws SQLException{
        return DriverManager.getConnection(url, user, password);
    }
    
    public static void close(ResultSet rs,Statement stmt,Connection conn){
        
        if(rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        if(stmt !=null){
            try {
                stmt.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(conn !=null){
            try {
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}
复制代码

 

 

register.jsp

复制代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页</title>
</head>
<body>
    <form action="${pageContext.request.contextPath}/RegisterServlet"  method='post'>
        <table border='1'>
            <tr>
                <td>设置用户名:</td>
                <td><input name='username' placeholder="请输入用户名"/></td>
            </tr>
            <tr>
                <td>设置密码:</td>
                <td><input name='password' placeholder="请输入密码"/></td>
            </tr>
            <tr>
                <td>邮箱:</td>
                <td><input type='text' name='email'/></td>
            </tr>
            <tr>
                <td>生日:</td>
                <td><input type='text' name='birthday'/></td>
            </tr>
            <tr>
                <td  colspan='2'><input type='submit'  value='提交'/></td>
            </tr>
        </table>    
    </form>
</body>
</html>
复制代码

 

posted @   expworld  阅读(157)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示