본문 바로가기

카테고리 없음

자바 기본 설정, html

파일 내에서 마우스 오른쪽 버튼 클릭 > 생성 클릭 > 테스트 클릭 이러면 테스트 코드 작성 가능

 

설정  >  빌드, 실행, 배포  > 컴파일러  >  어노테이션 프로세서 활성화

 

프로젝트 생성시 Create Git repository에 체크되어있었으면 이미 자동으로 프로젝트에 Git이 생성되고 프로젝트에 연동됨

 

참고로 쉬프트 두번 누르면 설정 들어가져서 바로 플러그인 설치 가능

환경설정은 Ctrl + Alt + S

 

프로젝트를 만들때의 기본 설정

 

 

 

 

 

자바의 컨트롤러는

@Controller
@RequestMapping("/api")
public class HelloController {
    @GetMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello World!";
    }

    @GetMapping("/get")
    @ResponseBody
    public String get() {
        return "GET Method 요청";
    }

    @PostMapping("/post")
    @ResponseBody
    public String post() {
        return "POST Method 요청";
    }

    @PutMapping("/put")
    @ResponseBody
    public String put() {
        return "PUT Method 요청";
    }

    @DeleteMapping("/delete")
    @ResponseBody
    public String delete() {
        return "DELETE Method 요청";
    }
}

 

이런식으로, 코틀린과 다를바 없는 모양이다.

 

html파일은, 리소스 안의 static 폴더 안에 만든다

 

<!DOCTYPE html>
<html lang="">
<head>
    <meta charset="UTF-8">
    <title>Hello Spring</title>
</head>
<body>
Hello, Spring 정적 웹 페이지!! (static)
</body>
</html>

 

이런식으로 만들어주고

package com.teamsparta.springmvc.html;

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

@Controller
public class HtmlController {

    @GetMapping("/static-hello")
    public String hello() {
        return "hello.html";
    }
}

이렇게 만들고

 

http://localhost:8080/hello.html를 입력하면,

Hello, Spring 정적 웹 페이지!! (static) 이렇게 뜬다.

 

컨트롤러에도 연결하는것도 가능하다. 그럴 필요는 적지만 연결을 하고 싶으면

 

빌드 그래들에

//    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'////html을 컨트롤러와 연결위해 주석

thymeleaf를 이렇게 주석처리하고

 

http://localhost:8080/static-hello로 접속하면

Hello, Spring 정적 웹 페이지!! (static) 이렇게 잘뜬다

 

 

implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

이걸 유지하면서 컨트롤러로 덥속 또한 가능하려면,

 

http://localhost:8080/html/redirect 를 이용하면 된다.

@GetMapping("/html/redirect")
public String htmlStatic() {
    return "redirect:/hello.html";
}

 

이걸 컨트롤러에 추가하고 http://localhost:8080/html/redirect를 입력하면 Hello, Spring 정적 웹 페이지!! (static)가 잘뜬다.

 

그 다음은 http://localhost:8080/html/templates을 이용하는 것이다.

 

리소스 안의 templates 안에

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Hello Spring</title>
</head>
<body>
Hello, Spring 정적 웹 페이지!! (templates)
</body>
</html>

이걸 그대로 넣어주고

@GetMapping("/html/templates")
public String htmlTemplates() {
    return "hello";
}

이다음 http://localhost:8080/html/templates를 하면

Hello, Spring 정적 웹 페이지!! (templates)이렇게 잘 나온다.

 

동적 페이지

 

컨트롤러에

private static long visitCount = 0;

@GetMapping("/html/dynamic")
public String htmlDynamic(Model model) {
    visitCount++;
    model.addAttribute("visits", visitCount);
    return "hello-visit";
}

 

를 추가해준다. 이때, model은

import org.springframework.ui.Model;

 

이걸 가져와야 한다. ui가 아니라 다른건 작동 안된다,

 

그리고

/templates/hello-visit.html 이런식으로 templates안에 hello-visit을(동적이면 static면 안된다)

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Hello Spring</title></head>
<body>
<div>
    Hello, Spring 동적 웹 페이지!!
</div>
<div>
    (방문자 수: <span th:text="${visits}"></span>)
</div>
</body>
</html>

이렇게 만들어준다.

그러면

(방문자 수: <span th:text="${visits}"></span>)

여기의 방문자 숫자가 컨트롤러의  visitCount++;
    model.addAttribute("visits", visitCount); 덕분에 늘어난다.

접속하려면

/html/dynamic

이렇게 되어있으니

 

http://localhost:8080/html/dynamic로 들어가면

Hello, Spring 동적 웹 페이지!!
(방문자 수: 3) 이렇게 들어갈때마다 늘어난다.
 
JSON
 
package com.teamsparta.springmvc.response;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/response/rest")
public class ResponseRestController {
    // [Response header]
    //   Content-Type: text/html
    // [Response body]
    //   {"name":"Robbie","age":95}
    @GetMapping("/json/string")
    public String helloStringJson() {
        return "{\"name\":\"Robbie\",\"age\":95}";
    }

    // [Response header]
    //   Content-Type: application/json
    // [Response body]
    //   {"name":"Robbie","age":95}
    @GetMapping("/json/class")
    public Star helloClassJson() {
        return new Star("Robbie", 95);
    }
}

 

 

package com.teamsparta.springmvc.response;

import lombok.Getter;

@Getter
public class Star {
    String name;
    int age;

    public Star(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Star() {}
}

 

여기에서 

 @GetMapping("/json/string")
    public String helloStringJson() {
        return "{\"name\":\"Robbie\",\"age\":95}";
    }

이것은 star없이 fson을 이용해서 이름, 숫자를 받아오고

 

 @GetMapping("/json/class")
    public Star helloClassJson() {
        return new Star("Robbie", 95);
    }

이것은  star과 연결되기에 name, age는 쓸 필요 없이 바로 입력할수가 있는것이다.

 

정확히는

String name;
int age;

 

name age를 key, 그러면 컨트롤러에서 Robin, 95을 value로 받는 형식이다.

 

컨트롤러에는 RequestMapping을 쓰는것이 좋다.