전체 글

전체 글

    [Hi Planner] 메시지 가져오기(All elements are null 해결)

    [Hi Planner] 메시지 가져오기(All elements are null 해결)

    일정 관리 기능을 구현하는 것이 주목적이지만 메신저 기능을 구현하고 싶어서 새로운 테이블을 하나 만들었다. ▷ 메시지 테이블 CREATE TABLE MESSAGE( MES_NO NUMBER(10) PRIMARY KEY, MES_CON VARCHAR2(1000 CHAR) NOT NULL, WDATE DATE DEFAULT SYSDATE, READ_CHECK VARCHAR2(1 CHAR) DEFAULT 'N', SEND_ID VARCHAR2(20 CHAR) NOT NULL, RECV_ID VARCHAR2(20 CHAR) NOT NULL, CONSTRAINT FK_SEND_ID FOREIGN KEY(SEND_ID) REFERENCES MEMBER(ID) ON DELETE CASCADE , // 보낸 사람이 탈..

    예외처리(Exception Handling)

    예외처리(Exception Handling)

    프로그램이 어떤 원인에 의해 오작동하거나 비정상적으로 종료되는 경우가 있다. 이 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생 시점에 따라 '컴파일 에러'와 '런타임 에러'로 나눌 수 있다. 컴파일 에러 : 컴파일할 때 발생하는 에러. 런타임 에러 : 실행 시에 발생하는 에러. 컴파일러가 .java에 대해 오류가 없다면 .class파일을 생성하고 생성된 .class파일을 실행할 수 있게 되는 것이다. 하지만 컴파일을 마쳤다고 해서 실행 시에도 에러가 발생하지 않는 것은 아니다. 컴파일러는 실행 시 발생할 수 있는 잠재적인 오류까지 검사할 수 없다. 그래서 이런 런타임 에러를 방지하기 위해 모든 경우의 수를 고려하에 대비하는 것이 필요하다. 자바에서 실행 시 발생할 수 있는 오류를 ..

    [Hi Planner] 다른 일정 조회하기.

    [Hi Planner] 다른 일정 조회하기.

    오늘 드디어 구현하고 싶었던 기능을 만들어냈다. '플래너'를 만드는 것이기 때문에 우리가 흔히 사용하는 달력을 만들어서 일정을 추가하면 해당 일에 일정이 나타나도록 할까 했지만 그것보다 위처럼 나오되 1주일 단위가 아닌 하루 단위로 나오게 하고 싶었다. 그래서 오늘 날짜에 맞춰 일정이 나오도록 하는 것 어렵지 않았으나 비동기 통신을 이용해서 어제 일정을 가지고 오려고 하니 조금 어려웠다. 그래서 그 비동기 통신을 이용해서 어제 일정을 가져오는 기능을 구현한 과정을 포스팅해보려고 한다. 로그인을 하고 메인 화면으로 들어오면 memberService에서 localDate로 현재 날짜를 가져오고 String으로 형변환한 다음에 쿼리문에 사용할 변수로 넣어준다.(날짜인데 String으로 변환해준 이유는 MEMO..

    객체 지향 프로그래밍에 대해 묻는다면 ?

    이전 포스팅에서 Java의 동작 순서에 포스팅을 하면서 Java의 대표적인 특징인 객체 지향 언어라는 점을 생각해보게 되었다. 과연 나는 누군가가 '객체 지향 언어가 뭐죠?'라는 묻는 질문에 어떻게 대답을 해야 할지 고민해봤다. 명확하게 이런 것이라고 말은 못 해도 대충 두리뭉실하게 설명은 할 수 있을 것 같다. 하지만 면접장에서는 다르다. 면접관의 질문에 명확하게 대답을 해야 한다라고 생각하는 바 포스팅하게 되었다. 서론이 너무 길었으니 바로 본론으로 들어가자! 객체 지향 프로그래밍(OOP : Object Oriented Programming) 객체 지향 프로그래밍이라는 숲을 보기 전에 객체라는 나무를 먼저 보도록 하자. 객체는 클래스(class)가 실제로 구현된 인스턴스(instance)를 말한다. ..

    백준 5397. 키로거(JAVA)

    백준 5397. 키로거(JAVA)

    ○ 문제 요약 창영이가 강산이의 비밀번호를 알아낼 수 있도록 도와주자! ○ 문제 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int L = Integer.parseInt(br.readLine()); for(int i = 0 ; i < L; i++){ String st..

    Java는 어떻게 동작하지?( + 메모리 영역)

    Java는 어떻게 동작하지?( + 메모리 영역)

    Java란? Java는 프로그램을 만드는 프로그래밍 언어 중 하나이자 대표적인 객체지향 언어이다. 운영체제와 상관없이 JVM(Java Virtual Machine)만 있으면 코드를 실행할 수 있다. 가비지 컬렉션이 존재하기 때문에 사용자가 일일이 메모리를 관리해주지 않아도 자동으로 사용하지 않는 메모리를 해체해준다. JVM(Java Virtual Machine)이란? JVM은 자바의 Byte 코드를 OS에 맞게 실행해주는 역할을 수행한다.( 그래서 CPU나 OS에 상관없이 실행할 수 있게 해 준다.) 우리가 Java로 코드를 작성하면 이건 인간끼리만 알아볼 수 있지 컴퓨터는 하나도 읽을 수 없다. 그래서 Java 코드를 컴퓨터가 읽을 수 있게 기계어로 변환하는 작업을 '컴파일'이라고 한다. Java 동작..

    캐시(Cache)

    캐시(Cache)

    저번 포스팅에서 세션과 쿠키에 대해 알아보았다. 그런데 우리가 인터넷을 사용하다 보면 '캐시'라는 말도 들어본 적이 있는 거 같다. 그래서 오늘은 '캐시'에 대해 알아보려고 한다. (이 글은 인프런 김영한 님의 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 듣고 정리한 내용입니다.) 캐시(Cache) 캐시는 자주 사용하는 데이터나 값을 미리 복사해놓은 임시 장소를 가리킨다. 캐시가 없을 때, 클라이언트가 이미지 파일을 요청하면 서버가 HTTP 헤더와 HTTP 바디를 응답해준다. 그리고 바로 또다시 같은 파일을 요청하면 처음 요청할 때와 마찬가지로 동일한 크기의 HTTP 헤더와 HTTP 바디를 응답해준다. ○ 캐시가 없으면 ? 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야..

    [Hi Planner] login 화면

    [Hi Planner] login 화면

    ○ login.jsp Login ID Password &nbsp ID와 비밀번호를 입력 후 로그인 버튼을 누르면 /member/loginProc.do 요청을 하게 된다. ○ MemberController.java @Controller @RequestMapping("/member") @RequiredArgsConstructor public class MemberController { private final MemberService memberService; @RequestMapping("/loginProc.do") public ModelAndView loginDo(ModelAndView mv, Member member, HttpSession session, RedirectView rv){ int coun..

    쿠키와 세션

    공부를 하다가 '쿠키'에 대한 것을 알게 되었다. 웹 프로그래밍 공부를 하기 전에도 '쿠키'라는 것을 들어보았지만 관심이 없어서 지나갔지만 '세션'이라는 것도 사용해보고 '쿠키'라는 것을 배우면서 문뜩 둘의 차이를 알고 싶어 져서 이 글을 쓰게 됐다. HTTP 이 글은 인프런 김영한 님의 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 바탕으로 정리한 내용입니다. 그럼에도 잘못된 내용을 댓글로 남겨주신다면 빠르게 수정하도록 하겠습니다. HTTP (Hyper gwamssoju.tistory.com HTTP는 비연결성과 무상태성(Stateless)이라는 특징을 가지고 있다.(이밖에 다른 특징도 가지고 있다.) 비연결성이라고 하면 요청이 들어오면 연결을 했다가 응답을 해줌과 동시에 연결을 끊는다. 그래서..

    백준 1697. 숨바꼭질 (JAVA)

    백준 1697. 숨바꼭질 (JAVA)

    ○ 문제 요약 수빈이가 동생의 위치로 간다고 할 때, 가장 적은 시간이 걸리는 방법의 시간을 출력해라. ○ 문제 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st ; st = new StringTokenizer(br.readLine()); int..