<< 학습 목표 >>

1. Postman 프로그램을 사용해 GET 방식 요청을 보낼 수 있다.

2. Postman 프로그램을 사용해 POST  방식 요청을 보낼 수 있다.

3. Postman 프로그램을 사용해 요청 시 파라미터를 담아 보낼 수 있다.

4. Postman 프로그램을 사용해 요청 시 파일을 보낼 수 있다.

5. Postman 프로그램을 사용해 요청 시 JSON을 보낼 수 있다.


개발 경험이 부족했을 때 항상 했던 고민이 "백엔드를 개발해도 테스트를 어떻게하지?" 였음

백엔드 프로그램을 아무리 완벽히 개발했다고 생각해도 항상 문제가 있기 마련이므로 백엔드 프로그램을 테스트하려면 최소한의 화면 구성은 필요했음

 

졸업 작품을 만들 때 이것 때문에 엄청 고생했음

안드로이드 앱과 아두이노를 활용해 임베디드 시스템을 구성했는데 앱은 최소한의 화면을 구성하는데도 시간이 오래 걸리고 빌드 하는 시간도 상당히 오래 걸려 화면을 조금만 수정하더라도 다시 한참을 기다려야 백엔드 테스트를 할 수 있었음

 

그러다 취업을 했는데 하필... 첫 직장의 업무 강도가 말도 안되게 높아서 사수가 없었음...

빨리 경험을 쌓자는 생각으로 아무대나 취업을 했는데 너무 아무대나 를 간 것...ㅠㅠ

 

그렇게 첫 직장에서도 고생을 하고 있다 프론트엔드 파트 팀장님이 "뫄뫄 씨 화면 없어도 Postman 으로 테스트하면 되" 라고 한 것

그때 그 말을 듣고 Postman 을 사용해봤는데 그때 이후로 백엔드 개발에 속도를 엄~청 낼 수 있었음 !

 

Spring Boot로 만든 Spring Framework 프로젝트를 공부할 때도 뷰가 없으니 뷰 대신 Postman을 사용하면 공부에 속도가 확확 붙을 것~!


Postman은 서버로 요청을 보내는 프로그램인데 GET, POST 방식을 선택해서 보낼 수 있을 뿐만 아니라 파라미터를 담아서 보낼 수도 있고 파일도 보낼 수 있는 백엔드 테스트에 최적화된 프로그램!!

예전에는 사용 방법이 간단해서 별도의 설명이 필요 없을 정도 였지만 지금은 살짝 더 기능들이 추가되 설명이 좀 필요할 것 같아 설명을 하려함

 

우선 Postman부터 설치하자

인터넷에 postman 으로 검색(1) -> 첫 번째 검색 결과(2)로 들어가자

혹시 첫 번째 검색 결과가 이와 다르다면 직접 들어가자 / https://www.postman.com/

 

Postman 을 다운로드(1) 하자

 

설치 후 postman을 실행하자

내 경우만 그럴 수 있는데 설치 프로그램을 실행시키면 별도의 설치 과정 없이 기다리면 바로 설치가 됨


설치 후 회원가입을 하고 로그인을 한 후 사용해도 되지만 그대로 사용해도 됨

요청을 보낼 때는 [ + 버튼 ] (1) 을 눌러 새로운 요청을 생성 한 후 보내면 됨

+ 버튼을 눌러보자

 

 

(1) 에서 요청 방식을 선택 할 수 있고 (2) 에서 요청을 보낼 URL을 입력할 수 있음

 

 

GET 방식으로 요청을 보낼 때 파라미터를 담아서 보내고 싶다면 [ Params ] (1) 에 이름(2)과 값(3)을 지정해 보낼 수 있음

 

 

POST 방식으로 요청을 보낼 때는 요청 방식 (1) 을 POST 로 바꿔 보내면 됨

POST 방식으로 요청을 보낼 때 파라미터를 담아서 보내고 싶다면 [ Body ] (2) 에서 [ x-www-form-urlencoded ] (3) 를 선택하고 이름(4)과 값(5)을 지정해 보낼 수 있음

 

 

파일을 보내고 싶다면 [ form-data ] (1) 를 선택하고 이름(2)에 마우스를 올려두면 [ 선택 버튼 ] (3)이 나오는데 이때 [ File ] (4) 을 선택하고 값(5)에 보내고 싶은 파일을 선택하면 됨

파일을 보낼 때 주의할 점은 보낼 파일의 이름도 반드시 지정해줘야함

 

 

만약 JSON을 보내고 싶을 때는 [ raw ] (1) 를 선택하고 보낼 데이터 유형 (1) 을 JSON으로 선택한 다음 JSON 데이터를 입력 (3) 하고 보내면 됨


여기까지 Postman 을 사용해서 뷰 없이 백엔드 프로그램(API)를 테스트 하는 방법을 배웠음

아직 우리가 Spring Boot로 만든 Spring Framework 프로젝트에서 컨트롤러를 생성하는 방법을 배우지 않았기 때문에 보내는 방법만 간단하게 알아봤음

 

취업 포트폴리오를 만들 때는 보통 뷰와 백엔드를 함께 담당하므로 필요성을 못느낄 수도 있지만 실무에서는 프론트엔드 따로 백엔드 따로 개발하므로 반드시 필요할 것

728x90
LIST

<< 학습 목표 >>

1. 정적인 요소를 어디에 둬야하는지 말할 수 있다.

2. 뷰를 추가하고 이와 관련된 설정을 할 수있다.

3. 컨트롤러를 추가할 수 있다.


이번 Chapter 를 시작하기 전 프로젝트에 com.example.domo.chapter02 패키지를 추가하자

 

Spring Boot 로 만든 Spring Framework 프로젝트의 경우 기본적으로 뷰(View)를 갖지 않음

Spring Boot 로 만든 Spring Framework 프로젝트는 일반적으로 백엔드 서버로만 활용됨

따라서 뷰가 필요하다면 뷰용 프로젝트를 별도로 생성해야함

우리는 뷰로 Postman을 사용하자

 

