티스토리 뷰

실습1에서는 프로젝트를 생성하고, application.properties파일을 application.yml파일로 교체했습니다.

 

이번장에서는 서버를 구동하여 첫 JSP 페이지를 띄워보겠습니다.

 

실습1에서 생각해볼 것

1) application.yml을 사용하는 이유

2) 프로젝트 생성시 Artifect란?

Goal 

 - pom.xml 수정

 - Mysql 데이터베이스 생성

 - application.yml 작성

 - JSP파일 생성 및 서버실행

1. pom.xml 수정

 

생성된 프로젝트의 pom.xml파일에 다음과 같은 두 의존성을 추가해 줍니다

 - xml 파일도 계층 적으로 작성되어있기 때문에 가장 바깥쪽의 <dependencies>안에 붙여넣기하면 됩니다.

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
</dependency>
<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

 [추가한 의존성 설명]

- jstl 

: The JavaServer Pages Standard Tag Library (JSTL)은 유용한 JSP 태그들의 모음입니다. JSP application에서 일상적으로 사용되는 핵심 기능들을 encapsulate하여 제공하고 있습니다.

- tomcat-embed-jasper

: SpringBoot에서는 JSP사용을 권장하지 않습니다. 따라서 SpringBoot에서 JSP파일을 컴파일하기 위해서는 tomcat-emebed-jasper를 의존성에 추가해야 합니다.

 

2. Mysql 데이터베이스 생성

 - mysql workbench를 통해 프로젝트에 사용될 데이터베이스를 생성하겠습니다. 

 - 다음과 같은 SQL문을 작성한 뒤 데이터베이스를 생성해주세요

create database coronabook;

use coronabook;

3. application.yml 작성

 - application.yml에 port, context-path, view resolver, datasource를 설정하겠습니다. 

 - 다음의 사진과 같이 application.yml의 내용을 작성해주시면 됩니다. datasource의 username과 password는 mysql 사용자 id, 비밀번호를 기입해주시면 됩니다.

 [application.yml 설정 설명]

- port : 8000

: 스프링 부트는 Tomcat 서버를 실행하기 위해 기본적으로 8080포트를 사용합니다. yml파일에서는 port번호를 설정할 수 있습니다. 본 프로젝트에서는 포트번호를 8000번으로 설정했습니다.

- context-path

: URL에는 path가 있습니다. ( developer.mozilla.org/ko/docs/Learn/Common_questions/What_is_a_URL : URL이란?) context-path는 URL path의 prefix(path가 나눠진 구획에서 맨앞의 부분)를 의미합니다. ex) 로컬에서 우리의 프로젝트를 구동하면 위의 port와 context-path설정으로 인해 http://localhost:8000/coronabook이 기본 URL이 됩니다.

 - spring.mvc.view.prefix & suffix 

: 모든 MVC 프레임워크는 views단을 작동하게 하는 방법을 제공합니다. Spring 프레임워크는 view resolvers통해 그런 역할을 제공합니다. prefix와 suffix를 설정함으로서 views네임으로 지정한 String값을 실제 views로 mapping합니다. (이 부분은 현재 이해하기 어려울 수 있습니다. 추후에 Controller 코드를 작성하면서 다시한번 언급하겠습니다.)

- detasource

 : datasource는 물리적 data source에 접근하기 위한 factory (factory 디자인 패턴을 참고하면 좋습니다)입니다. JDBC에서 작성했던 DriverManager facility의 대안으로 database connection을 생성하기 위해 URL과 고유식별 코드를 사용합니다. 

 - driver-class-name : MySQL Connector의 java.sql.Driver를 implements하는 클래스명을 입력합니다. 

 - url : database의 URL(데이터베이스의 위치)를 나타냅니다. 

 - username, password : mysql 사용자의 아이디와 비밀번호 입니다

 

4. JSP파일 및 컨트롤러 생성

1) JSP파일 생성

- 다음의 사진에서 노란색으로 하이라이트된 경로에 html파일과 jsp파일을 생성합니다.

[폴더 구조 설명]

 - SpringBoot의 프로젝트 내 정적인 파일 (html, css 등)은 static 폴더에 저장합니다.

 - JSP와 같은 views파일은 src/main/webapp/WEB-INF/views 안에 저장합니다.

 * Spring MVC에서 View는 사용자가 보게 될 화면입니다. 이번 프로젝트는 View단을 JSP로 구성하겠습니다. (최종적으로는 react로 View단을 바꿔보는 작업을 진행할 예정입니다) ( JSP란? )

 - JSP파일은 url을 통한 직접적인 접근을 하지 못하게 WEB-INF폴더 아래 위치하게 됩니다.

 * WEB-INF 디렉토리는 외부에서 접근이 불가능합니다. Spring의 내부적인 동작방식을 통해 jsp파일에 접근할 수 있습니다.  ( lhoris.tistory.com/32 )

 

2) Controller 생성

 - 다음으로 com.coronabook.controller패키지를 생성한 뒤 HelloController.java파일을 만들어줍니다.

 - HelloController.java의 내용은 다음 사진과 같이 작성합니다.

 

[HelloController 코드 설명]

- @Controller

 : Spring의 Controller class는 @Controller으로 간단하게 어노테이션 될 수 있습니다. @Controller을 작성함으로써 classpath scanning으로 해당 클래스를 인식하게 되며, 특정한 interface나 다른 class를 상속하지 않아도 Controller의 기능으로 사용할 수 있습니다.

 * Controller란?

 : MVC패턴에서 Controller단에서는 사용자의 data를 받아, 유효성 검사를 하며 business로직의 기능들을 요청하고 요청에따른 결과값을 받아 다시 사용자에게 가공된 data를 리턴합니다. 

 - @GetMapping(value= "/")

 : @GetMapping은 DispathcerServlet에게 URL에 "/" path로 들어온 GET방식의 요청을 받아 Hello 메서드를 실행시라고 말해줍니다. 즉, 사용자의 요청(request)와 controller의 method를 매핑해줍니다.

 - model.addAttribute("message", "Hello World!");

: response할 페이지(index.jsp)에 model값을 제공합니다. model은 map자료형으로 Key와 Value를 갖습니다. "message"라는 이름에 "Hello World!"의 값이 들어고 해당 값은 response될 index.jsp페이지에서 ${message}와 같은 방식으로 사용할 수 있습니다. 

 - return "index";

 : Hello 메서드는 String을 리턴하지만 여기서 리턴하는 index는 단순한 String값이 아닙니다. application.yml에서 설정한 prefix와 suffix가 index에 부착되어 결과적으로 Hello메서드는 view단인 index.jsp페이지를 리턴하게 됩니다.

 

3) index.jsp 작성

 - index.jsp는 다음과 같이 작성해줍니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h1>${message}</h1>
</body>
</html>

5. 서버 실행 

 - JSP파일 작성까지 완료됐으면 이제 SpringBoot Server를 실행합니다.

 - src/main/java -> com.coronabook.springboot 패키지에 있는 CoronabookProjectSpringbootApplication.java 파일에서 오른쪽 마우스는 클릭하면 Run as를 선택할 수 있고 Run as에서 SpringBootApp을 실행하면 서버가 작동합니다.

 - 서버가 작동한 뒤 브라우저를 열고 http://localhost:8000/coronabook를 주소창에 붙여 넣으면 다음 그림과 같이 Hello World가 출력되는것을 확인할 수 있습니다.

 

자 이제 환경설정과 첫 서버 구동이 완료되었습니다.

다음장에서는 본격적으로 MVC패턴에 따른 controller, model을 설계하겠습니다.

댓글