25. 기본형과 참조형, 변수와 초기화 그리고 null
·
Java
1. 기본형과 참조형기본형(Primitive Type): Long, double, boolean 등과 같이 변수에 실제 값을 넣을 수 있는 데이터 타입이다.참조형(Reference Type): heap에 있는 객체(인스턴스)에 접근 하기 위한 주소값을 넣는 데이터 타입이다. 기본형은 바로 값을 사용할 수 있지만 참조형은 주소값을 통해 heap에 접근해야 한다.객체는 .(dot)연산자를 사용해 heap에 저장된 객체에 접근할 수 있다. ex) dog.eat() -> dog에 저장된 객체의 주소값-.(dot)-을 이용해 heap에 있는 eat()에 접근기본형과 참조형 변수 모두 변수에 있는 값을 복사하여 전달한다.2. 기본형과 참조형(메서드)메소드에 파라미터 전달은 기본형의 경우 파라미터에 어떤 연산을 하고..
Spring MVC 예외 처리
·
Spring/스프링 MVC
@ControllerAdvice컨트롤러에서 발생한 예외를 주어진 상황에 맞게 처리한다. 즉 예외처리를 맡김으로써 다른 곳에서는 예외처리 신경 안써도 된다. 이렇게 예외를 처리하는 곳을 전담시키는 이유는 예외처리 관련 기능을 모아두기 위함-역할 분담-이다. @ExceptionHandler특정 타입의 예외를 지정함으로써 특정 예외만 처리한다. 예외에도 종류가 많기 때문에 필요한 예외만 따로 처리하기 위해 존재한다. @ResponseStatusHTTP 응답 상태 코드를 지정하는 역할을 한다. 여기서는 특정 예외에 대한 응답 상태를 지정해 특정 페이지로 가도록 처리하고 있다. 이렇게 응답 상태를 표시하는 이유는 예외 발생 시 상태코드를 전달하기 위함이다.@Log4j2@ControllerAdvice // 컨트롤..
24. 스코프(scope)
·
Java
scope스코프란 영어로 범위를 의미하며 지역 변수의 입장에서는 자신의 생존 범위라고 할 수 있다. 아래의 코드를 보면 x는 if문 블럭 외부에서 호출할려고 하면 안된다. 그 이유는 if문 내에서 선언되어 생존범위가 if문 블럭으로 한정되었기 때문이다. for문 역시도 마찬가지로 for문 블럭으로 생존범위가 한정되어 있다.package scope;public class Scope1 { public static void main(String[] args) { int m = 10; // m 생존 시작 if (true) { int x = 20; // x 생존 시작 System.out.println("if m = " + m); ..
Model과 컨트롤러의 반환 타입 및 View 처리 방식
·
Spring
Model 파라미터model이란 view 단에 데이터를 보내기 위한 바구니와 같다. 바구니기에 바구니에 내가 보내고 싶은 데이터를 넣을 수 있다.넣는 방법은 model.addAttribute(Str key, Obj value)를 사용하여 넣을 수 있다. @GetMapping("/ex4") public void ex4(Model model) { // Model을 통해 뷰 단에 내가 원하는 데이터를 실어 보낼 수 있다. 데이터 형식은 이름, 값 의 형태이다. log.info("-----------------"); // 뷰 단에 전달할 것을 모델에 실음. 서블릿의 request.setAttribute()를 통해 데이터를 실은 것과 동일하다 model.addAttrib..
스프링 MVC의 파라미터 자동 수집 및 변환
·
Spring/스프링 MVC
1. 파라미터 자동 수집이란파라미터 자동수집이란 요청 데이터를 컨트롤러의 메소드 매개변수에 자동으로 바인딩 해주는 기능이다. 좀 더 풀어서 얘기하면 DTO나 VO 등을 메소드의 파라미터로 설정하면 자동으로 전달되는 HttpServletRequest의 파라미터(클라이언트로부터 온 요청 데이터)들을 자동으로 수집(바인딩)하는 기능이다. 문자열, 숫자, 배열, 리스트, 첨부 파일도 수집(바인딩) 가능하다. 기본 자료형의 경우 자동으로 형 변환처리가 가능하다객체 자료형의 경우 settter의 동작을 통해 처리된다객체 자료형의 경우 생성자가 없거나 파라미터가 없는 생성자가 필요하다 2. 단순 타입 매개변수 수집요청 파라미터의 이름과 컨트롤러 메서드의 매개변수 이름이 일치하면 자동으로 값이 바인딩된다.스프링 부트는..
Spring MVC란
·
Spring/스프링 MVC
1. Spring MVC 개념 및 특징Spring MVC란 기존 Web MVC 패턴(MVC2)을 발전시켜 만든 MVC 패턴이다. 기존 MVC 패턴과의 차이점은 다음과 같다. Front Controller(DispatcherServlet) 패턴을 통해 모든 흐름의 사전, 사후 처리가 가능하다. 모든 흐름의 사전 사후 처리가 가능하다는 건 구조 부분의 그림과 같이 요청 및 응답이 Front Controller를 거치니 어떤 처리를 하고 싶다면 할 수 있다는 말이다. 이런 식으로 하나의 객체를 통해 진행되는 것을 디자인 패턴에선 퍼사드 패턴이라 부른다. 어노테이션을 통해 최소한의 코드로 많은 처리가 가능하다.HttpServletRequest와 HttpServletResponse를 사용하지 않아도 된다. 그 이..
MyBatis
·
myBatis
1. MyBatis란Sql Mapping Framework로 SQL의 실행 결과를 자바 객체의 필드에 매핑해준다. 여기서 매핑이란 서로 다른 것들을 연결하는 것을 의미한다. MyBatis는 자바 객체의 필드와 DB 테이블의 속성(attribute)을 연결시킨다. 추가로 바인딩은 어떤 값을 변수에 묶어두는 것이다(bind 뜻 자체도 묶다라는 의미이다) ex) let nickname = "test"; 코드 양 줄어듬: 객체의 필드에 자동으로 연결해주니 개발자가 sql을 실행하고 연결하는 코드를 작성할 필요가 없다. 또한 리소스 예를 들면 Connection 등을 자동 close() 처리 해준다SQL 분리: SQL문을 별도의 파일에 만들어서 실행시킬 수 있다. 물론 어노테이션을 달고 SQL문을 작성하는 것 역..
리스너
·
Web 개발 기초
1. 리스너의 개념 및 용도이벤트: 무언가가 발생했다는 의미로 이벤트 발생 시 이벤트 정보를 담고 있는 이벤트 객체(Event Object)가 생성된다.  ex) 세션 생성, 세션 만료, 속성 추가/수정/삭제 리스너: 특정 이벤트 발생 시 그 이벤트를 감지하 처리하는 것으로 이벤트 핸들러라고도 불린다. ex) 세션을 생성하면 이벤트 리스너를 통해 세션이 생성되었음을 감지   리스너와 유사한 옵저버 패턴: 특정한 변화를 구독(subscribe)하는 객체들을 보관하고 있다가 변화가 발생(발행이라고 표현하며 영어로는 publish)하면 구독 객체들을 실행하는 패턴  2. 서블릿에서 발생하는 주요 이벤트1) 애플리케이션 관련 이벤트웹 애플리케이션이 시작될 때웹 애플리케이션이 종료될 때→ ServletContex..
사용자 정의 쿠키(Cookie)
·
Web 개발 기초
1. 쿠키의 생성 및 전송 개발자가 쿠키 생성 시에 newCookie()를 사용해 생성한다(생성할 때는 name과 value가 필요) value는 일반적인 문자열로 저장이 불가능하기에 URLEncoding된 문자열로 저장해야 한다.(한글 저장은 불가능)브라우저와 서버 사이를 오가기에 보안에 취약오랜 기간 보관해야하는 데이터(사용자 정보 등)은 서버에 보관하고 사소하고 서버에서 보관할 필요가 없는 데이터(최근 본 상품, 오늘 하루 창 닫기)는 쿠키에서 처리 쿠키에서 유효기간 등을 설정해 자동 로그인 처리를 할 수 있음(유효 기간이 존재하면 브라우저가 꺼져도 계속 유지됨. 유효기간 없으면 세션 쿠키로 인지함)쿠키의 유효시간이 지나면 자동으로 삭제됨쿠키 관련 메소드쿠키 생성 및 설정 new Cookie(Str..
세션과 필터
·
Web 개발 기초
1. 무상태에서 과거 기억하기(세션 트렉킹)무상태: 과거의 상태를 유지 x. 이유는 여러 요청 처리 시 자원 소모가 낮기 때문이다.세션: 특정 시점에서의 구간을 의미세션 트랙킹: 무상태를 해결하기 위해 만들어진 것으로 과거에 방문기록(특정 구간에서의 기록)을 찾아 로그인 등의 상태를 유지해주는 것HTTP에선 세션 트랙킹 기술로 쿠키를 사용한다. 쿠키는 문자열로 만들어진 것으로 요청 및 응답 시 주고받는다. 형태는 name:value 구조이다. 쿠키를 주고 받는 과정Browser Server | | | 1. HTTP 요청 | (쿠키 없음) |--------------->| | | | 2. HTTP 응답 | (Se..