본문 바로가기

Programming

(208)
Spring Interceptor HttpSession Login Spring Interceptor HttpSession Login(스프링 인터셉터 HttpSession으로 로그인 처리) HttpSession을 이용하는 로그인처리 웹에서 로그인의 가장 기본적인 방식은 HttpSession 객체를 이용해서 사용자의 정보를 보관하고, 피룡한 경우 사용하거나 수정하는 방식HttpSession의 동작은 실제로 세션 쿠키(session cookie)를 통해서 이뤄지는데, 서버는 필요한 경우 접속한 브라우저에 공유한 세션 쿠키를 전달하고, 매번 브라우저에서 서버를 호출 할 때 세션 쿠키를 같이 가지고 다니기 때문에 이를 마치 열쇠처럼 사용해서 필요한 데이터를 보관한다. 세션 쿠키가 열쇠(key)라면 HttpSession은 열쇠가 필요한 잠금장치가 되어 있는 상자와 유사하다. 이 ..
Spring Interceptor Spring MVC Interceptor (스프링 MVC의 인터셉터)스프링을 이용해서 사용자의 단순 로그인을 처리하는 가장 간단한 방법은 Servlet의 Filter와 유사한 인터셉터(Interceptor)를 활용하는 방법 인터셉터는 웹 애플리케이션 내에서 특정한 URI 호출을 말 그대로 가로채는 역할을 한다. 이를 활용하면 로그인한 사용자만 사용할 수 있는 기능을 제어할 수 있기 때문에 기존 컨트롤러의 로직을 수정하지 않고도, 사전이나 사후에 제어가 가능하다.Filter와 Interceptor의 공통점 Servlet 기술의 Filter와 Spring MVC의 HandlerInterceptor는 특정 URI에 접근할 때 제어하는 용도로 사용 설정은 web.xml에 사용하는 필터의 설정과 유사한 부분이 많..
Spring Transaction Spring의 트랜젝션기본적으로 XML을 사용해서 선언하는 방식과 애노테이션을 활용하는 방식 XML의 경우 별도의 transaction-context.xml 파일을 이용해 XML로 작성해서 처리 애노테이션의 경우 DAO 나 Mapper 등을 이용하는 xxxService 클래스에 애노테이션 처리 트랜잭션에 대한 설명트랜잭션은 하나의 업무에 여러 개의 작은 업무들이 같이 묶여 있는 것을 의미한다. 트랜잭션의 기본 원칙 ACID원자성(Atomicity) - 하나의 트랜잭션은 모두 하나의 단위로 처리돼야한다. 어떤 트랜잭션이 A와 B로 구성된다면, 항상 A, B 처리결과는 동일한 결과여야 한다. 즉 A 는 성공했지만 B는 실패할 경우 A, B는 원래 상태로 되돌려져야만 한다. 어떤 작업이 잘못되는 경우 모든 것..
Spring AOP AOP(Aspect Oriented Programming)기존의 비즈니스 로직외 작성해야 하는 코드를 별도로 분리함으로써 개발자가 좀 더 비즈니스 로직에만 집중해서 처리할 수 있는 방법을 제공사전적 의미로는 "측면 혹은 어떤 도형이나 건물의 면" 의미하지만, 실제 프로그램 개발에서 의미하는 것은 '비즈니스 로직은 아니지만 반드시 해야하는 작업' 공통적이고 반복적인, 그러나 비즈니스 로직의 핵심이 아닌 부분을 처리할때...횡단 관심사(cross-concern)는 시스템의 여기저기에서 공통으로 사용되지만, 그 자체가 목적이 아닌 오히려 시스템의 완성도를 높여주는 역할로 보안처리나 로그, 이중백업등 사용"개발의 핵심적인 비즈니스로직을 개발하는데만 집중하고 나머지 부가적인 기능은 설정을 통해 조정하라" 프록시(..
RestController REST는 Representational State Transfer하나의 URI는 하나의 고유한 리소스(Resource)를 대표하도록 설계된다는 개념이다.서버에 접근하는 기기의 종류가 다양해지면서 다양한 기기에서 공통으로 데이터를 처리할 수 있는 규칙을 만들려고 하는데 이러한 시도가 REST 방식이다. REST 방식은 특정한 URI는 반드시 그에 상응하는 데이터 자체라는 것을 의미하는 방식이다.예를 들어 '/board/123'은 게시물 중에서 123번이라는 고유의 의미를 가지도록 설계하고 이에 대한 처리는 GET, POST 방식과 같이 추가적인 정보를 통해서 결정한다. REST API는 외부에서 위와 같은 방식으로 특정 URI을 통해서 사용자가 원하는 정보를 제공하는 방식이다.최근 Open API에서 많..
예외처리 기본 예외처리Spring MVC 를 사용할때 Controller쪽에서 Exception을 처리방식1) @ExceptionHandler 애노테이션을 이용한 처리2) @ControllerAdvice를 이용한 처리3) @ResponseStatus를 이용한 HTTP 상태 코드 처리 범용적으로 사용하는 방법은 @ControllerAdvice를 이용한 처리방식으로 공통의 Exception 처리 적용 객체를 사용하는 방법 클래스에 @ControllerAdvice 애노테이션 처리각 메소드에 @ExceptionHandler를 이용해서 적절한 타입의 Exception을 처리 예시) @ControllerAdvicepublic class CommonExceptionAdvice { @ExceptionHanlder(Exception...
모델2방식과 스프링 MVC 모델2방식과 스프링 MVC 모델2방식은 흔의 MVC 구조를 응용한 방식으로 화면과 데이터 처리를 분리해서 재사용이 가능하도록 하는 구조Model : 데이터를 처리하는 영역 의미View: 결과화면을 만들어 내는데 사용하는 자원 의미Controller: 웹의 요청(Request)을 처리하는 존재로 뷰와 모델 사이의 중간 통신 역할-----> Controller Model ㅣ ∨ View 컨트롤러는 모델 계층과 연동해서 필요한 데이터를 처리하고, 결과를 뷰로 전송모델2에서 모든 요청은 기본적으로 컨트롤러를 호출한다. 각 컨트롤러는 자신을 호출하는 특정한 URI 경로를 가지고 있다.과거에는 주로 호출시 마지막 확장자를 .do 등을 이용하는 방식을 많이 사용했다. 모델2 방식1) 개발자와 웹 퍼블리셔의 영역을 분..
스프링 웹프로젝트의 구성 일반적으로 웹프로젝트는 3개의 레이어 구성Presentation Layer - UI를 담당하는 구성요소JSP와 같은 뷰(View)를 구성하는 부분과 Controller라는 부분으로 분리되어서 작성 Business Layer - 서비스계층이라고도 하며, 고객의 요구사항을 반영하는 계층으로 사용자의 환경이 아닌 기능적인 요구사항을 구현하는 곳, 어떤 형태의 데이터가 필요하고 반환될 것인지를 결정 Data Access Layer - Persistence Layer라고 하기도 하는데, 데이터 처리를 전문으로 담당 기본구성Model -> Controller -> Service -> DAO -> MyBaits -> Database(HTML,JSP) MyBatis와 구성DAO Database 스프링이 자체로 가지고 ..