여기서 설명 하는 내용은 혹시 Spring Boot 로 만든 Spring Framework 프로젝트에서 뷰가 필요할 때를 위해서 기록해두는 것이므로 Spring Boot 를 공부하려고 오신분은 이 글을 넘어가도 됨


직접 Spring Framework 프로젝트를 생성했을 경우 HTML, CSS, JS, 이미지파일, 동영상파일 등과 같은 정적인 요소를 위해서 별도의 설정을 해야함

Spring Boot로 생성한 Spring Framework 프로젝트의 경우 별도의 설정을 할 필요 없이 정적인 요소를 src/main/resources/static 폴더에 넣어두면 됨

 

src/main/resources/static 폴더 안에 이름이 index.html 인 파일을 추가고 아래 코드를 추가하자

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>static 폴더에 위치한 index.html</h1>
</body>
</html>

 

이번에는 src/main/resources/static 폴더 안에 chapter02 폴더를 추가 한 후 해당 폴더에 이름이 some.html 인 파일을 추가하자

그 후 아래 코드를 입력하자

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>static -> chapter02 -> some.html</h1>
</body>
</html>

 

index.html 파일의 URL은 http://localhost:8080/index.html 이고 some.html 파일의 URL은 http://localhost:8080/chapter02/some.html 임

 

프로젝트를 실행시키고 해당 URL로 접근해보자

 

한가지 특이한 점이 있음

우리는 웹 페이지(HTML)를 static 폴더 안에 뒀는데 URL 경로에서는 static 을 뺐는데 잘 접속됨

이는 우리의 프로젝트가 정적인 요소로 접근하면 자동으로 static 폴더 안에서 찾기 때문임

 

HTML뿐만 아니라 JS, CSS, 이미지 파일 등 정적인 요소는 이 static 폴더 안에 모아두면 됨

 

다음 내용으로 이어가기 전에 한 가지 생각을 해보자면 Servlet, JSP 를 배우면서 웹 페이지를 만들 때 HTML 파일을 만든적은 없을 것

HTML 파일 대신 JSP 파일을 만들었을텐데 JSP 파일을 static 폴더에 두면 될까?

결론부터 말하면 "안된다"

 

static 폴더 안에는 위에 얘기한대로 HTML, JS, CSS, 이미지 파일, 동영상 파일 등 정적인 요소만 와야함

JSP는? 동적인 요소임

혹시 "왜?" 라는 생각이 들면 JSP 공부가 아직 부족한 것

이 글을 끝까지 읽다보면 JSP가 어디에 위치해야하는지 알 수 있음

 

우리는 웹 페이지를 HTML 대신 JSP로 만들것이므로 static 폴더 안에는 JS, CSS, 이미지 파일, 동영상 파일만 올 수 있다고 여기면 됨


Spring Boot로 만든 Spring Framework 프로젝트는 기본적으로 JSP를 사용하기 위한 설정이 되어있지 않음

혹시 왜 그런지 궁금하다면 아래 URL로 들어가 제일 밑에 있는 [ 24.2.4 JSP limitations ] 을 참고하자

중요한 내용은 아니므로 보지 않아도 됨

https://docs.spring.io/spring-boot/docs/1.0.1.RELEASE/reference/html/boot-features-developing-web-applications.html#boot-features-jsp-limitations

 

Spring Boot로 만든 Spring Framework 프로젝트에서 JSP를 사용하려면 pom.xml에 JSP 라이브러리를 추가해야함

 

(왼쪽) Maven Repository에서 jstl 검색 후 아래 라이브러리로 들어가자

  ! 라이브러리 이름 주의 하기 !

(오른쪽) 가장 최신 버전인 1.2 버전으로 들어가자

 

이제 JSP 를 담을 폴더를 추가하자

JSP를 저장할 폴더는 별도로 생성해줘야함

(1). 프로젝트 -> src -> main -> webapp 폴더 추가

(2). 프로젝트 -> src -> main -> webapp -> WEB-INF 폴더 추가

(3). 프로젝트 -> src -> main -> webapp -> WEB-INF -> views 폴더 추가

 

JSP는 WEB-INF 폴더 안에 위치해야함

WEB-INF 는 프로젝트에 필요한 중요한 설정 파일을 갖고 있는 용도의 폴더인데 중요한 설정 파일을 갖고 있는 폴더이기 때문에 외부(사용자)에서 절대 접근할 수 없고 프로젝트 내부에서만 접근할 수 있음

웹 페이지도 외부에서 직접 접근할 수 없도록 해야함

그래서 WEB-INF 폴더 안에 두는 것

 

배워나가면서 WEB-INF 폴더 안에 여러 파일이 쌓일 것이므로 구분할 수 있게 views 폴더를 추가한 후 그 안에 JSP ( 웹 페이지 ) 파일을 추가하려고 함

 

이제 views 폴더 안에 index.jsp 파일을 추가하자

또 views 폴더 안에 chapter02 폴더를 추가하고 그 안에 some.jsp 파일을 추가하자

 

<< index.jsp 코드 >>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>views 폴더에 위치한 index.jsp</h1>
</body>
</html>

<< some.jsp 코드 >>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>views -> chapter02 -> some.jsp</h1>
</body>
</html>

 

이제 프로젝트에 웹 페이지(JSP)를 추가했으니 웹 페이지에 접근해야하는데~!

프로젝트에 몇 가지 설정을 더해줘야함

1. ViewResolver 설정

2. 컨트롤러 생성

 

<< ViewResolver 설정 >>

ViewResolver 설정은 src/main/resources -> application.properties (1) 에 설정함

 

뷰리졸버 설명을 하기 전에 컨트롤러 먼저 생성하자

<< 컨트롤러 생성 >>

com.example.demo.chapter02 -> ViewTestController 클래스 추가 후 아래 코드 입력

package com.example.demo.chapter02;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class ViewTestController {
	@RequestMapping(value="/chapter02/jsp1", method = RequestMethod.GET)
	public String jsp1() {
		return "index";
	}
	
	@GetMapping("/chapter02/jsp2")
	public String jsp2() {
		return "chapter02/some";
	}
}

 

<< 코드 설명 >>

