POST
오브젝트(User)인데 JSON으로 바뀌었다. 왜?
컴포넌트 스캔 기준
이유 : IoC 컨테이너에 객체 등록
위치 : Package 내부만 스캔 . src/main/java 위치만 풀스캔(순차적으로 하나씩) -> com.cos.secondapp
IoC 컨테이너는
(
1. TestController
)
요청 : Post http://localhost:8000/
header : x-www-form-urlencoded
body : username=ssar&password=1234
=> 디스패쳐 가로채기 =>IoC 스캔!!! (/<- 이걸 스캔) => @PostMapping("/") 호출
=> 매개변수 (User data)
post(new User(ssar, 1234));
내부 객체 = bean
response 응답
- MessageConverter(데이터) @RestController - 기본적으로 JSON으로 리턴한다.
- ViewResolver(뷰) @Controller - html으로 리턴 왜? - ViewResolver(뷰)는 웹서버
ViewResolver -> 내가 설치한 Template Engine에 따라 ViewResolver의 확장자가 달라짐
ex) mustache
하지만 JSP를 할 때는 틀을 벗어남
template engine 라이브러리 -> static 폴더
template engine을 설치했으면 ViewResolver가 templates 폴더에 찾아가서 자기에 맞는 확장자를 찾음
WEB-INF은 외부 접근 불가 폴더
유저의 직접접근을 막지만, 컨테이너는 접근이 허용됩니다. 다시 말하면 사용자는 WEB-INF 아래의 JSP 페이지를 URI 로 접근하여 실행할 수 없으나 컨테이너는 실행 가능하다는 것입니다. - url 패턴을 안 쓰고 uri 패턴 사용...
WEB-INF 폴더 | |
장점 | WEB-INF 폴더에 있을 경우 localhost:8090/WEB-INF/test.jsp로 접근이 불가하다. 이로인해 유저의 직접 접근이 어렵워 보안성이 높다. |
단점 | 직접적으로 view를 볼 수 없다. 또한 직접적으로 볼 수 없기 때문에 <a> 앵커 태그로 이동이 불가하며 Controller를 통해서만 이동을 해야 한다. |
[스프링 개념] web과 WEB-INF 폴더에 관해서 및 WEB-INF에서의 앵커 태그에 관해서
다음과 같이 두개의 test.jsp 파일이 있다. 하나는 web폴더(webContent)에 있고 하나는 web폴더의 하위 폴더인 WEB-INF 폴더에 있다. 그럼 우선 web 폴더에 있는 test.jsp 파일에 접속해보겠다. 다음과 같이 web
namubada.net
Tomcat Jasper로 컴파일 함
'웹앱개발 > Spring boot' 카테고리의 다른 글
데이터베이스 연결 (0) | 2021.06.25 |
---|---|
데이터를 화면에 렌더링 (0) | 2021.06.24 |
객체지향프로그램 (0) | 2021.06.22 |
JSON (0) | 2021.06.22 |
HTTP 1.1 / BufferdReader(@RequestBody) (0) | 2021.06.22 |