목록컴퓨터 언어/Java (3)
Seeeni Tech Diary
스프링없이 백엔드를 구현하라는 지시를 받아서 요즘 계속 쌩자바로만 백엔드를 구현하고 있다. 저번 프로젝트 기간동안 로그인 기능을 구현했었는데, 그때는 회원가입을 하면 입력한 회원정보가 단순히 데이터 베이스에 저장되는 것이었다. 사실 이렇게 하면 보안에 매우 취약하므로 비밀번호 암호화를 해주어야 한다. 그래서 BCrypt를 사용하여 암호화한 비밀번호를 데이터 베이스에 저장해주었다. 1. BCrypt bcrypt는 블로피시 암호에 기반을 둔 암호화 해시 함수다. Bcrypt는 패스워드를 해싱할 때 내부적으로 랜덤한 솔트를 생성한다고 한다. 이때 만든 문자열의 길이는 60이다. 그래서 가장 먼저 암호화된 문자열을 그대로 저장할 수 있도록 테이블의 password 의 최대 길이를 70으로 설정해주었다. 2. p..
0. DBUtil 데이터 베이스 연결 package com.ssafy.sample.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBUtil { private DBUtil() { try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } private static DBUtil instance = new DBUtil(); public static DBUtil getInstance() { return instance; } pu..
1. 추상 클래스 추상 클래스는 해당 클래스를 상속 받는 자손 클래스에서 반드시 재정의가 필요한 클래스이기 때문에 조상 클래스에서의 구현이 무의미하다. 상속전용 클래스라고 이해하면 된다. Java에서는 구현부가 없다는 의미로 조상 클래스 선언부에 abstract를 추가해야 한다. abstract 클래스는 구현부가 없는 메소드가 존재하기 때문에 해당 클래스의 객체를 생성할 수 없고, 상속 받는 자손 클래스는 abstract 메소드를 재정의할 책임이 있다. abstract 클래스는 그 자체로 객체를 생성할 수 없지만 상속을 받는 자식 클래스를 참조하는 것은 가능하다. public abstract class Building { private int floor, room; public void reportBui..