Spring/SpringMVC

Spring/SpringMVC

[Spring MVC] 계층의 분리

1. 3계층 Spring은 3계층으로 구분 할 수 있다. 사용자 요청을 받아 흐름을 제어하는 Presentation Layer, 비즈니스 로직을 담당하는Business Layer, 데이터 베이스에 접근하여 데이터 베이스를 다루는 Persistence Layer(Data Access Layer)로 계층을 분리 할 수 있다. UserHistoryDao 회원의 이력을 추가, 삭제, 수정 등 비즈니스 로직을 수행하는 역할이 필요하다. Persistence Layer인 UserDao는 단순히 DB테이블의 정보를 CRUD(Creadt, Remove, Update, Delete)하는 기능만 수행하기에 비즈니스 수행할 수 없다. 그래서 Presentation Layer인 RegisterController에게 UserH..

Spring/SpringMVC

[SpringMVC] @RequestParam과 @ModelAttribute

1.@RequestParam @RequestParam은 요청의 파라미터를 연결할 매개변수에 붙이는 애너테이션이다. @RequestParam이 쓰이는 경우를 살펴보자. 1-1.@RequestParam을 생략하는 경우 @RequestParam은 기본적으로 매개변수로 파라미터의 이름을 나타내는 name과 @RequestParam 필수 여부를 따지는 required를 매개변수로 갖는다. 그림과 같이 필수 여부를 따지는 required가 false일 경우 @RequestParam을 생략해도 문제가 없다는 의미로 생략이 가능하다. required 값이 필수가 아닐 경우 null과 ""(공백)이 요청값으로 들어올 경우 타입문제가 발생한다. 오류를 막기위해 required 값이 필수가 아닐 경우 기본 값을 1로 지정한..

Spring/SpringMVC

[SpringMVC] rediect와 forward

1.redirect redirect는 브라우저에서 받은 요청을 다른 URL로 재요청한다. 브라우저에서 1.요청을 하면(수동, GET/POST둘다 가능) 헤더에서는 302 즉 다른 URL로 재요청하는 300 Redriect가 입력되고 다른 URL로 요청되는 위치를 Location에 쓰여진다. 2.응답을 받은 브라우저는 새로운 위치(login.jsp)로 3.요청 재요청(자동, GET만 가능)하게 된다. 요청후에 작업이 완료된 login.jsp에서 브라우저로 응답한다. redirect는 요청이 두 번 발생한다. request가 두 번 발생하는 데 두 request는 다르다. 일상생활에 비유하자면 서비스 센터에서 담당이 달라 다른 번호를 알려주고 재연결을 요청하는 것과 유사하다. 예를들어 컴퓨터 AS를 맡기기위..

Spring/SpringMVC

[SpringMVC] 요청과 응답

Web 원격 프로그램 실행 웹은 브라우저 그 자체로 작동하지 않는다. 호출 및 요청을 하는 브라우저와 함께 요청을 받은 내용을 수행하고 결과를 넘겨주는 서버/WAS가 필요하다. 브라우저와 서버는 간단히 연결 할 수 있는데 연결방법을 알아보자. 브라우저에서는 'http://111.222.333.444.8080/ch/hello'를 호출한다. 호출을 받은 서버는 브라우저에서 요구하는 프로그램을 등록하고 브라우저에서 입력한 URL과 프로그램 내의 메서드를 연결한다. 서버에서는 브라우저의 요청에 따라 프로그램을 등록하고 URL과 메서드를 연결해야하는데 @Contoller와 @RequestMapping을 이용해 등록 및 연결을 한다. 프로그램 등록과 URL연결이 끝나면 서버는 결과물을 브라우저에게 보내준다. Htt..

Spring/SpringMVC

[SpringMVC] 데이터 변환과 검증

데이터 변환과 검증 1.변환 1-1.WebDataBinder 요청메시지가 들어오면 쿼리스트링(요청메세지의 빨간줄)의 값은 Map으로 담긴다. Controller인 main객체에서 @ModelAttribute Mydate를 매개변수로 가지면 그림과 같이 MyDate 객체가 생성되고 요청 데이터들이 담기게 된다. 데이터가 넘어가는 중간에 WebDataBinder가 데이터의 타입을 변환하고 검증하는 작업을 한다. Map담긴 데이터의 타입은 String이다 하지만 MyDate에 담긴 데이터의 타입은 Int다. Map에 담긴 데이터가 MyDate에 담기기 위해선 Int 타입으로 변경 해야하는데 스프링에서는 WebDataBinder를 통해 타입 변환을 시킨다. 타입이 변환되면 에러, 결과값을 BindingResul..

Spring/SpringMVC

[Spring MVC] MVC 패턴

1.관심사의 분리 위의 코드는 요일 계산을 코드다. 코드는 크게 입력, 요일 계산, 프로그램(코드) 출력 세 부분으로 나뉜다. 객체지향 설계(OOP설계)의 첫 번째 원칙은 '하나의 메서드는 하나의 책임' 단일책임원칙(SRP)다. 스프링 MVC는 단일 책임에 따라 작성하는 방법론이다. 따라서 위 코드를 MVC 패턴에 따라 작성하면 단일책임원칙에 따라 작성하게 된다. ※객체지향 설계 5원칙 SRP (Single Responsibility Principle) : 단일 책임 원칙 OCP (Open-Closed Principle) : 개방 폐쇄 원칙 LSP (Liskov Substitution Principle) : 리스코프 치환 원칙 ISP (Interface Segragation Principle) : 인터페..

Spring/SpringMVC

[Spring MVC] 예외처리

예외처리 스프링은 try-catch문 뿐만 아니라 다양한 예외처리 방법을 제공한다. 스프링에서 제공하는 다양한 예외처리 방법에 대해 알아보겠다. 1.@ExceptionHandler와 @ControllerAdvice 1-1@ExceptionHandler main메서드와 main2메서드를 살펴보면, 각각 Exception, NullPointerException이 발생할 걸 알 수 있다. 일반적인 예외처리 방식인 try-catch문을 쓰면 각 메서드에 추가적인 코드가 생기지만 @ExceptionHandler를 사용하면 위와 같이 메서드의 예외에 해당하는 예외처리 메서드로 이동하여 코드를 좀더 간결하게 만들 수 있다. 만약 하나의 메서드에서 여러개의 예외를 처리 하고 싶다면 catcher2메서드와 같이 '{}'..

Spring/SpringMVC

[Spring MVC] 쿠키와 세션

1.쿠키(Cookie) 쿠키는 이름과 값의 쌍으로 구성된 작은 정보다. 아스키 문자로만 가능하고 서버에서 생성 후 전송된다. 저장은 브라우저에 가능하고 유효기간이 지난 후에는 자동으로 삭제된다. 서버에 요청할 때 domain, path가 일치하는 경우에만 자동전송된다. 쿠키의 작동과정 쿠키는 브라우저에서 요청하면 서버에서 만든다. 서버에서 만들어진 쿠키는 (1) 브라우저로 전송되며 저장된다. 한번 생성, 저장된 쿠키는 브라우저에 저장되어 따로 (2) 생성할 필요 없이 유효기간이 지나거나 삭제할 때 까지 사용가능하다. 쿠키의 생성,삭제와 변경, 읽어오기 쿠키의 생성 쿠키의 삭제와 변경 쿠키 읽어오기 2.세션(Session) 세션의 정의 "a collection of realated HTTP transact..

각시탈코더
'Spring/SpringMVC' 카테고리의 글 목록