본문 바로가기
Java/Spring입문

[Spring입문 - Eclipse(1)] View 환경설정 및 빌드하고 실행, 스프링 웹 개발 기초

by 이쟝 2022. 11. 30.

2022.03.07 - [Java/Spring입문] - Spring 입문(1) 프로젝트 생성 및 환경설정 (IDE: Intellij 설치)

Intellij가 더이상 무료버전을 사용할 수 없어서.. 강의를 이클립스로..! 프로젝트 생성은 위와 똑같이 한다. 

2022.03.08 - [Java/Spring입문] - Spring 입문(3) View 환경설정

위 참고!

src/main/resources static 폴더안에 index.html을 만든 후 서버를 실행하면 잘 뜨는 것을 확인할 수 있다. 

<!DOCTYPE html>
<head>
	<title>index</title>
	<meta http-equiv="Content-Type" content="text/html : charset=UTF-8">
</head>
<body>
	<h1>Hello world!</h1>
	<a href="/hello">This is welcome page</a>
</body>
</html>

main java 파일이 있는 곳에 controller패키지와 controller 클래스 파일을 생성!

*패키지를 그냥 controller라고 하면 인식을 못하기 때문에 기본 이름.controller로 한다!!*

package com.example.inflearn_spring.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", "spring!");
		return "hello";
	}
}

resources 폴더 안에 templates 폴더를 생성한 뒤에 hello.html 파일 생성!

 

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
	<title>Hello</title>
	<meta http-equiv="Content-Type" content="text/html : charset=UTF-8">
</head>
<body>
<p th:text="'안녕하세요.' + ${data}">안녕.</p>
</body>
</html>


 

2022.03.08 - [Java/Spring입문] - Spring 입문(4) cmd창에 빌드하고 실행하기

빌드하고 실행하기 위 참고!

만약 ERROR가 이렇게 난다면!!!!

ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jdk-11.0.13\bin
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

=> JAVA_HOME 경로는 \bin을 포함하고 있지 않아야 하고, path에는 %JAVA_HOME%\bin이 추가되어 있어야 한다.!! 꼭 명심!!

 

해당 프로젝트 폴더로 이동후(cd 명령어 이용)  dir  명령어를 통해 gradlew 파일 확인

 gradlew build  (만약 잘 안된다면 gradlew clean build를 하고 다시 실행)

 cd build/libs 폴더로 이동  

 dir 명령어를 통해 ~~ SNAPHOT.jar 파일 확인  

 java -jar "위에서 확인했던 파일 -SNAPSHOT.jar  

-> 잘 성공이 됐다면 1) Welcome Page로 가서 a태그로 감싼 This is welcome page를 누르면 저절로 2) localhost:8080/hello 페이지로 이동할 수 있게 된다!

-> CMD 창을 닫으면 자동으로 서버도 닫힌다.


2022.03.09 - [Java/Spring입문] - Spring 입문(5) 스프링 웹 개발 기초(정적 컨텐츠, 템플릿엔진(MVC), API)

 

1. MVC

위에서 만들었던 controller 패키지안에 controller.java안에 새로운 코드 작성

@GetMapping("hello-mvc")
    public String helloMvc(@RequestParam("name") String name, Model model){
    model.addAttribute("name", name);
    return "hello-template";
}
  • @GetMapping("hello-mvc") === @GetMapping(value="/hello-mvc") === @GetMapping("/hello-mvc")
  • @RequestParam(value="name") === @RequestParam(value="name", required=true)
@RequestParam("가져올 데이터 이름") [데이터 타입] [가져온 데이터를 담을 변수]

hello-template.html(view단으로 보여줄 것) 

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
	<title>Hello-template</title>
	<meta http-equiv="Content-Type" content="text/html : charset=UTF-8">
</head>
<body>
<p th:text="'hello ' + ${name}">안녕.</p>
</body>
</html>

url에  http://localhost:8080/hello-mvc?name=spring 적게 되면 (name을 적지 않으면 오류! 클라이언트단에서 받게되는 name이 없기 때문에 오류가 생기는 것)

잘 나오는 것 확인 가능!! 

2. API

위에서 만들었던 controller 패키지안에 controller.java안에 새로운 코드 작성

@GetMapping("/hello-string")
@ResponseBody  
public String helloString(@RequestParam("name") String name, Model model) {
    return "hello, " + name;
}

=> 여기서 알 수 있는 것 @ResponseBody를 사용하게 되면 return 값 바로 출력 가능! (JSON으로 반환하는 게 기본이다.) 즉 HTTP의 BODY에 문자 내용 직접 반환

api 형식으로 사용해보기 위해 Hello라는 클래스를 만들고 안에 private String name; 변수 생성 뒤 getter setter. 

hello 클래스를 사용하기 위해 helloApi라는 getMapping할 메서드를 만들고 객체 생성한다. 

=>  보통 객체로 오면 JSON 형식으로 반환!

@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;
    }
}

서버 재실행을 해보면 JSON 형식으로 나오는 것 확인 가능