-
[Spring] 01_I.o.C, D.I, Request, Response, Method, Maven, 자잘한 Spring 설정들웹개발/Spring 2024. 4. 9. 12:39
- 스프링 세팅
스프링 부트는 톰캣이 내장되어 있다. (제스퍼 빠져 있음)
스프링은 톰캣이 외부에 있다. (제스퍼 있음)
그래서 부트에서는 임베디드 서블릿, 제스퍼를 추가하면 된다.
세팅은 개인 소장한 동영상 참고 - 미래의 나에게
톰캣 Tomcat의 역할
- 자바 서블릿 및 JSP 실행 :
톰캣은 자바 서블릿과 JavaServer Pages(JSP)를 실행하는 환경을 제공합니다. 이를 통해 자바 기반의 동적 웹 애플리케이션을 개발하고 실행 가능. App을 항상 사용할 수 있도록 실행 상태로 두는 것.
- 웹 컨테이너 :
톰캣은 웹 컨테이너로서의 역할을 수행합니다. 클라이언트 요청을 받아들이고, 서블릿 및 JSP 컨테이너를 통해 해당 요청을 처리하여 동적인 콘텐츠를 생성.
- 정적 및 동적 콘텐츠 제공 :
톰캣은 정적인 HTML 파일 뿐만 아니라, 동적으로 생성된 서블릿 및 JSP 페이지를 제공할 수 있따.
- 웹 서버와의 통합 :
톰캣은 아파치 HTTP 서버와 연동하여 사용할 수 있다. 이를 통해 정적 콘텐츠의 처리는 아파치 웹서버가 담당, 동적 콘텐츠는 톰캣이 담당하여 웹 애플리케이션의 성능을 최적화할 수 있다.
톰캣이 동작하기 위해 설정된 루트 경로(root path)를 가지고 있다. 루트 패스는 톰캣이 웹 애플리케이션의 파일 및 리소스를 검색하는 기본 경로를 나타낸다. 일반적으로 톰캣이 설치된 디렉토리의 하위에 위치한다.
- I.o.C, D.I
IoC (Inversion of Control) : 메모리의 효율 때문에 쓰는 것.
제어의 역전을 의미하고 원래 개발자들이 해야하는 것들을 떠넘긴 것.
클래스의 생명주기를 관리한다.
우리가 등록/부여한 것만 제어의 역전을 시킨다.
ex) 서블릿을 하려면 메모리에 올라가야 실행됨. 이는 톰캣 자신에게 등록된 서블릿을 대신 해준다.
DI (Dependency Injection) :
빈 객체를 만들고, 여기에 내가 쓸 객체를 넣는 것 == 의존성 주입을 의미
내가 사용할 객체를 톰캣, 스프링에게 달라고 하는것. (받아 쓰는것)
왜 이 두 개가 필요한가?
매번, 프로그램을 짤 때마다 객체를 생성한다면 Garbage collecter가 주어갈 것. 단 이게 텀이 길다.
그래서 이것을 대신 시키는 것.
init() : 자동실행 -> service [ doget, dopost, doput, dodelete, do~] (http Servlet이 가지고 있는 메소드들)
그래서 Override 해서 쓰는 것임.
- Request와 Response
Web은 http를 쓰고, http는 요청(Request 객체)과 응답(Response 객체)을 사용한다.
인터넷에서 보내는 건 단 방향밖에 안된다. (쌍방향이 안됨)
서버는 저 두 개로 왔다 갔다 한다.
둘 다 header 와 body가 있고 이곳에 내용물이 들어가 있다.
header :
요청자, 요청주소, 타입, 전송 Data 타입과 같은 기본정보
body :
Data (요청하는 내용의 실제가 담긴다)
요청자 IP 요청주소 내가 보고 싶은 페이지(뭘하고 싶은지) 타입 Method 전송 Data 타입 content-type = html, xml
- Method(Get, Delete, Put, Post...options)
Method는 전송방법을 뜻한다.
: Get, Post, Put, Delete, Option
Get과 Delete 그리고 Put과 Post가 각각 형식이 비슷하다.
이 친구들은 Restful API 할 때 구분하면서 사용한다.
(API가 발전해서 나온게 Restful API)
Options :
내가 전송할 곳이 어떠한 전송방식을 보낼 수 있는지 확인하는 것
어떠한 데이터를 Access 할 수 있는지 물어보는 것
내가 서버에다 옵션즈 날리면 너네 서버에 어떤 메소드로 전송 받을 수 있어?
Get은 Data가 주소 안에 있고, Post는 http 안에 Request 객체 안의 body에 있다.
Get은 주소에서 ?부터 Data를 담고 있고 이를 Query Sring으로 부른다.
그래서
Get = 주소 + Query Sring(Data)
Post 는 http 의 Request 안에 body 안에 넣어서 온다.
이 body 안에는 form Data, Parameter Data, Json, Xml... document
거의 all type이 들어올 수 있고 Get처럼 안이 보이지 않는다.
- Maven
메이븐 만들기.
오른쪽 상단에 보면 이 중에 맨 왼쪽 아이콘 선택 -> Java EE 선택 ==> 웹개발 용도(이클립스)로 바뀜
왼쪽 Project Expoler 에서 Create a Maven project 선택 -> Create a simple project (slip archetype selection) 체크
Group Id, Artifact Id, Packaging(jar), Name 설정 후 Finish
가 생김
저기서 pom.xml 선택하면 코드화면 나옴
라이브러리를 사용 방법
접속 후 원하는 라이브러리의 버전 선택 후 하단의 Maven 탭의 코드 복사
dependencies 안에 코드를 넣고 Ctrl + S 저장하면
Maven Dependencies 파일 생성 시트에서 해당 라이브러리 지우고 똑같이 저장하면
해당 Maven Dependencies에서도 사라짐
- Spring 내 설정
상단 바에서 Help로 들어가 Eclipse Marketplace에 들어가서 popular 클릭 후 이클립스(두번째) 다운로드
confrim -> accept -> finish
상단 바 Window -> Pregerences -> Server -> Runtime Environments -> Add
-> Apache Tomcat v9.0(다운로드 받은 버전) -> Browser(다운로드한 파일 선택)
상단 바 Window -> Pregerences -> General -> Content Types -> Text(펼치기)
-> CSS, JSP(group folder), JSP Fragment, JSP Tag Definiton( in JSP group folder), XML(G-folder),
Java Properties File ( 안에 있는 파일들도 체크), Spring Properties file, JSON(illformed)
들의 Default encoding을 UTF-8로 Update하기
상단 바 Window -> Pregerences -> Java -> Installed JREs -> 기존거 삭제 후 다운받아둔 JDK-17 파일로 add
상단 바 Window -> Show View -> Other -> Server의 Servers 키고
Show View -> Other -> Java -> Package Explorer를 꺼내 Project Explorer 자리로 대체
상단 바 Window -> Perspective -> Customize Perspective -> 상단 바 Shortcuts 선택
-> Java 와 Gradle 체크 -> Java 안에 Annotation, Class, Enum, Interface, Java Progect, Package 선택
이렇게 하면 새롭게 만들때 이클립스 처럼 옵션들 생김. == 클래스 패키지 등 생성 가능
톰캣 설정도 따로 해야함 (메모장 가서 하는거 개인 필기 참조)
위에서 킨 Servers 에서 톰캣 더블 클릭 후 생긴 화면의 하단의 Modules 클릭 ->
edit -> Path: / -> ok
Play button 누르면 서버 실행됨.
드레그 한대로 뜨면 정상적으로 실행된 것.