Spring에서 MySQL을 이용해보기(Part 3: 컨트롤러와 뷰)

13630 단어 MySQLspring
Part 1 : 프로젝트 만들기
Part 2: 데이터 저장을 위한 클래스 만들기

Part 3(최종회)에서는 컨트롤러와 뷰에 대해 설명하고 싶습니다.
구체적으로는 다음 폴더 구조에서 MainController.java, index.jsp, saved.jsp 코드를 소개하고 싶습니다.



컨트롤러에는 세 가지 방법이 정의되어 있습니다.

index 메소드



루트(localhost의 경우 localhost:8080)에 액세스할 때 처리
index.jsp(홈페이지)를 표시합니다.

showAllUsers 메서드



/all에 액세스할 때 처리
먼저 빈 문자열을 준비하고 for 루프를 이용하여 각 사용자의 이름과 이메일 주소를 추가합니다. 마지막으로 생성된 String을 ResponseBody로 반환하여 데이터베이스에 등록된 사용자 목록을 표시합니다.

addUser 메서드



양식의 추가 버튼을 누르면 처리
Form 클래스의 객체에 저장된 입력 데이터를 데이터베이스로 데이터로 이동합니다. 데이터를 저장한 후 saved.jsp로 이동하여 등록된 이름과 이메일 주소를 표시합니다.

코드



MainController.java

package com.example;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class MainController {

    // This means to get the bean called userRepository
    // Which is auto-generated by Spring, we will use it to handle the data
    @Autowired 
    private UserRepository userRepository;

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index(Model model) {
        return "index";
    }

    @GetMapping("/all")
    public @ResponseBody String getAllUsers() {
        String body = "";
        for (User user : userRepository.findAll()) {
            body += user.getName() + ": " + user.getEmail() + "<br>";
        }
        return body;
    }

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public String addUser(
            Model model, @ModelAttribute("loginForm") Form form
    ) {
        model.addAttribute("name", form.getUserName());
        model.addAttribute("email", form.getUserEmail());

        User n = new User();
        n.setName(form.getUserName());
        n.setEmail(form.getUserEmail());
        userRepository.save(n);

        return "saved";
    }
}

보기



다음은 뷰의 코드입니다.

양식(index.jsp)

<%@ page language="java"
  contentType="text/html;charset=UTF-8"
  pageEncoding="UTF-8" %>

<%@ taglib prefix="f" uri="http://www.springframework.org/tags/form"%>

<!DOCTYPE html>
<html>
  <head>
   <meta charset="utf-8">
   <title>From</title>
  </head>
  <body>
    <a href="/all">Show users</a>
    <f:form modelAttribute="form" action="add" method="post">
      <div>
        <label for="userName">Name: </label>
        <input type="text" id="userName" name="userName">
      </div>
      <div>
        <label for="userEmail">Email: </label>
        <input type="text" id="userEmail" name="userEmail">
      </div>
      <div>
        <input type="submit" value="Add">
      </div>
    </f:form>
  </body>
</html>

데이터 등록 완료 화면(saved.jsp)

<%@ page language="java"
  contentType="text/html;charset=UTF-8"
  pageEncoding="UTF-8" %>

<%@ taglib prefix="f" uri="http://www.springframework.org/tags/form"%>
<!DOCTYPE html>
<html>
  <head>
   <meta charset="utf-8">
   <title>From</title>
  </head>
  <body>
    <p>Saved</p>
    <p>Name: ${name}</p>
    <p>Email: ${email}</p>
    <a href="/">Home</a>
  </body>
</html>

실행



프로젝트를 실행하기 위해 Application.java를 만듭니다.

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

생성이 끝나면 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Run As-> Spring Boot App을 선택합니다.
이 상태에서 localhost:8080에 액세스하면 다음 홈페이지가 표시됩니다.

좋은 웹페이지 즐겨찾기