| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- cookie 탈취
- ISMS
- Los
- Error based sql injection
- 세션
- 웹 개발
- 문제 풀이
- union sql injection
- 모의해킹
- blind sql injection
- 로그인페이지
- lord of sql injection
- ISMS-P
- 보안 패치
- 게시판 만들기
- FridaLab
- 웹개발
- 증적 사진
- file upload
- php
- sql injection point
- 웹 해킹
- CTF
- JS
- XSS
- 보고서
- 뇌피셜
- sql injection
- csrf
- MySQL
- Today
- Total
Backouts_ Logbook
스프링 부트 입문 [첫 프로젝트 생성하기] 본문
스프링 부트 첫 프로젝트 생성하기
이유
웹해킹을 계속 공부하면서 제가 가진 웹에 대한 이해가 부족하다고 느껴졌습니다. 사실 PHP, MySQL을 이용한 개발은 국내에서 자주 사용되지도 않는다는 점도 알게 되었고요... 그래서 이전에 Java를 배운 경험과 스프링 프레임워크를 잠깐 사용해 본 경험을 살릴 겸, 스프링 부트를 처음부터 공부하고자 합니다.
프로젝트 생성
프로젝트 생성 절차를 진행하면서 나오는 키워드를 바탕으로 스프링의 기본 용어, 개념을 다시 정리했습니다.
1. 스프링 프로젝트 jar를 생성합니다.
=> 프로젝트 설정을 한 뒤에, jar 파일을 생성합니다.
Gradle, Maven
컴파일, 테스트, 의존성 관리, 패키징 등을 자동으로 해주는 빌드 도구입니다.
Gradle - Groovy => Groovy 언어를 기반으로 Gradle 빌드 스크립트입니다.
그룹(Group)
프로젝트를 구분하기 위해 도메인 기반의 식별자입니다.
ex) com.spring-test처럼 도메인을 반대로 사용합니다.
아티팩트(Artifact)
해당 프로젝트의 이름으로 jar 파일의 명이 됩니다.
ex) first-spring.jar
이름(Name)
Maven 도구에서는 사람들이 보기 편한 이름 등으로 사용되지만, Gradle에서는 아티팩트와 동일하게 설정됩니다.
ex) spring.jar 파일의 name이 myFirstApp일 수도 있음
=> 실제로는 아티팩트와 동일하게 쓰는 게 대부분이라고 합니다.
빌드 도구: Gradle - Groovy
언어 : Java
스프링 부트 버전: 3.4.6
그룹: com.almond
아티팩트: first-spring
이름: first-spring
패키지명: com.almond.first-spring
패키지 타입: Jar
Java 버전: 21

2. 압축을 풀고 해당 폴더를 vscode로 열면 Gradle이 빌드를 시작합니다.
=> build.gradle 파일에 설정된 의존성을 기반으로 프로젝트에 필요한 라이브러리를 다운로드 한 뒤, 폴더 구조와 설정 파일들을 생성합니다.

3. 테스트용 Controller 파일을 생성해서 GetMapping 어노테이션을 사용하려고 하는데 import 에러가 발생합니다.
=> 원인은 build.gradle에 스프링 웹과 관련된 라이브러리를 추가하지 않았기 때문입니다.
컨트롤러(Controller)
컨트롤러는 웹 페이지에서 온 요청을 직접 받아서 처리하고 결과를 반환하는 역할을 합니다.
ex) http://spring.com/ => @GetMapping("/") 어노테이션이 붙은 Controller가 요청을 처리함
어노테이션(annotation)
자바 코드에 붙일 수 있는 주석처럼 보이지만 특별한 의미가 있는 메타 데이터입니다. 이를 이용해서 각 코드에 특별한 동작이나 설정을 추가할 수 있고, 컴파일, 실행 시 컴파일러나 프레임워크가 어노테이션을 해석해서 자동으로 동작을 수행합니다.
ex) @GetMapping("/") 어노테이션이 붙은 메서드는 /로 온 GET 요청을 받았을 때 동작하는 메서드가 됩니다.

4. build.gradle에 스프링 웹과 관련된 라이브러리를 추가합니다.
=> 해당 의존성을 추가한 뒤, gradle를 다시 빌드하면 필요한 라이브러리를 자동으로 다운로드해서 프로젝트에 추가됩니다.

5. ./gradlew clean build 명령어를 실행하여 Gradle 빌드를 수행합니다.
=> 기존 빌드를 정리하고, 프로젝트를 다시 컴파일하고, 빌드하는 과정을 거칩니다.

6. @SpringBootApplication 어노테이션이 붙은 클래스의 main 메서드를 실행하여 스프링 애플리케이션을 시작합니다.
=> 스프링 부트의 설정 후 내장된 톰캣을 실행하여 웹 애플리케이션이 구동됩니다.

7. 그런데 404 오류가 떴습니다.
=> 404는 해당하는 리소스가 없다는 의미로 HelloWorldController.java가 정상적으로 작동하지 않았다는 의미입니다.

8. @ResponseBody 어노테이션을 추가합니다.
=> 이 어노테이션은 메서드의 리턴값을 View로 해석하지 않고, HTTP 응답의 Body에 그대로 담아 전송하도록 지정합니다.
=> 이 어노테이션이 없는 경우 "Hello" 문자열을 리턴하면, 스프링 프레임워크는 View 이름으로 해석해 Hello.html과 같은 View 파일을 찾아서 HTTP 응답에 추가합니다.

9. Hello, World 문자가 정상적으로 출력되는 것을 확인합니다.

'웹 해킹 > 웹 개발' 카테고리의 다른 글
| 스프링 부트 [Spring MVC & 파라미터 처리] (0) | 2025.05.28 |
|---|---|
| [Lord of SQL Injection] bugbear 문제 풀이 (1) | 2025.04.22 |
| 불충분한 세션 만료 보안 패치 (0) | 2025.04.14 |
| CSRF 보안 패치 (1) | 2025.04.11 |
| 약한 문자열 강도 보안 패치 (0) | 2025.04.07 |