본문 바로가기
풀스택 개발 학습 과정/백엔드(Java, Spring)

[스프링] 서버 전달

by 육츠 2024. 3. 17.
Contents 접기

체크 사항

 

- build.gradle 체크

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.2.3'
	id 'io.spring.dependency-management' version '1.1.4'
}

group = 'net.kdigital'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17'
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
	useJUnitPlatform()
}

 

- application.properties 에서 서버 포트번호 체크

# 서버 포트
server.port=9997

기본 포트 8080 사용 -> oracle이 점유 -> 변경(지정)해주어야 한다.
수업 내용에서는 하나의 프로젝트 당 9999 에서 포트번호를 내리고 있다.

 

MainCotroller 패키지를 만든후 MainCotroller 클래스를 만든다.

Controller Component란?

Client의 요청을 직접적으로 받는 Component( 클래스 선언부에 @Controller 어노테이션을 달고 있다)
Cleint가 url을 통한 요청을 보내면 해당 url에 매칭되는 Controller가 해당 요청을 handle한다.

 

- 기본 형태

@Controller
public class MainController { // Bean : Spring Container 가 과ㅏㄴ리하는 객체 
	@GetMapping({"","/"})
	public String index(Model model) {
		// 첫 요청이 오면 자동 호출
	
    	return "index"; // forwading으로 응답. 메시지도 실어서 보낼 수 있다.
	}

 

return "index" 는 src / main/resources 안에 있는 templetes 라는 패키지 안에 만들어둔다.

 

VScode 에서 간단하게 틀을 만들어 온 후 

<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymleaf.org" > <!-- 간단한 로직처리 -->
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>첫 번째 응답</title>
</head>
<body>

    
</body>
</html>

 

다시 Controller 파일로 넘어와 화면에 보이고 싶은 내용을 기입한다.

@GetMapping({"","/"}) : 두가지 방식을 전부 받는 것

model.addAttribute 안하면 서버로 가지 않는다.

public class MainController { // Bean : Spring Container 가 과ㅏㄴ리하는 객체 
	@GetMapping({"","/"})
	public String index(Model model) {
		// 첫 요청이 오면 자동 호출
		
		model.addAttribute("name","홍길동");
		model.addAttribute("age",25);
		model.addAttribute("join_date",LocalDate.now());
				
		return "index"; // forwading으로 응갑. 메시지도 실어서 보낼 수 있다.
	}

 

index.html 작성

1. [[ ${변수명} ]]

바디 태그안에 첫번째응답에 대한 내용을 확인한다.

<body>
    <h2>첫 번째 응답</h2>
    <h3>방법 -1 </h3>
    <p> 이름 : [[ ${name} ]] <!-- 모델에 사용한 키 --></p>
    <p> 나이 : [[ ${age} ]]</p>
    <p> 가입일 : [[ ${join_date} ]]</p>
    
</body>

잘 연결이 되었다면 위처럼 기입한 내용이 나올 것이다.

 

2. th:text=${} : thymeleaf 방법

thymeleaf 방법 에는 index.html 에서 <html lang="ko" xmlns:th="http://www.thymleaf.org" > 적는 것 까먹지 않기

index.html

  	<hr>
    <h3>방법 -2 </h3>
    <p> 이름 : <span th:text="${name}">아무개</span></p>
    <p> 나이 : <span th:text="${age}">100</span></p>
    <p> 가입일 : <span th:text="${join_date}">100년전</span></p>

 

a 태그로 서버에 데이터 전달하기 (Get요청)

파라미터로 전달

	@GetMapping("/input")
	public String input(
			@RequestParam(name="name",defaultValue="아무개") String name,
			@RequestParam(name="age",defaultValue="10") int age,
			Model model
			){
		
		model.addAttribute("name",name);
		model.addAttribute("age", age);
		model.addAttribute("join_date",LocalDate.now());
		
		return "index";
	}

 

이름과 나이 전달하기 글씨를 누르면 a태그를 통해 파라미터로 인풋되는 것을 알수 있다.

    <hr>
    <h3>a태그로 서버에 데이터 전달하기</h3>
    <a href="input?name=전우치&age=45">이름과 나이 전달하기</a> 
    <!-- Get 요청 -->

 

개념 도움

https://jaeano.tistory.com/entry/Spring-Boot-Controller-Component-%EA%B0%9C%EB%85%90-Controller-GetMapping-RequestParam

 

[Spring Boot] Controller Component 개념 1 (@Controller, @GetMapping, @RequestParam, GET 요청 )

이번엔 Spring MVC에서 C를 담당하고 있는 Controller Component에 대해 알아 볼 것이다. 이때 Component란? 구성요소라는 뜻으로 독립적인 단위 모듈을 뜻한다. 스프링 부트에선 IoC 컨테이너에 등록된 클래

jaeano.tistory.com