본문 바로가기

Java

(41)
[Spring] 페이징 처리(dto, mapper) - MyBatis는 SQL을 그대로 사용할 수 있기 때문에 인라인뷰를 이용하는 SQL을 작성하고, 필요한 파라미터를 지정하는 방식으로 페이징 처리를 할 수 있다. - 페이징 처리를 위해서 SQL을 실행할 때 몇 가지 파라미터가 필요하다. (페이지번호, 한페이지당 몇 개의 데이터를 보여줄 것인지) * XML의 CDATA 섹션은 XML에서 사용할 수 없는 부등호를 사용하기 위함인데, XML을 사용할 경우에는 ''는 태그로 인식하기 때문에 이로 인해 생기는 문제를 막기 위함이다. (< 나 &gy; 와 같은 특수 문자를 사용할 수도 있다.) 페이징 화면처리 ✓ 페이징 처리할 때 필요한 정보들 ∙ 현재 페이지 번호(page) ∙ 이전과 다음으로 이동 가능한 링크의 표시 여부(PREV, NEXT) ∙ 화면(view..
[Spring] @RestController의 반환 타입 @RestController는 메서드의 반환 타입으로 사용자가 정의한 클래스 타입을 사용할 수 있고, 이를 JSON이나 XML로 자동으로 처리가 가능하다. 1) 단순 문자열 반환 - @Controller는 문자열을 반환하는 경우에는 JSP파일의 이름으로 처리하지만, @RestController의 경우에는 순수한 데이터가 된다. - @GetMapping에 사용된 produces 속성은 해당 메서드가 생상하는 MIME타입을 의미한다. 문자열로 직접 지정할 수도 있고, 메서드 내의 MediaType이라는 클래스를 이용할 수도 있다. MIME이란 무엇인가? MIME이란 무엇인가? MIME이란? Multipurpose Internet Mail Extensions의 약자로 간략히 말씀을 드리면 파일 변환을 뜻한다고..
[Spring] REST + @RestController 정리, 설정 REST(Representational State Transfer) - 하나의 URI(Uniform Resource Identifier)는 하나의 고유한 리소스(Resource)를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 작업을 지정한다. - 예를 들어 '/board/123'은 게시물 중에서 123번이라는 고유한 의미를 가지도록 설계하고, 이에 대한 처리는 GET, POST 방식과 같이 추가적인 정보를 통해서 결정한다. ✓ REST 방식의 데이터 처리를 위한 여러 종류의 어노테이션 어노테이션 기능 @RestController Controller가 REST 방식을 처리하기 위한 것임을 명시 @ResponseBody 일반적인 JSP와 같은 뷰로 전달되는 게 아니라 데이터 자체를 전달하기 위한 ..
[Spring] Transaction 정리, 설정 Transaction - 비즈니스에서는 쪼개질 수 없는 하나의 단위 작업을 말할 때 '트랜잭션(Transaction)'이라는 용어를 사용한다. - 사전적인 의미로 트랜잭션은 '거래'라는 뜻을 가지지만, 현실적으로는 '한 번에 이루어지는 작업의 단위'를 트랜잭션으로 간주한다. ACID원칙 원자성(Atomicity) 하나의 트랜잭션은 모두 하나의 단위로 처리되어야 한다. 좀 더 쉽게 말하자면 어떤 트랜잭션이 A와 B로 구성된다면 항상 A, B로 구성된다면 항상 A, B의 처리 결과는 동일 결과이어야 한다. 즉, A는 성공했지만, B는 실패할 경우 A, B 모두 원래 상태로 되돌려져야 한다. 어떤 작업이 잘못되는 경우 모든 것은 다시 원점으로 돌아가야 한다. 일관성(Consistency) 트랜잭션이 성공했다면..
[Spring] AOP 정리 AOP(Asepect-Oriented Programming) - '관점 지향 프로그래밍' 이라는 의미로 번역되는데, 객체지향에서 특정 비즈니스 로직에 걸림돌이 되는 공통 로직을 제거할 수 있는 방법을 제공한다. - AOP를 적용하면 기존의 코드에 첨삭없이, 메서드의 호출 이전 혹은 이후에 필요한 로직을 수행하는 방법을 제공한다. - AOP는 흔히 '관점 지향 프로그래밍'이라는 용어로 번역되는데, 이때 '관점(Aspect)'이라는 용어는 개발자들에게 '관심사(concern)'이라는 말로 통용된다. '관심사'는 개발 시 필요한 고민이나 염두에 두어야 하는 일이라고 생각할 수 있는데, 코드를 작성하면서 염두에 두는 일들을 주로 다음과 같다. ∙ 파라미터가 올바르게 들어왔을까? ∙ 이 작업을 하는 사용자가 적절..
[Spring] Controller의 Exception처리, @ControllerAdvice - Controller를 작성할 때 예외 상황을 고려하면 처리해야 하는 작업이 엄청나게 늘어날 수 밖에 없다. - 스프링 MVC에서는 이러한 작업을 다음과 같은 방식으로 처리할 수 있다. ∙@ExceptionHandler와 @ControllerAdvice를 이용한 처리 ∙@ResponseEntity를 이용하는 예외 메시지 구성 @ControllerAdvice - AOP(Aspect-Oriented-Programming)를 이용하는 방식이다. - Controller를 작성할 때는 메서드의 모든 예외사항을 전부 핸들링해야 한다면 중복적이고 많은 양의 코드를 작성해야 하지만, AOP방식을 이용하면 공통적인 예외사항에 대해서는 별도로 @ControolerAdvice 어노테이션을 이용해서 분리하는 방식이다. [1..
[Servlet/JSP] JSESSIONID??? 정리를 해보면 1) Client가 브라우저에 접속하면 서버에서 Session을 생성을 한다. (서버에 Session이 존재하지 않는다면) 2) 서버는 생성된 Session의 Id값을 Cookie Session(쿠키임)에 담아서 브라우저로 다시 전송한다. 3) 브라우저 메모리에 Session id값이 담긴 Cookie Session이 저장되는데, 이 Cookie의 이름이 바로 JSESSIONID + Tomcat을 통해서 실행되는 WAS가 발행하는 쿠키의 이름이다.
[Servlet/JSP] Cookie와 Session Session Tracking - HTTP 프로토콜 방식으로 통신하는 웹 페이지들은 서로 어떤 정보도 공유하지 않는다. - 사용자 입장에서 웹 페이지 사이의 정보를 공유하려면 SessionTracking이라는 웹페이지 기능을 구현해야한다. 예를 들어서 카트 기능을 사용하는 웹애플리케이션에서 클라이언트(사용자)는 multiple requests를 사용하여 카트에 물건을 담는다. 이 때, 모든 요청이 생성될 때 마다 서버는 물건이 담기는 사용자를 식별해야만 한다. 따라서 SessionTracking이 필요하다. - HTTP 프로토콜은 서버-클라이언트 통신 시 stateless 방식으로 통신을 한다. 즉, 브라우저에서 새 웹 페이지를 열면 기존의 웹 페이지나 서블릿에 관한 어떤 연결 정보도 새 웹페이지에서는 ..
[Eclipse] MAC OS에서 Lombok 라이브러리 설정하기 + 어노테이션 1. 다운로드 link : https://projectlombok.org/download 2. 설치하기 터미널을 실행시키고 저장한 도큐먼트로 이동하여 java -jar lombok.jar 입력한다. Installer가 실행되면 [install / Update]을 클릭해준다. [Quit Installer]을 누르고 빠져나온다. 3. Maven Dependency 설정하기 link : https://mvnrepository.com/ Maven Repository에 접속해서 lombok 검색하고 가장 상위에 있는 Project Lombok을 클릭한다. 가장 다운로드 수가 많은 버젼을 클릭한다. 복사해서 pom.xml에 붙여넣으면 끝! + 설치 후 lombok이 작동안할 때 java -Dlombok.instal..
[Java] 제네릭(Generic) Q. 왜 제네릭을 사용해야 할까? - 제네릭은 클래스와 인터페이스, 그리고 메소드를 정의할 때 타입(type)을 파라미터(parameter)로 사용할 수 있도록 한다. 타입 파라미터는 코드 작성 시 구체적인 타입으로 대체되어 다양한 코드를 생성하도록 해준다. 제네릭을 사용하는 코드가 비제네릭 코드에 비해 가지는 이점? 1. 컴파일 시 강한 타입 체크를 할 수 있다. : 자바 컴파일러는 코드에서 잘못 사용된 타입 때문에 발생하는 문제점을 제거하기 위해 제네릭 코드에 대해 강한 타입 체클르 한다. 실행 시 타입 에러가 나는 것보다는 컴파일 시에 미ㅣ 타입을 강하게 체크해서 에러를 사전에 방지하는 것이 좋다. 2. 타입 변환(casting)을 제거한다. : 비제네릭 코드는 불필요한 타입 변환을 하기 때문에 프..