(1). @이 붙었으므로 애너테이션으로 Controller 애너테이션은 해당 클래스를 컨트롤러로 만들어줌

  컨트롤러는 클라이언트의 요청을 받아 요청을 처리할 서비스 메서드를 호출함

  그리고 서비스 메서드가 반환한 처리 결과에 따라서 클라이언트에게 적절한 결과를 응답함

(2), (3). RequestMapping, GetMapping 애너테이션은 클라이언트의 요청을 처리할 메서드에 붙는 애너테이션

  @RequestMapping 애너테이션은 value, method 속성을 사용함

  value 속성은 "해당 경로로 요청이 들어왔을 때" 로 해석할 수 있음

  method 속성은 "해당 요청 방식으로 요청이 들어왔을 때" 로 해석할 수 있음

  따라서 value, method 속성을 연결해 해석하면 "http://localhost:8080/chapter02/jsp1 로 GET 방식 요청이 들어왔을 때 jsp1 메서드가 그 요청을 처리하겠다" 임

(3). GetMapping 애너테이션은 속성 없이 ( ) 안에 문자열을 넣었는데 애너테이션 이름이 GetMapping 인 것처럼 "http://localhost:8080/chapter02/jsp2 로 GET 방식 요청이 들어왔을 때 jsp2 메서드가 그 요청을 처리하겠다" 임

 

(2)와 (3)에서 문자열을 반환해주는데 클라이언트에게 전달할 뷰이름으로 컨트롤러에서 문자열을 반환하면 뷰 리졸버가 동작해 반환하는 문자열의 앞에 prefix 를 붙이고 문자열의 뒤에 suffix 를 붙여서 해당하는 뷰를 클라이언트에게 전달함

 

따라서 컨트롤러는 문자열을 반환했지만 뷰리졸버 덕분에 클라이언트는 문자열이 아닌 뷰를 전달 받음


혹시 이대로 했는데 뷰가 안나온다면 무시하고 넘어가자

 

이 글의 처음에서 언급했듯 Spring Boot 로 만든 Spring Framework 프로젝트는 백엔드 용으로만 쓰지 그 안에 웹 페이지, CSS 등 뷰를 위한 것들을 넣지 않음

만약 Spring Boot 를 공부하고 포트폴리오를 만든다면 Spring Boot로 백엔드 프로젝트를 만들고 JSP 에서 배웠던 프로젝트를 만들어 이 프로젝트를 프론트엔드 프로젝트로 사용하면 됨

잘모르겠다면 Spring Boot 공부가 다 끝나면 마지막에 프로젝트를 할테니 그대로 따라오면 알게될 것

728x90
LIST

<< 학습 목표 >>

1. Maven을 사용해 필요한 라이브러리를 추가할 수 있다.


우리가 프로젝트를 생성할 때 선택 했던 [ Maven ] 과 프로젝트 내 생성 되어 있는 파일 중 pom.xml에 대해서 최소한으로만 이해해보자

 

Maven은 빌드툴로 좀 더 쉽게 얘기하면 이 글의 제목처럼 프로젝트 관리 도구임

 

비유를 해보자

음식점에서 음식을 만드는 것도 중요하지만 음식을 만들기 위해 준비하는 과정과 음식을 만들고 손님에게 나가기 전 먹음직스럽게 꾸미는 것도 중요함

프로젝트(서비스)를 개발할 때도 개발도 중요하지만 개발하기 전 필요한 라이브러리들을 추가하고 사람들이 사용할 수 있게 배포하는 것도 중요함

 

음식을 만들기 위해 준비하는 과정 = 개발하기 전 필요한 라이브러리들을 추가

음식이 손님에게 나가기 전 꾸미는 과정 = 사람들이 사용할 수 있게 배포하는 과정

사실 음식을 꾸미는 과정과 배포하는 과정은 적절한 비유는 아니지만 실무자가 이 글을 본다면 알아서 넘겨보실 것이고 취업준비생인분이 이 글을 본다면 "아닌데, 엄연히 다른데"까지 생각하지 못하실테니 그냥 적절히 넘겨 보자 ^^;;;

 

개발하기 전 필요한 라이브러리가 있다면 직접 다운 받아 프로젝트의 lib 폴더에 넣고 build path에 추가해야했을 것

이는 개발자 입장에서 굉장히 번거로운데 특히 Servlet, JSP로 프로젝트 다운 프로젝트를 만들어봤다면 크게 공감할 것

이 번거로운 과정을 많이 생략할 수 있게 해주는 것이 Maven 임

 

프로젝트에 Maven을 적용한다면 필요한 라이브러리의 URL을 찾아서 pom.xml 에 넣어주면 끝!

그 URL 조차 Maven Repository 라는 사이트에 모여있어 찾아 헤맬 필요가 전~혀 없음!


Maven Repository 사이트를 구경도 할겸 시험삼아 pom.xml 에 라이브러리 URL을 하나 넣어보자

Maven Repository 사이트는 인터넷에서 Maven Repository 로 검색(1) 하면 됨

검색 결과의 첫 번째 페이지(2) 로 들어가자

검색 결과가 아래와 다르다면 직접 들어가도 됨 / https://mvnrepository.com/

 

Maven Repository 사이트는 앞으로 자주 방문하게 될테니 즐겨찾기에 등록 해두는 것도 좋음

 

이 사이트에는 개발에 필요한 거의 모든 라이브러리 URL이 있음

 

필요한 라이브러리는 검색을 하면 되는데 이번에는 시험삼아 [ Hikari CP ] 라이브러리를 검색하고 이 라이브러리의 URL을 pom.xml 에 등록하자

라이브러리 URL은 필요하면 등록하고 필요 없으면 삭제하면 되므로 "괜히 라이브러리 URL 잘못 등록해서 프로젝트 이상해지는거 아니야?" 라고 걱정할 필요는 없음

 

Hikari CP 검색(1) / 검색을 하고 나면 검색 결과(2)가 굉장히 많음

여기서 내가 원하는 라이브러리를 찾아서 들어가면 됨(3)

 

 원하는 라이브러리를 찾아 들어갔다면 해당 라이브러리의 버전별로 쭉~ 나열(1)되있음

 

이 버전 중 나에게 맞는 버전을 선택 하면 됨

