멀티캠퍼스/Spring

230908 (금)

세크레투스 2023. 9. 8. 20:45
반응형
SMALL

<금일 교육 내용>

1. Spring 개발환경 구축

- 컨트롤러

- 서비스

- 화면처리

 

2. 컨트롤러

- 요청정보로부터 데이터를 추출

- 추출한 데이터를 서비스로 호출하여 비즈니스 로직을 처리

- 처리한 로직을 다오에 넘겨서 결과 산출

- 최종결과를 view로 넘김

 

<복습>

1) 요청 -> Dispatcher Servlet -> /resources/ -> 정적 파일 url -> 요청 -> Adapter

-> list(SampleDTO) : 기본생성자 생성(new Sample DTO() ->

2) 모델 데이터는 자동으로 scope에 저장됨. -> 이 때 default 속성명(데이터 타입명)은 CamelCase로 지정

-> 속성명을 변경하고 싶다면 @ModelAttribute()를 사용하면 됨.

3) @ModelAttribute의 역할

- 속성 이름 변경

- 자동으로 저장 안되는 것을 저장하고 싶을때 : @RequestParam()은 속성으로 저장이 안됨. -> 이때 @ModelAttribute()를 사용함

3) Redirect

- 서버에 요청을 보냈을 때, 서버에서 다른 요청을 요구할때 보내는 코드. (300, 301, 302 코드)

- 300번대는 모두 redirect하라는 의미임.

- 서버에서 300번대 코드와 함께 새로운 url을 보내주면, 그 url을 다시 클라이언트에서 요청하면 서버에서 응답을 한다.

 

<Controller의 리턴타입>

1. Controller 메서드의 리턴 타입

- String (가장 많이 쓰임)

* jsp뷰의 경로/이름으로 해석

- void

* 호출한 URL과 동일 이름의 jsp로 해석

- VO, DTO 타입 (JSON 응답)

* JSON 타입의 데이터로 변환해서 브라우저로 응답

- ResponseEntity 타입 (JSON 응답)

* Http 헤더 정보와 내용을 가공하여 직접 브라우저로 응답

- Model, ModelAndView

* Model로 데이터를 변환하거나 뷰이름을 같이 지정

- HttpHeaders

* 응답에 내용 없이 Http 헤더 메세지만 전달

 

2. String 타입

- forward

 

3. 객체 타입

- JSON 타입 응답하는 경우 사용

- jackson-databind 라이브러리 필요

 

4. JSON이란..?

- JavaScript Object Notation

- {속성명:값, 속성명:값 ...} 의 object 타입을 문자열로 표현한 것.

 

5. @ResponseBody

- view로 보내지 않고 바로 body로 보냄.

 

6. ResponseEntity

- 브라우저로 직접 응답하는 경우

- 응답 헤더 설정

- 응답 바디 설정

7. 파일 업로드 방법

- Servlet 3.0 기능 이용

- commons-fileupload 라이브러리 이용

- 업로드 디렉토리 준비

* c:\upload\tmp

 

==> &가 아니라 / 로 구분 => 이것을 part라고 부르며, 여러개를 다루므로 multipart라고 부름.

 

<Controller Exception 처리>

1. 스프링 MVC의 예외 처리

- @ExceptionHandler 와 @ContollerAdvice를 이용한 처리

- @ResponseEntity를 이용하는 예외 메세지 구성

2. @ControllerAdvice

- HTTP 상태코드 500 Internal Server Error에 대응하기 위한 기법

- AOP(Aspect-Oriented-Programming)을 이용 (좀 더 보편적인 개념, 전처리, 후처리 가능)

- method가 하는 일은 변함이 없지만, 이것을 어떤 관점으로 처리할 것인지를 봐야하는 것이다.

- 예를 들어서 예외처리를 관점으로 만들고 싶다면 method()를 통해서 request를 했을 때 예외가 없으면 실행, 예외가 발생하면 에러페이지로 이동하도록 만들 수 있다.

- Filter가 이와 비슷한 맥락이라고 볼 수 있다.

 

- 스프링의  핵심 장점

* DI

* AOP

 

3. AOP란?

- 어떤 관점이냐에 따라서 실제 메소드의 앞과 뒤에 코드를 덧붙일 수 있는데, 이것을 Advice라고 한다.

=> 원래 404는 클라이언트 잘못으로 인한 오류인데, 이같은 경우는 사실은 개발자의 잘못이다.

 

<영속 계층의 구현 준비>

 

반응형
LIST