Programming 13

[CS 기초] 객체 지향 프로그래밍(OOP)의 4가지 속성

객체 지향 프로그래밍(Object-Oriented Programming):컴퓨터 프로그램을 여러 '객체(Object)'들의 모임으로 보고, 이 객체들이 서로 상호작용하도록 만드는 프로그래밍 패러다임(설계 사상) → 기능별로 각 컴포넌트(부품)을 만들고, 해당 컴포넌트들을 조립하는 프로그래밍 방식. [ 캡슐화, 상속, 다형성, 추상화 ] 이 네 가지 속성을 가지고 있음.캡슐화:관련된 데이터와 기능을 하나로 묶고, 외부의 직접적인 접근을 막아 정보를 은닉하는 것 특징:- 데이터의 기능과 통합: 객체라는 하나의 캡슐 안에 관련된 데이터(속성, 변수)와 그 데이터를 처리하는 기능을 포함시킴- 정보 은닉: 객체 내부의 중요한 데이터는 외부에서 직접 접근하지 못하도록 막고(private), 공개된 메서드(publi..

Programming 2025.06.19

[Spring] Gmail SMTP를 이용하여 이메일 인증 구현 - 인증코드 검증

// EmailServicepublic boolean checkAuthCode(String email, String authCode) { String storedAuthCode = service.getAuthCode(email); return storedAuthCode != null && storedAuthCode.equals(authCode);}사용자에게 입력받은 인증코드와 DB에 저장된 인증코드가 일치하는지 확인하는 메서드이다.두 문자열의 데이터가 일치하는지 확인하고 싶을 때엔 == 연산자가 아닌 equals()를 사용한다. == : 객체의 주소를 비교하여 일치 여부를 확인equals() : 객체 내부의 데이터를 비교하여 일치 여부를 확인// MemberServicepublic String getAu..

Programming/Java 2025.03.24

[Spring] Gmail SMTP를 이용하여 이메일 인증 구현 - 이메일 발송 프로그램(2)

DROP TABLE authCode CASCADE CONSTRAINTS;CREATE TABLE authCode ( authCodeNo NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, -- 자동 증가 기본 키 email VARCHAR2(255) NOT NULL, authCode VARCHAR2(6) NOT NULL, expireTime DATE NOT NULL -- 만료 시간);DB에 authCode 테이블을 생성한다. 인증코드가 DB에 저장되어 있어야 입력받은 데이터와 실제 인증코드가 일치하는지 확인이 가능하다.@Service@Log4jpublic class MemberService { @Autowired private SqlSess..

Programming/Java 2025.03.21

[Spring] Gmail SMTP를 이용하여 이메일 인증 구현 - 이메일 발송 프로그램(1)

@Service@Log4j@Datapublic class EmailService { @Autowired private MemberService service; @Autowired private JavaMailSender mailSender;해당 클래스에는 인증코드를 생성하고, 이메일을 발송하고,발송한 인증코드를 DB에 저장해 검증해주는 등 프로그램의 핵심 메서드들이 포함되어있다.@Service : Spring에게 해당 클래스가 Service 클래스임을 알려주는 어노테이션@Log4j : log.info(), log.error() 등 로그를 출력해주는 어노테이션@Data : setter(), getter(), toString()을 자동으로 생성해주는 Lombok 라이브러리..

Programming/Java 2025.03.21

[Spring] Gmail SMTP를 이용하여 이메일 인증 구현 - 데이터의 흐름

STS4Legacy ProjectJAVA 1.8Oracle SQLTomcat9Mybatis jdbc SqlSessionFactory 사용** Gmail SMTP 설정을 모두 끝마쳤어야함.  1. 회원가입 페이지에서 이메일 인증 요청사용자 액션: 회원가입 폼에서 이메일 입력 후 "인증 코드 발송" 버튼 클릭데이터 흐름:signUpForm.jsp의 Ajax 요청MemberController의 requestEmailAuth()EmailService의 authCodeSendEmail()랜덤 인증코드 생성(authCode())이메일 발송(sendEmail())MemberService의 insertAuthCode()memberMapper.xml의 insertAuthCode 태그DB의 AUTHCODE 테이블에 저장 ..

Programming/Java 2025.03.21

[Spring] Gmail SMTP를 이용하여 이메일 인증 구현 - 설정

이메일 인증 코드 발송 프로그램을 구현하기 위해서는 SMTP 설정이 필요하다.이번에는 Gmail SMTP를 통해 구현했지만, 기회가 된다면 네이버나 다음 등 다른 SMTP 또한 다뤄볼 예정이다.순서대로만 진행한다면 큰 어려움 없이 설정을 끝마칠 수 있을 것이다.* STS4 Legacy Project로 진행  1. Gmail 톱니바퀴 아이콘 -> 모든 설정 보기  2. 전달 및 POP/IMAP -> 사진과 동일하게 설정  3. 보안 -> 2단계 인증 4. 앱 비밀번호 클릭  5. 앱 비밀번호 생성 6. pom.xml에 dependency 설정 javax.mail mail 1.4.7 org.springframework spring-context-support 5.3.30 7. src/main/res..

Programming/Java 2025.03.21

[Error : Mybatis/jdbc] ORA-12541:접속할 수 없습니다. host (host name) port 1521에 리스너가 없습니다.

프로젝트를 진행하며 DBA를 담당하신 팀원분의 PC로 host를 지정해 해당 DB를 이용하고 있었고, 집에서는 전체 스키마 파일을 공유받아 내용이 동일한 DB를 새로 생성해 해당 DB로 작업을 진행하고 있었다.root-context.xml에 HikariCP에 대한 설정을 작성해두었기에 DBA PC가 host인 jdbcUrl과 localhost가 host인 jdbcUrl 설정 두 가지를 입력해두고 상황에 맞게 주석 처리를 하여 작업해오고 있었는데, 오늘 갑자기 localhost DB로 접속할 수 없다는 오류가 뜨기 시작했다. 구글링과 AI의 도움을 받아 이거저거 시도해보았지만 오류는 해결되지 않았다. 정말 답답했는데 설마하는 마음에 찾아본 mybatis 설정 파일에 HikariCP에 대한 설정이 중복된 상..

Programming/Java 2025.03.15

[Error : Mybatis] typemissmatch 문서 루트 요소 "mapper"은(는) DOCTYPE 루트 "null"과(와) 일치해야 합니다.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in ServletContext resource [/WEB-INF/spring/root-context.xml]: Invocation of init method failed; nested exception is java.io.IOException: Failed to parse config resource: class path resource [mybatis-config.xml] Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQ..

Programming/Java 2025.03.13

[Error : STS4] Several ports (8005, 8080) required by Tomcat v9.0 Server at localhost are already in use / 톰캣 포트 에러

톰캣 서버를 사용하다보면 종종 만나게 되는 에러, 해당 서버의 포트 번호를 이미 사용하고 있다는 메시지를 보여주는데,보통 톰캣 서버를 등록하고 초기값으로 등록되는 8080 포트 번호를 사용할 때 발생한다. 그래서 톰캣 서버를 처음 등록할 때 포트 번호를 변경해줘야 하는데, 나의 경우 이미 포트 번호를 80으로 사용하고 있었기에 포트 번호 자체가 원인이었던 것은 아니다.  아마 바로 직전에 STS 응답 없음 오류를 보고 강제로 어플을 종료 시키느라 서버 종료가 정상적으로 이루어지지 않은 듯 하다. 해결하기 위해 cmd 창을 "관리자 모드"로 실행하고, netstat -ano | findstr 80 을 입력해준다.그리고 출력된 메시지 중, 80번을 찾고 맨 뒤에 위치해있는 PID를 기억한다.* PID는 프로..

Programming/Java 2025.03.08

[JAVA 기초] 04-1. 클래스와 객체 / 생성자와 소멸자, getter(), setter()

자바에서 클래스는 일종의 쿠키틀과 같다고 볼 수 있다. 클래스라는 설계도를 기반으로 만들어진 객체는 그 쿠키틀로 찍어낸 쿠키와 같다고 볼 수 있다.더보기더보기해당 비유는 박응용 저자의 점프 투 파이썬을 인용했다.초보자가 명확하고 간결하게 이해할 수 있는, 좋은 비유라고 생각한다.1. 클래스와 객체클래스 : 객체를 생성하기 위한 설계도.객체 : 클래스를 이용해 만들어진 실제 대상. 인스턴스라고도 부름.public class Cookie { String shape; // 쿠키 모양}public class Main { public static void main(String[] args) { Cookie coo = new Cookie(); // 쿠키틀(클래스)로 쿠키(객체)를 생성 ..

Programming/Java 2025.02.07