나에게 맞는 버전이 어떤 버전인지 모르겠다면 Usages 가 가장 높은걸 선택하면 됨

Usages 는 간단하게 해당 버전의 인기도 라고 생각하면 됨

 

우리는 근래에 Usages 가 가장 높은 2.13.x (2) 를 선택하자

상세 페이지로 들어오면 해당 라이브러리의 공식 홈페이지(1)를 확인할 수 있음

또 라이브러리의 URL이 아니라 라이브러리 파일이 필요할 경우 다운로드(2) 받을 수도 있음

마지막으로 라이브러리의 URL도 알 수 있음

 

(3) 안에 텍스트를 클릭하면 라이브러리의 URL이 자동으로 복사됨

이제 복사한 텍스트를 Spring Boot로 만든 Spring Framework 프로젝트 -> pom.xml (1) 에 추가하자

 

pom.xml 파일을 열면 그 안에 태그가 굉장히 많은데 라이브러리의 URL을 추가할 때는 <dependencies> 태그(1)를 찾아 그 안에 복사한 라이브러리의 URL을 넣어주면 됨

여기서 조심해야할 점은 라이브러리 URL을 넣을 태그 명이 dependencies 인것처럼 해당 태그 안에 이미 여러 라이브러리 URL이 적혀있음

 

다른 라이브러리 URL과 겹치지 않게 닫는 dependencies 태그 ( </dependencies> 태그 ) 바로 위에 잘 추가하자

 

URL이 우리가 알고 있는 URL과는 조금 다르지만 우리가 추가한 URL을 통해 Maven이 해당 라이브러리를 내려 받고 프로젝트에서 사용할 수 있게 적용을 시켜줌

이렇게 Maven 빌드툴을 사용하면 라이브러리가 필요할 때 Maven Repository 에서 라이브러리를 검색해 URL만 pom.xml에 넣어주면 끝이므로 개발자의 수고를 많이 덜 수 있음


pom.xml 뿐만 아니라 XML 파일을 이클립스에서 사용할 때 컴파일 오류(빨간 밑 줄)이 그어지는 경우가 있는데 진짜 문제가 생겨서 컴파일 오류가 생길 수 있고 정상적인 XML인데 이클립스가 XML을 잘못 해석해 컴파일 오류가 생긴것 처럼 보일 수 있음

XML 파일 내 다음과 같이 컴파일 오류가 생기면 일단은 무시를 하고 프로그램에서 진짜 문제가 생겼다면 그때 문제가 생기지 않게 XML 파일을 확인해 수정하면 됨

 

여기까지 Maven 빌드툴을 사용해 라이브러리를 추가하는 방법을 배웠음

hikari-cp 라이브러리는 시험삼아 추가했으니 이제 지우자~!

728x90
LIST

<< 학습 목표 >>

1. Spring Boot 로 생성한 프로젝트의 Servlet, Tomcat, Java 버전을 확인할 수 있다.

2. Spring Boot 로 생성한 프로젝트의 자바 버전이 17버전인 이유를 설명할 수 있다.

3. Tomcat의 포트 번호를 바꿀 수 있다.


Spring Boot 를 사용하지 않고 우리가 직접 Spring Framework 프로젝트를 만들었다면 일반 자바 프로젝트를 만들고 이 자바 프로젝트를 Spring Framework 프로젝트로 만들기 위한 라이브러리를 엄청나게 많이 추가해야했을 것임

그러나 우리는 Spring Boot 를 사용해 Spring Framework 프로젝트를 만들었기 때문에 라이브러리를 하나도 추가 하지 않았는데도 Spring Framework 프로젝트가 만들어진 것

 

우리가 Spring Boot로 만든 Spring Framework 프로젝트에 추가되어있는 라이브러리 목록을 확인해보자

프로젝트 내 [ Maven Dependencies ] (1) 를 열어보자

 

갑자기 스크롤이 생기며 jar 로 끝나는 이름들이 엄청나게 많이보일텐데 Spring Boot 를 사용하지 않고 우리가 직접 Spring Framework 프로젝트를 만든다면 여기서 보이는 엄청나게 많은 라이브러리를 하나씩 직접 추가해야했음

 

실제로 Spring Framework 를 배울 때 이러한 라이브러리들을 하나 하나 추가함...

Spring Boot 가 있어서 이렇게 편하게 Spring Framework를 만들 수 있다는 점에 감사할 정도...


Spring Boot 프로젝트를 가만히 살펴 보면 이상한 점이 있음

어딜까??

 

이상한 점은 바로!

 

이 부분이 왜 이상할까??

우리가 Spring Boot 로 프로젝트를 생성했던 시점으로 돌아가보자

 

우리는 분명 자바8 버전을 사용하도록 바꿨음

그런데 생성된 프로젝트의 자바 버전은?? 17버전(1)임

 

우리가 프로젝트를 생성할 때는 자바8 버전으로 지정했는데 실제로 만들어진 프로젝트는 자바17 버전을 사용하고 있음

왜 이런 차이가 생기는걸까??

 

혹시 sts가 잘못 보여주는건 아닐까??

프로젝트를 관리해주는 Maven의 설정 파일(pom.xml)을 열어보자

 

이 pom.xml 을 보면 프로젝트의 자바 버전을 확인할 수 있는데 역시나 자바17버전으로 되어있음

여기에 있는 숫자를 8로 바꾸면 되지 않을까? 싶지만 분명 자바 17버전으로 설정된 이유가 있을 것

 

좀 더 찾아보자

프로젝트 우클릭 (1) -> [ Properties ] (2) 클릭 -> [ Project Facets ] (3) 를 보면 우리 프로젝트의 또다른 설정을 볼 수 있음

 

여기서 Dynamic Web Module (4) 은 우리 서버가 사용하는 Servlet의 버전임

Servlet 버전이 6.0 임

Servlet 으로 공부할 때 배웠듯이 Servlet의 버전에 맞춰서 서버 버전과 자바 버전을 선택해야함

 

일반적으로 현재 Servlet을 공부할 때는 Servlet 4.0 버전을 사용하고 이에 따라 Servlet 4.0 버전은 Tomcat 9 버전을 사용하고 자바는 8버전을 사용함

