Tomcat 서버 구조 디버깅 모드로 찾아본 결론 초기 접속 시 세션 확인 초기 접속 시, 세션 확인 사용자 요청은 각 Port에 맞게 Adapter를 통해 들어온다. 이 때, Request / Response 객체는 각각 생성된다. 그리고 해당 Adapter에서 Request 객체에 SessionId가 발급되어 등록됨. Catalina 엔진에서 세션을 요청함. 이 때, Context.getManager()를 통해 요청한다. Context는 Servlet Container(Tomcat)이고, Manager는 ManagerBase다. ManagerBase에서 현재 Request 객체가 가진 SessionID로 저장된 Session이 있는지 확인한다. 없으면 Null이 반환되고, 있으면 Session이 반환..
들어가기 전 토이 프로젝트를 하며 가장 어렵다고 느꼈던 부분은 타임리프에서 URL 링크를 적절히 사용하는 부분이었다. 어떻게 URL 경로를 걸어야 할지 굉장히 애매해서 로컬 환경에서 테스트를 하고 정상으로 확인한 후, 다른 곳으로 전파를 했다. 그런데 이렇게 충분한 테스트를 거쳤다고 하더라도, 다른 곳에서는 정상적으로 적용이 되지 않는 경우가 많았다. 가장 어려웠던 부분은 로컬 환경에서 어찌저찌 잘 걸어두었는데, 실제 AWS로 배포를 했을 때 뭔가 로컬과 다르게 작동하면서 CSS, BootStrap 같은 것들이 제대로 링크가 먹지 않는 부분이었다. 이번 포스팅에서는 그런 부분을 잘 정리해보고자 한다. Spring의 정적 리소스 제공 스프링은 /resource/static에 넣어둔 파일들을 스프링부트가 내..
이 게시글은 인프런의 영한님의 강의를 듣고 복습하며 작성한 글입니다. Pageable 활용하기 페이징을 하는 것은 굉장히 고역이다. 그 어려운 것을 스프링 데이터 JPA는 Pageable 인터페이스를 넘겨주고, Page나 Slice 타입의 객체를 받아서 페이징을 아주 손쉽게 해준다. 따라서 우리는 Page, Slice, Pageable을 적극적으로 활용하는 것이 마땅하다. Controller에서 Pageable 객체 받기 @ResponseBody @GetMapping("/testCode") public String testPageable(Pageable pageable) { // Pageable 객체 받음. log.info("pageable : {}", pageable); return "ok"; } Co..
타임 리프의 상대경로 / 절대경로 //절대경로 표현식 //최종 URL : /article/6/remove Delete //절대경로 표현식 //최종 URL : /article/6/remove Delete //상대경로 표현식 //최종 URL : article/3/article/3/remove Delete //상대경로 표현식 //최종 URL : article/3/article/3/remove Delete 절대 경로 /로 시작하는 경로를 작성하면, 절대 경로로 작성된다. 현재 URL과 무관하게 경로식의 표현된 값 그대로만 나온다 상대 경로 앞에 "/"를 생략하면, 상대 경로로 작성된다 상대 경로는 현재 URL + 작성된 경로로 최종 URL이 설정된다.
이 포스팅은 인프런 김영한님의 강의를 복습하며 정리한 내용입니다. HTML FORM 전송 방식 application/x-www-urlencoded multipart/form-data HTML FORM 전송 방식은 위와 같이 두 가지(https://ojt90902.tistory.com/651)가 있다. 이름에서부터 유추가 가능하겠지만 multipart/form-data는 뭔가 여러 형태의 데이터를 전송해 줄 것이라는 것이 유추된다. 그와 대조적으로 application/x-www-urlencoded는 한 형태의 데이터를 전송해줄 것이라는 것이 유추된다. application/x-www-urlencoded 전송 방식 application/x-www-urlencoded는 HTML 폼 데이터를 전송하는 가장 기..