<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example2</groupId>
<artifactId>demo-maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo-maven</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
plugins {
id 'org.springframework.boot'
version '2.5.2'
id 'io.spring.dependency-management'
version '1.0.11.RELEASE'
id 'java'}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {mavenCentral()}
dependencies {implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'}
test {useJUnitPlatform()}
GENERATE
download
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data","hello!");
return "hello";
}
}
@GetMapping("hello") : 웹 브라우저에서 localhost:8080/hello 요청 시, 컨트롤러에 "hello" mapping 값과 매핑되어 GET method 실행 (GETMapping = GET method)
return "hello" : 컨트롤러에서 리턴값으로 문자열을 반환하면, templates의 html 파일 중 hello.html 파일을 불러옴
[ Windows 인 경우 ]
[ 이후 서버 배포시 ]
java -jar hello-spring.jar
[ 만약 빌드가 잘 안되는 경우 ]
./gradlew,bat clean build
: 완전히 새롭게 빌드
http://localhost:8080/hello-static.html
로 접속Model : 모델에다 화면에 필요한 것들을 담아서 넘겨주는 역할
View : 화면에 보여주는 일
Controller : 내부 로직
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam(value="name", required=true) String name, Model model){
model.addAttribute("name", name);
return "hello-template";
}
}
// @RequestParam 은 기본적으로 required=true가 default로
// client에서 url 호출 시, http://www......?key=value 입력
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p th:text="안녕하세요.+ ${name}" ></p>
</body>
</html>
<p> ... </p>
... 에 내용 입력하면 웹에서 파일 바로 불러올 수 있다.http://localhost:8080/hello-mvc?name=spring!!!
: ? 뒤에 RequestParam 내용 입력하면 해당 내용을 받아서 출력됨
@Controller
public class HelloController {
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name){
Hello hello = new Hello();
hello.setName(name);
return hello;
}
// 객체 생성
static class Hello{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
http://localhost:8080/hello-api?name=je!!
: 실행하면 json 으로 반환되는 것을 확인 가능