TIL은 뭔가 표면적인 내용 그 이상의 깨달음들을 기록하고 싶습니다. 아쉽게도 아직은 기본적인 문법과 기능들을 익히는 데에도 헷갈리고 숙지하기 바쁩니다. 어설프게 MVC패턴을 정리할 수는 있겠지만 머릿속 깊이 이해했다고 보기는 어렵기에 그 정도 수준의 학습을 기록하기엔 마음이 가지 않기에, 우선 기초를 빨리 숙지하고 거기서 나오는 응용력을 빨리 끌어올리고 싶은 마음에 기초적인 내용들을 숙지하기 위한 TIL로 정리하려하고, 그에 대한 변명을 해봤습니다.😂
Spring의 첫인상.
- @Annotation의 형태로 편리한 기능을 제공하는 느낌들을 많이 받았다.
- gradle이라는 기능이 있고 이를 통해 build하는 작업환경(?)을 세팅해주는 느낌이다. 작업환경의 중요성을 얼핏들은 것 같은데 우선 이에 대한 공부는 유보중이다.
- 이전 파이썬의 flask처럼 localhost를 통한 내 사이트를 접근할 수 있게 해주는 기능을 기본적으로 제공해준다. 아마 IDE에서 실행된 SpringApplication을 서버에 업로드해서 누구나 접속할 수 있게 해주는 것이 이후 배포과정으로 예정되어있지 않을까 싶다.
정적페이지 / 동적페이지
이미 정해진 페이지들은 html로 저장해두었다가 보여주기만 하면 된다. 이런 페이지를 정적페이지라고 하고,
실시간으로 댓글이나 게시물 등을 로딩받아서 보여주는 페이지를 동적페이지라고 한다.
아래에는 정적페이지를 호출하는 방법 몇 가지가 있다.
기본적으로 세팅된 폴더 중 static에 정적페이지 html파일을 저장해 호출할 수 있다.
Static 폴더에 있는 html 호출하는 법
1. 직접 html파일 이름을 URL주소에 입력.
2. 해당 주소 리턴값에 redirect로 해당 파일 입력.
Templates 폴더에 있는 html 호출하는 법
리턴값으로 해당 html문서의 제목을 문자열로 준다.
자주쓰이는 @Annotation
@Controller
해당 클래스가 컨트롤러임을 지정.
@Responsebody
위에서 문자열 리턴받은걸로 해당 html이름 찾아서 실행하는데,
해당 어노테이션을 사용해주면 html의 <body>에 리턴해준다.
서버한테 향하는 동작은 Request, 클라이언트한테 향하는 동작은 Response인 느낌..?
Response를 Body에 해준다.
@Restcontroller
해당 클래스 내의 메소드에는 @ResponseBody가 적용히 된다.
@PathVariable
URL주소에서 매개변수를 받음.
주소를 매개변수로 포함해서 해주는 기능은 코드스니펫의 html 상에 구현되어 있었다.
@PathVariable은 주소에서 매개변수를 가져오기만 하고 요청하는 건 아닌걸로 보인다.
@RequestParam (생략가능 SimpleValueType 의 경우에 RequestParam으로 간주.)
쿼리스트링 형태 추가한 URL로도 데이터 넘겨줌.
form타입으로도 전달 가능.
POST 메소드는 Payload로 body에 데이터를 보내줌.
@ModelAttribute (생략가능)
전달받은 데이터로 객체 생성함. Payload에 있는 데이터기반으로 객체를 생성하는 듯. (Formdata를 받음)
@Requestbody
JSON형식과 같은 데이터를 body에서 받아올 때는 해당 어노테이션을 달아야한다.
PathVarible이나
GET, POST 메소드시 Request content-type(?)
GET 메소드는 Form태그로 받은 게 스크립트를 통해 QueryStringParameter로 URL형태에 올려짐.
POST 메소드는 Form 태그로 받은 게 Payload에 FormData로 나옴.
form태그 안에 있는 button은 디폴트로 submit기능을 한다고 함.
Jackson
Jackson은 스프링 라이브러리로 object와 json의 형태를 변환할 수 있다.
이거 쓰면 json <-> object
참고로, 스프링은 자바의 객체를 자동으로 json형태로 변환한다.
Required
required = false 로 하면 메소드 오버로딩 없이 그냥 값 없이 생성한다.
+추가궁금증..
Payload가 form태그 버튼으로 submit하면 자동으로 실리는 그런 곳..?
'Back-End > Spring' 카테고리의 다른 글
TIL 230630 : (이어서) Entity반환시 문제. (Dto의 중요성) (0) | 2023.06.30 |
---|---|
TIL 230629 : List to JSON 객체 반환시 오류 (jackson) (0) | 2023.06.29 |
TIL 230628 : mappedBy 적응해보기 (0) | 2023.06.28 |
TIL 230626 : Bean과 Singleton (0) | 2023.06.26 |
TIL 230619 : Spring은 그저 도구. (IoC/DI, 3 Layer, 영속성 컨텍스트(flush commit 차이), 클래스 리터럴, URL주의점.. (0) | 2023.06.20 |