티스토리 뷰
실습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을 설계하겠습니다.
'Spring > SpringBoot & AWS' 카테고리의 다른 글
SpringBoot로 게시판 만들기 실습 / 4 - 2. 로그인, 로그아웃 기능 구현하기 (5) | 2020.12.11 |
---|---|
SpringBoot로 게시판 만들기 실습 / 4 - 1. 로그인, 로그아웃 기능 구현하기 (0) | 2020.12.09 |
SpringBoot로 게시판 만들기 실습 / 3. DB설계, 화면설계 (0) | 2020.12.08 |
SpringBoot로 게시판 만들기 실습 / 1. 개발환경 준비 및 프로젝트 생성 (0) | 2020.12.07 |
- 20200330
- 20200425
- 백준
- 20200503
- chapter7
- 20200403
- 20200317
- 생활코딩리눅스
- 20200428
- 20200420
- 20200624
- 20200319
- 20200429
- 20200510
- 20200622
- 20200413
- 20200502
- likelion
- 20200415
- chapter8
- 20200427
- 20201204
- 20200406
- 20200512
- 20200423
- 20200504
- 20200424
- 20200804
- 20200421
- 20200417
- Total
- Today
- Yesterday