스프링부트1

이경현·2024년 12월 9일

설치프로그램

spring-tool-suite-4-4.26.0
jdk-17
lombok.jar

기본적으로 프로젝트 생성하고 웹에 켜보는 학습

프로젝트 생성
프로젝트 이름만 변경하고 그대로 생성
src/main/resources 안에
application.properties 안에

spring.application.name=aws0822boot 
//애플리케이션 이름을 "aws0822boot"로 설정합니다.

server.address = localhost 
//서버 주소를 로컬호스트로 지정합니다.

server.port=8014 
//서버 포트를 8014로 설정합니다.

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/aws0822?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
 
// MySQL 데이터베이스에 연결하기 위한 URL입니다. 여기서:
//127.0.0.1은 데이터베이스 서버 주소(로컬호스트),
// aws0822는 데이터베이스 이름,
// useSSL=false는 SSL 연결을 비활성화,
//serverTimezone=UTC는 서버 시간대를 UTC로 설정합니다.

spring.datasource.username=root
//: 데이터베이스 사용자 이름을 "root"로 설정합니다.
spring.datasource.password=1234
//: 데이터베이스 비밀번호를 "1234"로 설정합니다.
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
//: MySQL JDBC 드라이버 클래스를 지정합니다.

spring.thymeleaf.prefix=classpath:templates/ 
//: 템플릿 파일이 위치한 디렉터리를 지정합니다 (/src/main/resources/templates).
spring.thymeleaf.suffix=.html
//: 템플릿 파일 확장자를 .html로 지정합니다.
spring.thymeleaf.cache=false
//: 템플릿 캐싱을 비활성화하여 개발 중 변경 사항이 즉시 반영되도록 합니다.
server.error.whitelabel.enabled=true
//: 스프링 부트 기본 Whitelabel 오류 페이지를 활성화합니다.

spring.jpa.show-sql=true
//: 실행되는 SQL 쿼리를 콘솔에 출력하도록 설정합니다.
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQLDialect
//: Hibernate가 사용할 MySQL 방언(dialect)을 지정합니다.
spring.jpa.defer-datasource-initialization=true
//: 데이터 소스 초기화를 지연시킵니다.
spring.jpa.hibernate.ddl-auto=create
//: 애플리케이션 실행 시 데이터베이스 스키마를 새로 생성하도록 합니다. 이는 개발 환경에서 주로 사용되며, 프로덕션 환경에서는 적합하지 않습니다.
spring.sql.init.mode=always
//: SQL 초기화 스크립트를 항상 실행하도록 설정합니다.
spring.sql.init.encoding=UTF-8
//: SQL 초기화 파일의 인코딩을 UTF-8로 지정합니다.

위코드 작성해주기

Aws0822bootApplication 클래스에서

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;

@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})		// 보안 기능은 제외하고 인덱스 페이지 열어보자
public class Aws0822bootApplication {// 모든 부트의 프로그램을 가동시키는 역할을 한다 main 과 같은 역할 

	public static void main(String[] args) {
		SpringApplication.run(Aws0822bootApplication.class, args);		// 서버를 부팅시키고 부팅을 시키면서 클래스를 실행시키게 됨 
		// 서버가 없는 이유가 이안에 내장되어 있기 때문임
		
		
	}

}

이렇게 적어주고

static 파일안에 초기 파일로 index.html 만들고 확인해보기

<!DOCTYPE html>
<html>

<head>
	<titel>부트</titel>
	<meta charset="UTF-8">
</head>

<body>
	hello world!
	<br>
	static폴더에 들어있는 기본폴더 index.html
</body>

</html>

포트번호 확인하고 서버 실행
도메인에 localhost:포트번호 엔터
하면 아래 창 떠야함

타임리프로 값가져와서 보여주기 학습

  • 타임리프

    src/main/resources 안에 templates 안에 test.html 생성
  • test.html 파일 코드
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">

<head>
	<title>테스트</title>
	<meta http-equiv="Content-Type" contents="text/html;charset=UTF-8">
</head>

<body>
	타임리프 학습하기
	<div>
		<h3 th:text="${value}">안녕하세요</h3>
		<h3 th:if="${value == '안녕하냐고요?'}" th:text="'아니요'"></h3>		<!-- 만약에 value 값이 안녕하냐고요? 라는 값이 넘어오면 아니요 출력-->
		<div th:each="tv : ${alist}">
		    <h3 th:text="${tv.name}">이름 나타나는 자리</h3>
		    <h3 th:text="${tv.memberid}">아이디 나타나는 자리</h3>
		</div>
	</div>
</body>
</html>

TestController 코드

package com.example.demo.controller;

import java.util.ArrayList;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import com.example.demo.domain.*;



@Controller
public class TestController {
	
	@GetMapping(value = "/test") // request mapping + 메서드 방식으로 작성하던 것을 한번에 GetMapping으로 어노테이샨 적어주기
	public String test(Model model) {
		ArrayList<TestVo> alist = new ArrayList<TestVo>(); 		// 컬랙션 계열의 list 맵도 있고 ~
		
		TestVo tv1 = new TestVo();
		tv1.setName("홍길동");
		tv1.setMemberid("hong");
		alist.add(tv1);
		TestVo tv2 = new TestVo();
		tv2.setName("이순신");
		tv2.setMemberid("lee");
		alist.add(tv2);
		TestVo tv3 = new TestVo();
		tv3.setName("강감찬");
		tv3.setMemberid("kang");
		alist.add(tv3);	
	
		model.addAttribute("alist",alist);
		model.addAttribute("value","안녕하냐고요?");
	return "test";
	}
}

TestVo 코드

package com.example.demo.domain;

public class TestVo {
	private String name;
	private String memberid;
	
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getMemberid() {
		return memberid;
	}
	public void setMemberid(String memberid) {
		this.memberid = memberid;
	}

}

성공하면 아래와 같이 출력

0개의 댓글