Servlet 버전에 맞는 Tomcat 서버 버전과 자바 버전 선택 가이드는 Tomcat 공식 문서에서 확인할 수 있음

Tomcat 공식 홈페이지 ( https://tomcat.apache.org/ ) 로 들어가 [ which version ] (1) 항목 내 표(2) 를 보면 나와있음

 

(2)의 표를 보면 Servlet Spec 이 4.0 인 라인을 따라 옆으로 가다 보면 Tomcat 버전이 나와있고 또 옆으로 가다 보면 자바 버전이 나와있음

현재 우리가 Spring Boot 로 만든 Spring Framework 프로젝트의 Servlet 버전은 6.0 이므로 Tomcat 버전은 10 버전을 사용해야하고 자바는 11버전 이상을 사용해야함

 

 

일단 여기까지 확인한 바를 통해 우리가 Spring Boot 로 Spring Framework 프로젝트를 만들 때 자바8 버전을 선택 할 수 없다는 걸 알았음

그러면 Servlet 6.0 버전은 자바 11버전 이상을 사용해야하므로 프로젝트를 만들 때 자바8 버전 대신 자바 11버전을 선택하면 될까?

직접 해보면 알겠지만 이 역시도 자바 11버전이 무시되고 여전히 자바 17버전을 사용하는 프로젝트가 만들어짐

 

 

왜그럴까?

chatGPT가 없었다면 이러한 현상을 이해하기 위해 엄청나게 많은 시간이 걸렸을 것

그러나 우리의 든든한 서포터! chatGPT에게 물어보니 한번에 명쾌한 답을 내줬음

 

우리가 Spring Framework 프로젝트를 만들기 위해 사용한 Spring Boot 3.0.5 버전은 Spring Framework 6.0 버전인 프로젝트를 만들어주는데 Spring Framework 6.0 버전은 자바 17버전 이상이 필요하다는 것!

그래서 우리가 만든 프로젝트가 자바 17버전으로 설정된 것

 

Spring Boot 로 생성한 Spring Framework의 서버 설정과 관련된 자세한 사항을 알고 싶다면 아래 사이트에 가보자

https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.core

 

Common Application Properties

 

docs.spring.io


현재 현업에서 가장 많이 사용하는 Servlet 은 4.0 버전일 것

그에 따라 Tomcat 9, Java 8 버전을 사용할텐데...

 

우리가 만든 프로젝트의 Servlet, Tomcat, Java의 버전을 현업에서 사용하는 버전으로 바꿀 순 없을까?

바꿀 순 있지만 그러려면 Spring Boot 3.0.5 버전이 아닌 더 낮은 버전을 사용해 Spring Framework 프로젝트를 만들어야함

 

우리가 공부하는 환경과 현업의 환경이 많이 다르지만 그러려면 수 년 전의 책이나 자료를 찾아야하므로 이대로 진행하자

취업에 성공해 Spring Framework 를 사용한 프로젝트에 투입됐다면 Spring Framework의 버전과 Tomcat, Java의 버전을 잘 확인하고 차이가 난다면 신입 딱지가 붙어있을 때 얼른 상사 또는 사수에게 "저는 공부할 때 Spring Framework는 X 버전, Tomcat은 X 버전, Java는 X 버전을 사용했는데 혹시 제가 주의해야할 부분이 있을까요?" 라고 물어보자

아직은 "신입이니까..." 가 용서될 수도 있을 것ㅎㅎ


이렇게 우리 프로젝트의 Spring Framwork, Tomcat, Java의 버전을 확인해봤음

 

마지막으로 Tomcat의 포트 번호를 바꾸는 방법을 알아보자

Spring Boot 를 배울 때 포트 번호를 바꿔야하는 경우가 빈번하게 생기는 듯함

Tomcat의 포트 번호를 바꾸려면 [ 프로젝트 설정 값이 들어가는 곳 ] (1) 에 포트 번호를 설정하면 됨

 

Tomcat의 포트 번호를 8090 으로 바꿔 보자(2)

저장 ( Ctrl + S ) 한 후 프로젝트를 실행시켜보자

 

프로젝트를 실행시키는 방법은 이번까지만 설명하고 다음부터는 생략함

전 글 ( https://codingaja.tistory.com/97 ) 과는 조금 다르게 간단하게 실행시켜보자

실행 시킬 프로젝트(1) 를 클릭  -> 실행 버튼(2) 클릭

 

이제 [ Console 패널 ] (1) 을 확인해보면 Tomcat의 포트 번호가 8090 으로 바뀐걸 알 수 있음

 

프로젝트를 실행시키는데 포트 번호가 이미 사용 중이라 실행시킬 수 없다면 이와 같이 포트 번호를 바꿔 실행시키면 됨

 

저는 포트 번호를 8080 으로 사용할테니 여러분은 여러분의 환경에 맞게 포트 번호를 설정해 사용하면 됨

 

728x90
LIST

<< 학습 목표 >>

1. Spring Boot 프로젝트를 생성할 수 있다.

2. Spring Boot 프로젝트의 구성 요소를 설명할 수 있다.

3. Spring Boot 프로젝트를 실행시킬 수 있다.


sts로 샘플 Spring Boot 프로젝트를 만들어보자

 

1번 - sts 상단 [ File ] (1) -> [ New ] (2) -> [ Spring Starter Project ] (3) 로 만들거나

 

2번 - sts 내에서 [ Ctrl ] + N (1) -> spring 으로 검색 (2) -> [ Spring Starter Project ] (3) 를 선택해 만들면 됨

앞으로 하다 보면 단축키로 만드는 방법이 더 편해질 것이므로 2번 방법으로 Spring Boot 프로젝트를 만들자

 

Spring Boot 프로젝트를 만드는 창이 나옴

(1), (6). name : 프로젝트 명

(2). Type : 프로젝트를 관리할 도구

(3). Packaging : 프로젝트를 압축할 형식

(4). Java Version : 프로젝트의 자바 버전

(5). Group : 프로젝트를 관리할 회사 주소

(7). Version : 프로젝트 버전

(8). Description : 프로젝트 설명

(9). Package : 프로젝트 기본 패키지

 

프로젝트명(1)은 그대로 demo 로 사용하자

(2). Type -> Maven

(3). Packaging -> War

(4). Java Version -> 8

 

이 3가지만 바꾼 후 [ Next ] (10) 클릭

 

 

 

 

 

 

 

 

 

 

 

 

프로젝트를 Maven 으로 관리하면 프로젝트에 라이브러리를 추가할 때 직접 다운 받을 필요 없이 간단하게 URL만 입력하면 라이브러리를 추가할 수 있으므로 프로젝트를 관리할 도구로 Maven을 선택 했음

프로젝트를 관리할 도구로 Gradle 도 많이 사용하지만 아직도 현업에서는 Maven을 더 많이 사용하므로 Maven을 선택함

Spring Boot 를 한번 배워봤는데 Gradle로 배웠다거나 Gradle 을 알고 있다면 Gradle 을 써도 됨

 

우리는 JSP 를 사용해 웹 페이지를 만드는데 프로젝트를 jar 형식으로 압축하면 JSP 가 동작하지 않음

JSP가 동작하려면 프로젝트를 war 형식으로 압축해야함

그래서 압축 형식은 war 로 선택함

 

자바 버전의 경우 가장 높은 버전을 사용해도 되지만 아직도 현업에서는 8 버전을 많이 사용하므로 우리도 8 버전으로 선택함

 

 

이번에는 Spring Boot의 버전과 프로젝트에 필요한 라이브러리를 선택하는 창(1) 이 나옴

Spring Boot의 버전(2) 은 현재 상태 그대로 둠

 

이 글을 읽는 시점에 Spring Boot의 버전이 3. 으로 시작하는 다른 버전이라면 그대로 둬도됨

그러나 만약 이 글을 읽는 시점에 Spring Boot의 버전이 3. 이 아닌 4. 으로 시작하는 버전이라면 3. 으로 시작하는 버전을 선택하거나 이 글은 도움이 되지 않을 수 있음

 

이번에는 필요한 라이브러리를 검색해 추가 하자

Web 으로 검색(3) -> [ Spring Web ] (4) 선택

Spring Boot 를 사용해 웹 프로젝트를 개발할 것이므로 Spring Web 라이브러리를 선택했음

 

이제  [ Finish ] (5) 를 누르고 잠시 기다리면 sts 우측에 [ Package Explorer ] 에 생성한 프로젝트(1)가 보일 것

우리는 Spring Boot 프로젝트를 생성했으므로 반드시 프로젝트 명 옆에 [ boot ] 가 붙을 때(2) 까지 기다려야함

 

Spring Boot 프로젝트 생성 후 sts 하단에 [ Spring Java Reconcile ] 창(1)이 떴다면 [ Yes ] (2) 를 누르자

이는 "Spring Boot 프로젝트에 자바 코드를 넣을 때 sts가 도와줄까?" 라고 물어보는 것


Spring Boot 프로젝트를 열어 구성 요소를 살펴보자

 

(1). 컨트롤러, 서비스, 모델 등 자바 소스 파일이 들어갈 곳

 

(2). HTML, CSS, JS, 이미지파일 등 정적인 컨텐츠가 들어갈 곳

 

(3). 프로젝트 설정 값이 들어갈 곳

 

(4). JSP 파일 등 동적인 컨텐츠가 들어갈 곳

 

(5). 프로젝트 관리 도구인 Maven 설정이 들어갈 곳

 

 

 

 

 

 


이제 프로젝트를 실행시켜보자

Servlet에서는 프로젝트를 실행시키기 위해서 서버를 추가하고 서버에 프로젝트를 Add 시키고 서버를 실행시키고 ... 등의 여러 과정을 거쳤지만 Spring Boot 는 서버를 내장하고 있음

기본적으로 톰캣을 사용하므로 톰캣 서버를 사용하고자 한다면 별도의 설정없이 곧바로 실행시킬 수 있음

 

Spring Boot 프로젝트를 실행시킬 때는 sts 하단 [ Boot Dashboard ] (1) -> (프로젝트명) 우클릭 (2) -> (Re)start (3)

 

 

만약 sts의 어딜 봐도 [ Boot Dashboard ] 가 안보인다면...

더보기

sts 상단 [ Windows ] (1) -> [ Show View ] (2) -> [ Other ] (3)

 

[ boot ] 로 검색(1) -> [ Boot Dashboard ] (2) 선택 -> [ Open ] (3)


 

Spring Boot 프로젝트를 처음 실행 시키면 아마도 다음과 같이 [ 액세스 허용 ] (1) 창이 뜨는데 [ 액세스 허용 ] 을 누르자

이 창이 뜨지 않을 수도 있으니 뜨지 않았다고 해서 걱정할 필요는 없음, 그래서 아마도 라고 말한 것

 

 

Spring Boot 프로젝트를 실행시켰다면 [ Console 패널 ] (1) 에 다음과 같이 서버가 실행됬다는 메세지(2) 가 나옴

이 메세지를 분석하면

(1). Tomcat 10.1.7 버전의 서버를 사용하고 있음

(2). 서버의 포트 번호는 8080 번

 

 

이제 브라우저에서 실행 시킨 Spring Boot 프로젝트로 접근하자

브라우저 주소창에 http://localhost:8080 입력

Spring Boot 프로젝트가 정상적으로 실행됐다면 왼쪽과 같은 페이지가 보임

어떤 문제로 인해 Spring Boot 프로젝트가 실행되지 못했다면 오른쪽과 같은 페이지가 보임

 

 

Spring Boot 프로젝트가 정상적으로 실행됐는데 Error Page 가 보이는 이유는 우리가 프로젝트를 만들기만 했지 요청을 받을 컨트롤러를 추가하지 않았기 때문임

 

어떤 문제로 인해 서버가 실행되지 못했다고해도 괜찮음

다음 글에서 설명할 것들을 잘 듣고 이해하며 따라온다면 서버가 실행되도록 직접 수정할 수 있을 것

728x90
LIST

<< 학습 목표 >>

1. Framework에 대해서 설명할 수 있다.

2. Spring Framework와 Spring Boot의 차이를 설명할 수 있다.

3. STS를 설치할 수 있다.

4. STS에 필요한 초기 설정을 할 수 있다.


Spring Boot는 기본적으로 Servlet, JSP 학습이 이뤄진 후에 공부하는 것을 추천함

Servlet, JSP 를 모른다면 우선 Servlet, JSP 를 학습한 후에 오자

Servlet, JSP 를 몰라도 Spring Boot 를 배울 순 있지만 이해하긴 어렵고 외울 수 밖에 없음

이해 없이 무조건 암기는 한계가 있음

 

Spring Boot 를 더 잘 이해하고 싶다면 Spring Framework 를 공부하면 됨

Spring Boot는 Spring Framework를 쉽게 생성하기 위한 도구라고 생각하면 됨

 

Spring Framework는 프로젝트 개발에 필요한 설정을 하나 하나 해줘야함

또한 설정끼리 호환이 잘되도록 버전도 맞춰줘야하는 경우가 많음

 

Spring Boot는 그 설정을 하나의 묶음으로 제공하기 때문에 설정을 하나 하나 해줄 필요가 없고 호환이 잘되는 설정끼리 묶어서 제공함

 

- "당장! Spring Framework를 사용한 프로젝트를 개발하고 싶다" Spring Boot 부터 시작

- "시간적 여유가 있거나 암기 위주가 아닌 이해 위주의 공부를 하고 싶다" Spring Framework 부터 시작


Framework 란 Frame + work 의 합성어라고 생각하면 됨

Frame은 틀이라는 뜻이고 work는 일이라는 뜻으로 "틀 안에서 일을 한다" 로 해석할 수 있음

 

Servlet/JSP 를 사용하면 웹 프로그램을 쉽게 개발할 수 있지만 Spring Framework에 비하면 제공하는 기능이 매우 한정적임

 

예를 들어 클라이언트가 서버로 정수값을 보냈을 때 Servlet은 클라이언트가 보낸 값을 무조건 문자열로 받으므로 클라이언트가 보낸 정수값을 우선 문자열로 꺼내고 정수값으로 변환해야함

그러나 Spring Framework를 사용하면 변환 없이 정수값으로 받을 수 있음

 

클라이언트가 서버로 정보, 예를 들어 회원 정보(이름, 나이, 연락처)를 보냈다면 Servlet은 그 정보를 문자열로 받는건 물론이고 클라이언트가 보낸 회원 정보 내 데이터(이름, 나이, 연락처)를 하나씩 꺼내서 나이는 정수로 변환한 다음 클래스를 사용해서 하나의 정보로 합쳐야함

그러나 Spring Framework를 사용하면 변환, 합칠 필요 없이 정보로 받을 수 있음

 

이 외에도 Spring Framework는 제공하는 기능이 매우 다양하기 때문에 웹 프로그램 개발을 할 때 개발자의 수고를 덜어줌

만약 Servlet, JSP 공부를 했는데 위 말이 이해가 안된다면 아직 Servlet, JSP 공부가 덜됐다는 뜻으로 다시 Servlet, JSP를 공부하고 오거나 그냥 그렇구나 정도로만 생각하고 넘어가도 됨

 

Spring Framework를 사용하면 개발자의 수고를 덜어주기는 하지만 Framework 라는 말이 붙은 것처럼 반드시 Spring의 틀 안에서 작업 해야하기 때문에 추가적으로 Spring Framework를 공부해야한다는 단점이 있음

또한 Spring Framework를 잘 모른 상태로 이를 사용해 개발을 하면 Spring Framework를 사용했지만 사용하지 않은(?) 마치 슈뢰딩거의 고양이 와 같은 상태의 프로젝트가 될 수 있음


Spring Boot 는 자체적으로 웹 서버를 내장하고 있어 웹 서버를 설치하고 연동하는 과정이 필요 없음

 

Spring Boot 는 이름에 starter 가 들어간 라이브러리를 제공함

이는 해당 라이브러리와 라이브러리를 사용하는데 필요한 부가적인 라이브러리까지 모두 포함하고 있는 "라이브러리 묶음(패키지)" 임

라이브러리와 부가적인 라이브러리 간에 버전을 맞춰줘야 제대로 동작하는데 이런 부분을 생략할 수 있게 버전이 다 맞춰진 패키지임


Spring Boot 로 개발하기 위한 개발툴을 설치하자

이 글의 처음에 언급했듯 Servlet, JSP는 반드시 선행되야하기 때문에 Java 설치 방법, 환경변수 설정 방법 등은 설명하지 않음

혹시 Servlet, JSP를 학습할 시간이 없어서 못한다 라고 하시는 분은 인터넷에 Java 설치 방법과 Java 환경변수 설정 방법을 찾아보고 Java를 설치한 이후에 다음 내용들을 보자

 

Spring Boot 개발툴은 이클립스 + STS 애드온이 설치된 [ Spring Tools 4 for Eclipse ] 를 사용할 것임

만약 Intelli J 를 사용하고 있다면 프로젝트 생성 방식에서 버튼의 이름만 다를 뿐 프로젝트를 생성하는 방법이나 생성 후 의 프로젝트 모습 등은 완전히 동일하기 때문에 Intelli J 로 Spring Boot 프로젝트 생성 방법만 따로 검색해보거나 Intelli J 는 잠시 두고 여기서 설치하는 Spring Tools 4 for Eclipse 로 학습 해도 무방함

 

우선 인터넷에서 sts 로 검색(1)하자

검색 후 검색 결과에 [ Spring | Home ] 으로 나오는 검색 결과(2)를 눌러 Spring 공식 홈페이지로 들어가자

검색 결과에 없다면 직접 이동 하자 ( https://spring.io )

 

Spring 공식 홈페이지 안에서 [ Projects ] (1) -> [ Spring Tools 4 ] (2) 로 이동

 

Spring Tools 4 페이지 내에서 스크롤을 살짝 내리면 다음과 같이 [ Spring Tools 4 for Eclipse ] 항목이 있음

이 항목 내에서 마지막에 있는 [ 4.18.0 - WINDOWS X86_64 ] (1) 를 선택해 Spring 개발 툴인 STS를 다운 받자

 

다운 받은 파일을 확인해보면 아마도 우리가 처음보는 확장자가 jar인 파일이 보일 것

이는 자바를 사용해서 압축한 파일이라고 생각하면 됨

자바를 사용해서 압축했기 때문에 압축을 풀 때도 자바를 사용해서 압축을 풀어야함

 

자바를 사용해서 압축을 풀려면 우선 cmd 창을 열어야함

바탕화면 내 제일 하단에 있는 작업 표시줄 내 [ 시작 ] 버튼 (1) 클릭 -> 그 상태 그대로 cmd 입력 (2) -> 명령 프롬프트 (3) 실행

 

이제 cmd 창 내에서 다운 받은 STS 압축 파일이 위치한 곳으로 이동해야함

그러기 위해서 다운 받은 STS 압축 파일의 경로를 알아보자

 

키보드의 [ 시작 버튼 + E ] 를 누르면 [ 파일 탐색기 ] 가 열림

또는 여러분이 알고 있는 방법으로 파일 탐색기를 열자

 

파일 탐색기 내 우측 메뉴에서 [ 다운로드 ] (1) -> 다운 받은 STS 압축 파일 우클릭 (2) -> [ 속성 ] (3) 클릭

 

속성 창 내에서 [ 위치 ] (1) 가 다운 받은 STS 압축 파일의 경로임

위치를 복사 하자

 

그 후 cmd 창으로 돌아가 cd "(복사한 위치)" (1) 를 입력 후 Enter 키를 누르자

그럼 cmd 창의 경로가 (2)와 같이 바뀐걸 알 수 있음

cmd 창이 다운 받은 STS가 위치한 경로로 이동한 것

 

cmd 창이 다운 받은 STS가 위치한 경로로 이동했으니 다음과 같이 java 를 사용해 압축을 푸는 명령(1)을 입력하자

대소문자와 띄어쓰기 꼭 맞춰야함 java 띄고 -jar 띄고 spring~~ 임

한 가지 팁으로는 java -jar spring 까지만 쓰고 키보드의 Tab 키를 누르면 나머지는 자동 완성됨

 

위 명령을 다 입력했으면 Enter 키를 눌러 자바를 사용해 압축 푸는 명령을 실행하자

그러면 아래와 같이 압축 해제 상태(1)가 나오며 압축이 풀림

 

압축이 모드 풀려 다음과 같이 커서가 깜박이고 있다면(1) cmd 창을 닫자

 

이제 다운로드 폴더를 보면 다음과 같이 sts~ 폴더(1)가 있을 것

 

만약 sts~ 폴더가 없다면 cmd 창을 여는 부분부터 다시 따라와보자

sts~ 폴더 안으로 들어가면 [ SpringToolSuite4 ] (1) 가 있음

이 프로그램이 Spring Boot 개발툴임

 

Spring Boot 개발툴을 실행시켜보자

 

실행시킨 후 약간의 시간이 흐르면 아래와 같은 [ Workspace ] 를 지정(1)하는 창이나옴

Workspace 란 이 개발툴을 사용해 생성한 프로젝트가 위치할 기본 경로임

Workspace 는 그대로 사용해도 되고 [ Browse ] 를 눌러 다른 폴더를 지정해도 됨

 

이 화면은 개발툴을 실행시킬 때 마다 매번 열리므로 [ Use this as ~ ] 체크 박스(2) 를 체크 해 다음부터는 묻지 않도록 하자

설정이 끝났다면 [ Launch ] (3) 를 눌러 개발툴을 실행시키자

 

여기까지 개발툴을 설치했음

개발툴은 일반적으로 sts 라고 부르니 우리도 앞으로 sts라고 부르자


마지막으로 꼭 해줘야하는 간단한 sts 설정을 하고 마무리 하자

 

sts는 이클립스의 최소한 + Spring Boot 개발에 필요한 환경 이 설정된 개발툴임

앞으로 우리가 HTML, CSS, JSP 파일 등을 추가해 학습을 해야하는데 현재 sts 에는 이런 파일을 추가할 수 있는 설정이 되어있지 않음

이러한 파일들을 추가할 수있도록 설정을 하자

 

sts 내 상단 [ Help ] (1) -> [ Eclipse Marketplace... ] (2) 클릭

 

[ Eclipse Java EE developer tools ] 로 검색(1) -> Eclipse Java EE developer tools [ install ] 버튼(2) 클릭

검색 결과가 나오기 까지 시간이 다소 소요되므로 기다리면 됨

 

설치할 항목들이 나오는데 모든 항목을 다 설치하도록 체크(1) -> [ Confirm ] (2) 클릭

 

설치에 동의함(1) 을 선택 -> [ Finish ] (2) 클릭

 

sts 오른쪽 하단(1)에 작게 설치되고 있다는걸 알 수 있음

 

설치 중 다음과 같이 다시 한번 "진짜 설치하는거 맞아?" 라고 물어보는 창(1)이 뜨는데 [ 맞다 ] (2) 로 체크 -> [ Trust Selected ] (3) 클릭

( 정확히 설명하면 진짜 설치하는거 맞아? 창은 아니지만 그렇게 생각하고 넘어가자 )

 

 

설치가 다 되고나면 [ Restart Now ] (1) 를 눌러 sts 를 재시작하자

 

 

 

한글 관련된 것들이 정상적으로 보이도록 문자열 인코딩을 UTF-8 로 설정해줘야함

 

sts 내 상단 [ Window ] (1) -> [ Preferences ] (2) 클릭

 

Preferences 창 내에서 [ encoding ] 으로 검색(1) -> [ Workspace ] (2) 선택 -> [ Text file encoding ] (3) 이 UTF-8 이 아니라면 UTF-8 로 설정 후 [ Apply ] (4)

 

그 후 나머지 항목(CSS Files, HTML Files, JSP Files, XML Files)의 Encoding을 모두 UTF-8 로 변경

 

마지막으로 JSON 으로 검색 (1) -> [ JSON Files ] (2) 의 encoding (3) 도 UTF-8 로 변경

변경 후 [ Apply and Close ] (4) 클릭

 

Encoding 을 UTF-8 로 설정해야 한글이 제대로 입력됨

728x90
LIST