Spring - html과 연결하기

yuns·2022년 10월 3일
0

Spring

목록 보기
5/13
post-thumbnail

타임리프를 이용한 동적 페이지 처리

타임리프 추가하기
build.gradle의 dependencies에 아래 코드 추가 후 gradle 새로고침

	// thymeleaf
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'

API 설계

기능 - Method - URL - 반환
로그인 웹페이지 - GET - /login - login-form.html 페이지
로그인 처리 - POST - /login - login-result.html 페이지

login-form.html

src - main - resources - static 안에 작성

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Hello Login Form</title>
</head>
<body>
<form action="login" method="POST">
  <div>
    아이디: <input name="id" type="text">
  </div>
  <div>
    비밀번호: <input name="password" type="password">
  </div>
  <button>로그인</button>
</form>

<div>
  * 아이디는 영어만 가능 <br>
  * 비밀번호 Hint: 아이디 <br>
</div>
</body>
</html>

login-result.html

src - main - resources - templates안에 작성

th : 타임리프 문법

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
  <meta charset="UTF-8">
  <title>Hello Login Result</title>
</head>
<body>
Hello Login by Spring MVC!

<br><br>

<div th:if = "${loginId != null}"
     th:text="|로그인 아이디: ${loginId}|" />
<div th:unless = "${loginId != null}"
     th:text="|로그인에 실패했습니다. 아이디와 패스워드를 다시 확인해 주세요.|" />

</body>
</html>

LoginController.java

  1. 클래스 위에 @Controller annotation붙이기
  2. @GetMapping으로 redirection 처리
  3. @PostMapping으로 로그인 처리
package com.example.springmvc.controller;

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

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

@Controller
public class LoginController {

    // Login 을 위한 HTML 파일 내려주기
    @GetMapping("/login")
    public String loginPage() {
        return "redirect:/login-form.html";
    }

    // Login 처리
    @PostMapping("/login")
    public String loginProcess(
            @RequestParam String id,
            @RequestParam String password,
            Model model
    ) {
        if (id.equals(password)) {
            model.addAttribute("loginId", id);
        }

        return "login-result";
    }
}

Application

package com.example.springmvc;

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

@SpringBootApplication
public class SpringmvcApplication {

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

}

0개의 댓글