2024年八个步骤实现一个Web项目(在线聊天室),前端内存优化面试

最后

四轮技术面+一轮hr面结束,学习到了不少,面试也是一个学习检测自己的过程,面试前大概复习了 一周的时间,把以前的代码看了一下,字节跳动比较注重算法,面试前刷了下leetcode和剑指offer, 也刷了些在牛客网上的面经。大概就说这些了,写代码去了~

祝大家都能收获大厂offer~

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

篇幅有限,仅展示部分内容

        //表示查询不为空,用户信息存在
        //result.setOk(false); 初始的布尔值为false所以可以不用给设置
        result.setReason("账号或者昵称已存在");
    }else {
        //表示查询为空,执行数据库的插入信息功能
        int n= UserDao.insert(user);
        result.setOk(true);
    }
   //接下来应该返回HTTP响应给前端数据
    resp.setContentType("application/json; charset=utf-8");
    //需要将java对象转为json的形式
    String body=WebUtil.Write(result);
    resp.getWriter().write(body);
}

}


#### 第五步:对于数据库三个类的JDBC操作实现


##### (1)对于用户表的工具类实现


在实现数据存储到数据库中时需要去开发UserDao这个实体类用来存放用户信息到数据库,因此对于user用户表的查询,插入,修改操作是经常性的需要去进行完成。所以在这个user用户表的工具类中实现了对于插入、查询、修改的操作方法。  
 实现的代码如下:



//用户表数据库相关的操作
public class UserDao {

//注册:检查账号、昵称是否存在 实现JDBC操作
public static User checkIfExist(String username,String nickname){
    Connection c=null;
    PreparedStatement preparedStatement=null;
    ResultSet rs=null;
    try {
        c= DBUtil.getConnection();
        String sql="select \* from user where username=?";
        if (nickname!=null){
            sql+="or nickname=?";
        }
        //将上面的预编译的的占位符进行替换数据
        preparedStatement=c.prepareStatement(sql);
        preparedStatement.setString(1,username);
        if (nickname!=null){
        preparedStatement.setString(2,nickname);
        }
        //执行查询操作,返回结果集进行接收
        rs=preparedStatement.executeQuery();
        //准备查询的User对象
        User queryUser=null;
        while (rs.next()){
            queryUser=new User();
            //将结果集的字段设置到属性中
            Integer id=rs.getInt("id");
            String loginNickname=rs.getString("nickname");
            String password=rs.getString("password");
            String head=rs.getString("head");
            java.sql.Timestamp logoutTime=rs.getTimestamp("logout\_time");
            queryUser.setId(id);
            queryUser.setUsername(username);
            queryUser.setPassword(password);
            queryUser.setNickname(loginNickname);
            queryUser.setHead(head);
            if (logoutTime!=null){
                //考虑数据是不是为空的情况
                long l=logoutTime.getTime();
                queryUser.setLogoutTime(new java.util.Date(l));
            }
        }
        return queryUser;
    } catch (SQLException e) {
        throw new RuntimeException("注册检查账号昵称是否存在JDBC出现错误",e);
    }finally {
        DBUtil.close(c,preparedStatement,rs);
    }
}


public static int insert(User user) {
     Connection c=null;
     PreparedStatement ps=null;
    try {
        c=DBUtil.getConnection();
        String sql="insert into user (username,password,nickname,head)"+" values(?,?,?,?)";
        //进行预编译
        ps=c.prepareStatement(sql);
        //替换占位符
        ps.setString(1, user.getUsername());
        ps.setString(2, user.getPassword());
        ps.setString(3, user.getNickname());
        ps.setString(3, user.getHead());
        return ps.executeUpdate();
    } catch (SQLException e) {
        throw new RuntimeException("插入数据时出现错误",e);
    }finally {
        DBUtil.close(c,ps);
    }
}

//数据库修改用户的退出时间jdbc代码
public static int updateLogoutTime(User loginUser) {
    Conn
  • 19
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值