JAVA

스프링부트 블로그 만들기 – 1강 개발 환경설정

blog app

스프링부트 블로그 만들기 – 1강 개발 환경설정

개발 환경설정

인코딩 (UTF-8)

윈도우 환경 설정 경로 : window – preference

맥 환경설정 경로 : SpringToolSuite4 – preference (단축키 : command + , )

  1. preference 검색 창에 ‘enc’를 검색한다.
  2. workspace, CSS Files, HTML Files, JSP Files에서 UTF-8 설정을 해준다.
spring encoding

새 프로젝트 생성

1.Spring Starter Project 로 새 프로젝트를 생성한다.(프로젝트명 : blogapp)
spring

maven : 라이브러리 저장소의 한 종류

jar
– 패키지(클래스의 모임)의 모임.
– 라이브러리 : main 메서드가 있다. | 실행파일 : main 메서드가 없다.

2.프로젝트에 사용할 라이브러리를 선택한다.
spring springproject

설치할 내부 라이브러리

Spring Boot DevTools : 코드 수정 후 프로젝트 저장시에 서버를 재실행한다.

Spring Web : URL로 작업되는 프로젝트를 URI로 바꿔준다. MVC 패턴이 만들어진다. 스프링에서는 Controller가 Dispatcher Servlet 제약권을 가진다(이해를 위한 참고 자료)

Lombok : 생성자, getter & Setter를 만들어준다. Lombok이 JVM 실행시에 인식되는데 생성자, getter & Setter가 컴파일 시점에는 존재하지 않아 툴이 인식을 하지 못한다. 그래서 Lombok은 플러그인도 설치해야지 컴파일 시에 인식이 된다.

MariaDB Driver : Java와 DBMS가 통신할 때의 프로토콜을 정의해준다.

Spring Data JPA : 스프링부트에서 사용하지 못하는 JSP를 사용할 수 있게 한다. CRUD를 편하게 사용할 수 있게 한다. 자바에서 NTT를 만들어서 자동으로 테이블 생성하기 위한 Java Persistence API를 가지고 있다.

Validation : 유효성 검사를 위한 라이브러리

JPA(Java Persistence API)는 자바라는 프로그램을 사용하여 데이터베이스로 insert하기 위한 인터페이스를 제공해줍니다.

외부 라이브러리 준비

Maven 저장소에서 라이브러리를 가져와 pom.xml 파일의 <dependencies> 태그 안에 넣어준다.
<dependencies>
     <!-- 추가 라이브러리 시작 -->
     <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-jasper -->
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-jasper</artifactId>
      <version>9.0.52</version>
    </dependency>
     <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
     <!-- 추가 라이브러리 끝 -->
</dependencies>

사용할 외부 라이브러리

Jasper
톰캣의 JSP 엔진이다. 재스퍼는 JSP파일을 파싱(src/main/webapp)하여 서블릿(JavaEE) 코드로 컴파일한다. JSP 파일의 변경을 감지하여 리컴파일 작업도 수행한다.

JSTL
자바서버 페이지 표준 태그 라이브러리(JavaServer Pages Standard Tag Library)

xml
통신에서 사용하는 공용어 (그림으로 이해하기)

spring
의존성 관리 도구 Maven 저장소 활용하는 방법Maven이란 공통 레퍼지토리로 보통 라이브러리가 서로 연관성이 있는 경우, 연관되어 있는 라이브러리를 모두 다운 받아야하는데, 이 저장소를 활용하면 상위 라이브러리만 가져오면 하위 라이브러리도 자동으로 가져오게 된다....

src/main/webapp/WEB-INF/views

<%@ 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>인덱스 페이지입니다.</h1>
 </body>
 </html>
2.application.yml파일 안에서 DataSource 설정을 해준다.
server:
  port: 8080
  
spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp
 
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    username: cos
    password: cos1234
    url: jdbc:mariadb://localhost:3306/cosdb?serverTimezone=Asia/Seoul
    
  jpa:
    hibernate:
      ddl-auto: none
    show-sql: true
    

Data Source
Database Connection Pooling 기술(이해를 위한 참고 자료)
톰캣, 데이터베이스에서도 사용하는 기술. 일을 효율적으로 할 수 있다.

야모리(YAML)
.yml 확장자를 가진 XML, C, 파이썬, 펄, RFC2822에서 정의된 e-mail 양식에서 개념을 얻어 만들어진 ‘사람이 쉽게 읽을 수 있는’ 데이터 직렬화 양식이다. 현재 표준화되어 있는 .json 보다 경량이지만 공백 한칸, 두칸의 차이마져 지켜야하는 엄격한 문법을 사용하기 때문에 자동완성 기능을 사용하는 것을 추천한다.

View Resolver 설정
prefix : 직역하면 접두사라는 의미로 파일 경로의 앞부분을 미리 잡아주는 역할을 한다.
suffix :  직역하면 접미사라는 의미로 파일 경로의 마지막 부분을 미리 잡아주는 역할을 한다.

스프링 프로젝트에서 기본적으로 생성되는 application.properties 파일을 .yml로 바꿔서 사용했습니다. properties보다 코드가 직관적이고 가볍습니다.
?serverTimezone=Asia/Seoul => 시간 설정하는 부분, 각 나라에서 서로 시간을 맞춰줍니다. 참고로 MariaDB에서는 타임존 설정을 할 수 있는 쿼리스트링을 제공해줘요.
프로젝트 생성 후에 잘 동작하는지 실행해보세요.

서버가 port already used일 경우

원인
  1. port가 다른 곳에서 사용 중일 때
  2. jsp에서 사용했던 Tomcat이 실행되이 있을 때
  3. 서버를 두 번 실행했을 때
  4. 버그가 생겼을 때
해결방법 : 사용 중인 포트 죽이기

맥에서 현재 열려있는 포트 찾기 : sudo lsof -PiTCP -sTCP:LISTEN

맥에서 특정 포트 찾기 : sudo lsof -i :포트번호

맥에서 특정 포트 죽이기 : sudo kill -9 PID번호

데이터 베이스 참고 게시글

spring
[Mac]MariaDB 설치하기_docker1.Docker 다운로드 2.터미널을 실행하여 MariaDB를 다운로드한다. 3.다운로드가 제대로 되었는지 확인한다. 4.Docker 컨테이너를 실행한다. 5.실행된 컨테이너를 확인한다. ...
blog app
스프링부트 블로그 만들기 – 데이터베이스프로그램을 만들 때 핵심기능을 만들기 전후로 부가기능을 추가해줘야 한다. 핵심기능을 부가기능과 분리시켜 함수로 만들어 재사용하면 아주 편하게 코딩을 할 수 있다. 하지만 함수로 만들기 위한 공통 로직을 찾는 것은 결코 쉬운 일이 아니다....
최신글