본문 바로가기

공부해야할 것/java

[springBoot] 웹개발(2) - DB연결 설정

반응형

오늘의 목표는 로그인 화면까지 띄우는것이 목표다.

https://kkkkims.tistory.com/51

 

[springBoot] 웹프로젝트 만들기(1) - 설치

요구사항 - jdk 21 - gradle 8.4 - mariadb 11.1.2 - nodejs 21.1 - (윈도우인 경우) wsl - redis 3.31 각각 까는 url은 아래와 같다 openjdk21 https://jdk.java.net/21/ OpenJDK JDK 21.0.1 GA Release OpenJDK JDK 21.0.1 General-Availability Releas

kkkkims.tistory.com

에서 이어서 왔다면 spring boot를 실행하면 실행될꺼 같은데 실행안된채 아래 로그를 볼수 있을것이다.

우리는 이제 db를 만들고 이를 설정파일을 통해 연결해줄것이다 이전에 마리아 디비를 설정했다면 heidiSQL이 생겼을거란 소리를 했을것이다. 설치가 되있다면 이를 수행해준다

 

그러면 아래와 같은 창이 뜰텐데 그저 mariadb설치시 설정했던 root비밀번호를 입력하고 열기하면 들어가진다.

들어가면 4개의 db가 보일텐데 우리는 이 db들은 왠만하면 건들이지 않을것이다 일단 제일 상단부분에 unnamed 부분을 오른쪽 클릭하고 새로 생성 > 데이터베이스 를 선택해준다.

그러면 데이터베이스 생성이 뜨는데 자신이 원하는 db명을 입력하고 확인을 누르면 DB가 생성되어진다.

축하한다 당신은 이제 프로젝트에 연결할 db를 만든것이다.

 

이제 다시 자신의 ide로 돌아가자

src/main/resources에 application.properties가 생성되있는것을 확인할 수 있다. 해당파일을 열면 빈것을 확인할수 있는데 이부분에 대해 설정을 넣어준다.

 

#내가 사용할 db드라이브를 말한다.
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver

# 내가 사용할 db주소를 얘기한다
# jdbc를 이용할꺼야:mariadb를 이용할꺼야://내dbip주소야(로컬db를 보기때문에 localhost로 해도됨):포트/db명?기타설정들
# url이 먹히는데도 있고 jdbc-url이 먹히는 데도 있기 때문에 둘다써줌
spring.datasource.url=jdbc:mariadb://localhost:3306/forstudy?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.jdbc-url=jdbc:mariadb://localhost:3306/forstudy?serverTimezone=UTC&characterEncoding=UTF-8

#db 계정 id를 입력해준다
spring.datasource.username=root

#db계정의 비밀번호를 입력한다.
spring.datasource.password=info12345

 

이것들을 입력 후에 스프링 부트를 수행해보자 프로젝트의 마우스 우클릭후 run as > springboot app

 

수행하면 뭔가 콘솔에 멘트가 달라진걸 확인할 수 있다.

 

크롬이든 엣지든 켜서 http://localhost:8080 을 주소로 쓰고 접속해보자

뭔가 그럴싸한 로그인 창이 떴다.

그러면 실제로 로그인 할수 있는가? 대답은 일단은 그렇긴하다.

아까 콘솔에서 이러한 글을 봤을것이다. 

 

뭐시기 비밀번호가 생성됬습니다. 스프링부트에서 기본적으로 세션에 생성되는 계정이다. 계정은 기본적으로 user라는 명으로 생성되고 비밀번호는 콘솔에 입력된 비밀번호를 입력하면 된다.

 

로그인을 하면 아래와 같은 페이지가 뜨는데 당연하다 우리가 뭐 페이지를 만들어 준적이 없지 않은가

음....그래도 다른페이지로 이동하는거까지 해야하지 않을까 싶다.. 로그인후 메인페이지 까지 이동하겠금만 해주자

src/main/java에 폴더를 생성해주자 난 간단하게 com으로 했다.

 

com밑에 web폴더를 또 만들어 주자

여기다가 우리는 mvc패턴할때 C에 해당하는 controller를 만들어 줄것이다. web을 선택한 후클래스 만들기 를 누르자

 

 

