반응형

회원 도메인과 리포지토리를 만들겠습니다.

 

폴더구조는 아래와 같이 하여 domain 패키지를 만들고 내부에 Member 클래스를 만들어줍니다. 그리고 repository 패키지를 만들어준 후 MemberRepository 인터페이스와  MemoryMemberRepository클래스를 만들어줍니다.

 

1. Member 클래스

package hello.hellospring.domain;

public class Member {

    private Long id;
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2. MemberRepository 인터페이스

package hello.hellospring.repository;

import hello.hellospring.domain.Member;

import java.util.List;
import java.util.Optional;

public interface MemberRepository {
    Member save(Member member);
    Optional<Member> findById(Long id);
    Optional<Member> findByName(String name);
    List<Member> findAll();
}

3. MemoryMemberRepository 클래스

package hello.hellospring.repository;

import hello.hellospring.domain.Member;
import java.util.*;

public class MemoryMemberRepository implements MemberRepository{

    private static Map<Long, Member> store = new HashMap<>();
    private static long sequence = 0L;

    @Override
    public Member save(Member member) {
        member.setId(++sequence);
        store.put(member.getId(), member);
        return member;
    }

    @Override
    public Optional<Member> findById(Long id) {
        return Optional.ofNullable(store.get(id));
    }

    @Override
    public Optional<Member> findByName(String name) {
        return store.values().stream()
                .filter(member->member.getName().equals(name))
                .findAny();
    }

    @Override
    public List<Member> findAll() {
        return new ArrayList<>(store.values());
    }

    public void clearStore(){
        store.clear();
    }
}
반응형
반응형

 

1. Controller 라우팅 추가

Controller 클래스에 "hello-mvc"라우팅을 추가합니다. 입력 파라미터로 "name"키에 값을 받아들이도록 합니다. name=???값을 이용해 "hello-template"를 반환하도록 합니다.

package hello.hellospring.controler;

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

@Controller
public class HelloController {

    @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data","hello!!");
        return "hello"; // 뷰 리졸버가 templates에서 hello로 시작하는 파일(hello.html)을 찾아서 리턴

    }
    //파라미터 추가 예
    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam("name") String name, Model model){
        model.addAttribute("name", name);
        return "hello-template";
    }
}

2. hello-template.html

아래와 같이 작성하여 받아들인 name변수의 값이 나타나도록 합니다.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p th:text="'hello. '+ ${name}" >hello! empty</p>

</body>
</html>

3. 확인

hello-mvc 뒤에 ?name=spring!!!과 같이 입력하여 파라미터를 전달해줍니다. 

 

~~ 끝 ~~

반응형
반응형

 

1. Controller작성

hello.hellospring 아래에 controler라는 패키지를 만든 후 HelloController라는 class를 만들어줍니다.

코드는 아래와 같습니다. localhost:8080/hello 로 접속 시 hello 함수를 실행하게 만들고, hello함수는 return "hello" 구문으로 hello를 리턴하는데, 이는 resources/templates에서 hello.html을 찾아서 반환해주는 역할을 합니다. 이때 속성으로 키가 "data"이고 값이 "hello!!"인 데이터를 함께 넘겨주게 됩니다.

package hello.hellospring.controler;

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"; // 뷰 리졸버가 templates에서 hello로 시작하는 파일(hello.html)을 찾아서 리턴

    }
}

2. hello.html

Controller에 의해 리턴되는 hello.html 페이지를 아래와 같이 작성합니다. 이때 th는 thymeleaf 템플릿 엔진의 약자인데, thymeleaf 문법을 쓸 수 있게 해 줍니다. p태그 내부에서 해당 문법을 쓰고 있습니다. ${data}라고 표현된 부분은 Controller가 넘겨준 {키: "data", 값: "hello!!"} 를 의미하므로 결국 "hello!!"로 치환되게 됩니다. 

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

</body>
</html>

3. 최종 결과물

아래에 결과와 같이 텍스트가 원하는 문장으로 치환되어 나타났습니다.

~~ 끝 ~~

반응형
반응형

 

1. 사전 준비

JDK 11버전을 설치해둡니다.

IntelliJ도 설치를 해 둡니다.

 

2. start.spring.io 페이지에 접속하여 아래와 같이 세팅 후 Generate 를 클릭하여 Spring 프로젝트를 생성 및 다운로드 받습니다. 

 

3. 원하는 곳에 압축을 풀고 IntelliJ를 이용하여 build.gradle파일을 열어줍니다.

.

4. Run하고 localhost:8080에 접속하여 에러 페이지가 나오는지 확인합니다. 아래와 같이 나타나면 정상설치가 된 것입니다.

5. 실행환경 변경

Settings에서 gradle로 검색하여 아래의 2가지 옵션을 gradle에서 IntelliJ IDEA로 변경해줍니다. 

 

6. hello 페이지 만들기

Project View에서 src/main/resources/static 폴더 안에 index.html파일을 만들고, hello world를 출력하도록 문서를 작성합니다.

7. 재실행 후 접속

프로그램을 재 실행하여 아래와 같이 나타나는지 확인합니다.

 


 

이상  Spring Boot 처음 시작부분을 정리해보았습니다. 

 

~~ 끝~~

반응형

+ Recent posts