Spring

[Spring] Spring Initializr를 통한 기초 예제 다루기

jongh0 2025. 6. 11. 20:29

[Spring]

스프링(Spring)은 자바 기반의 가장 인기 있는 오픈 소스 프레임워크 중 하나로, 기업용 웹 애플리케이션을 쉽고 효율적으로 개발할 수 있도록 도와준다.

 

[Spring framework]

  • POJO(Plain Old Java Object) 기반의 프로그래밍을 지원
  • 웹, 데이터 보안, 메시징 등 다양한 모듈을 제공
  • 경량 컨테이너 기반의 자바 프레임 워크

 

[Spring Boot]

  • 스프링을 더 쉽게 사용할 수 있게만든 프로젝트
  • 복잡한 XML 설정 없이 어노테이션 기반으로 구성된다.
  • 내장 톰캣 서버로 바로 실행이 가능(main() 함수 사용)
  • 의존성 관리, 자동 설정 등 지원

 

 해당 게시물에서는 회원가입의 JDBC 구조중에서 Controller에 해당하는 jsp 응답 및 사용자 요청(데이터) 처리를

스프링 프레임워크를 통해서 작업하는 예시를 다룬다.

 

[IntelliJ 무료버전 + Spring Initializr를 통한 환경설정]

1. Spring Initializr 홈페이지 접속

 

https://start.spring.io/

해당 웹페이지로 이동하게 되면 다음과 같은 화면을 볼 수 있다.

 

 

어떤 방식의 프로젝트와 언어 그리고 스프링 부트의 버전을 선택하고 Metadata에서는

Group과 Artifact를 합쳐 패키지 명이 생성된다. 알맞는 자바 버전을 선택해주고 Dependencies에서 사용할 기능을 추가해주면된다. 해당 게시물에 예제에서는 Spring Web을 통해 Tomcat 서버와의 통신으로 웹페이지를 구성하고 Lombok을 통해서 객체 캡슐화에 기능을 사용기위해 두 가지를 담았다.

 

설정을 마무리하고 Generate 버튼을 누르게 되면 zip형태의 파일을 다운로드 받을 수 있다. 해당 파일을 압축풀고 인텔리제이를 통해서 해당 폴더를 열어보면 프로젝트 형식의 구조를 가지고있다.

 

 

해당 디렉토리 구조에서 src > main > java에 설정한 패키지가 존재하며 해당 패키지를 내에 자바 코드를 통해서 사용자 요청을 처리하고,

 

다음과 같이 main 모듈안에 webapp이라는 폴더를 만들어서 사용자에게 보여줄 jsp파일을 관리하였다.

 

일단 2가지의 사전 설정을 필요로 한다.

 

 

 

JSP 파일을 컴파일하고 실행하기 위한 Tomcat Jasper 엔진

JSP와 서블릿을 개발할 때 필요한 기본 인터페이스 (HttpServletRequest, HttpServletResponse 등)를 제공하는 api

JSTL (JSP Standard Tag Library)**의 API 인터페이스를 제공하는 api 등을 포함하고있다.

 

해당 파일에서 dependencies 블럭 내에 추가로 넣어주고 코끼리 버튼을 눌러주면 의존성이 적용된다.

 

 

두번째로

resources 폴더내에 있는 application.properties 파일이다. 

해당 파일에는 아마 Name으로 지정한 다음과 같은 형식의 한줄밖에 없을 것이다.

 

해당 파일에서는 spring 기능의 view resolver 기능을 설정할 수 있다. 좀있다 패키지내에서 사용자 요청을 구분해서 처리하는 어노테이션에서 값을 가져와 미리 설정해둔 jsp 파일경로의 접두와 확장자의 접미(.jsp)를 미리 설정하는 작업을 한다.

 

 

다음과 같이 spring.mvc.view.(prefix/suffix)를 통해서 jsp파일 경로에 고정적인 부분을 prefix에 설정하고

확장자의 .jsp를 suffix에 설정하면 된다. 이렇게 설정하게 되면 직접 jsp 경로를 적어주지 않더라도

어노테이션에 들어가는 요청형식을 보고 해당 요청 키워드에 맞춰서 jsp파일에 대해 redirect 또는 forwarding 처리를 진행하게 된다.

 

일단 메인화면에서의 home 요청에 대해서 처리하기위한 HomeController 구현이다.

 

HomeController가 Controller의 작업(get, post 등)의 요청처리를 담당하는 클래스의 의미로 @Controller 어노테이션이 붙었고, @GetMappin("home") + 메서드 방식을 통해서 home이라는 Get방식의 요청이 들어왔을 때, 아래 메서드가 실행되도록 한다.

 

여기서 아래 메서드 내용이 아무것도 없지만 정상적으로 /WEB-INF/views/home.jsp에 포워딩처리가 자동으로 된다.

 

이것은 아까 spring.mvc.view.(prefix/suffix) 통한 파일경로와 확장자를 요청 키워드 앞과 뒤에 붙혀서 경로를 만들고 해당 경로에 포워딩이 자동으로 처리가 되도록 하는 스프링 기능이다.

 

home.jsp는 단순하게 버튼 2개로 회원가입과 로그인에 get방식의 요청을 보내는 다음과 같은 형식으로 작성하였다.

 

다음은 회원가입 페이지 요청에 대한 get방식과 post방식 처리 방법에 대해서 알아보자

 

 

 

GetMapping은 home요청과 동일하게 join.jsp를 포워딩 해주도록 메서드를 비워두었다. 여기서

home.jsp에 href속성값은 member/join 요청을 보내도록하는데 @GetMapping 어노테이션에서는 join으로만 값이 설정되어있다.

 

이것은 클래스 위에 설정된 @RequestMapping어노테이션으로 member/join , member/login, member/delete 와 같은 작업에서 중복되는 member부분을 묶어둔 것이다. 그래서 아래서 get이나 post 매핑 어노테이션을 적을 때 member를 제외하고 적어도 상관없다. 추가로 매핑 어노테이션에서의 슬래시(/)는 있던 없건 상관이 없다.

 

아래에 @PostMapping("join")은 위에 묶인 member/join 요청을 처리방식을 담고 있으며, 기존에는 Service, Dao 를 거쳐 Sql 처리 결과를 반환하는게 맞지만 컨트롤러에서 잘 실행되었다고 가정하고 result를 1로 설정하였다.

 

올바르게 처리되면 redirection 방식으로 member/login 요청을 처리하려 로그인 페이지로 넘기려 한다면

return "redirect:login"으로 넘길 수 있다.