이후 이름을 MainController로 하고 클래스를 생성해주자

그러면 파일이 다음과 같이 생성될것이다.

package 밑에 controller를 쓰기위한 import문을 가져온다 이후 class 위해 @Controller 를 달아주자(@는 annotation이라 한다)

package com.kkkkim.forStudy.com.web;

import org.springframework.stereotype.Controller;

@Controller
public class MainController {

}

이제 메인 페이지로 이동하겠금 할수 있게 하는 메소드(함수)를 만들것이다.

package com.kkkkim.forStudy.com.web;

import org.springframework.stereotype.Controller;

@Controller
public class MainController {
	
	public String index() {
		return "/com/index";
	}

}

알아야할께 public 뭐시기를 쳐주면 void를 제외한 다른 데이터 형식들은 무조건 그형식대로 return해야한다. 나는 public String을 선언했기때문에 글자를 리턴해주었다(/com/index) 이제 url에서 어떻게 입력할때 저 함수를 실행할지 지정해줘야한다. 이럴때 사용하는것이 @GetMapping 어노테이션이다 

 

	@GetMapping(name="/")
	public String index() {
		return "/com/index";
	}

위의 뜻은 그냥 url에서 아무것도 안친 slash일때  index라는 메소드를 수행하겠다란 뜻이다. 그러면 아까와같이 로그인을하면 index함수가 수행이 되어야한다. 다시 스프링 부트를 수행하고 로그인해서 들어가면 에러 문구가 좀 달라진것을 확인할수 있다.

아무튼 /com/index를 불러오는 것을 봐서는 index함수가 수행되는것을 확인할 수 있다. 근데 왜 에러가뜨지? 싶겟지

당연하다 우리는 /com/index 경로에 뭘 만든적이 없기때문에 얘내가 에러를 먹는 것이다.

 

이럴때 해야할것은 두가지이다

1. spring이 수행될때 템플릿이 있는 경로(html)파일이 있는 경로를 제대로 읽어올수 있도록 안내 해줘야

2. 실제 경로에 해당 파일 (com폴더내에 index라는 파일)이 있어야한다.

 

 다시 src/main/resources에 application.properties로 돌아가 추가로 아래 설정값을 입력해주자

 

#webSetting
##이뜻은 이제 웹 관련된 파일 css,js,html파일등은 아래 static 밑에서 불러오겠다란 뜻이다.
spring.web.resources.static-locations=classpath:/static/



##thymeleaf setting
#이 프로젝트에서는 타임리프를 사용할것이기 때문에 타임리프 관련된 설정을 넣어준다
#파일에서 수정하면 바로 적용되겠금하는 옵션
spring.thymeleaf.cache=false
#html파일 저장할 경로라고 대충 생각하자
spring.thymeleaf.prefix=classpath:templates/
#이제 html파일 형식들만 인식한다.
spring.thymeleaf.suffix=.html
#타임리프 사용할꺼지?
spring.thymeleaf.enabled=true
#템플릿 불러오기전에 그 양식이 맞는지 체크하는 옵션
spring.thymeleaf.check-template=true
#인코딩(언어를 어떤 양식으로 불러올껀지) 설정
spring.thymleaf.encoding=UTF-8
#타임리프 모드 설정이다 기본인 html로 했다
spring.thymleaf.mode=html

이것으로 1번은 됬다 그러면 이제 2번을 하러 가자

src/main/resources에 공교롭게도 templates와 static 폴더가 있다 template에 com 폴더를 추가하자.

슬슬 눈치 깠겠지만 이제 com폴더 밑에 html파일을 생성해줄것이다.

index.html에다가 좀 그러니 뭐라도 넣어주자

<html>
	이제 되는건가?
</html>

 

 

다시 spring boot 를 실행해보자.

 

로그인하면 다음과 같이 뜰것이다.

축하한다. 당신은 이제 웹개발자다.

근데 이제 좀 꾸며야하지 않을까? 아무리 java하는 아저씨더라도 그 기본적인 ui는 있어야한다고 생각한다. 다음에는 bootstrap을 적용해서 그나마 사람들이 쓸만하겟금 만들어 보겠다.

반응형