프레임워크/Spring, Spring Boot
[메타코딩] 스프링부트 강좌 34강(블로그 프로젝트) - 로그인, 회원가입 화면 만들기
고용인
2022. 8. 8. 00:54
Header, Footer와 같이 공통되는 영역에 대해서는 중복되는 코드를 줄이게 위해 아래와 같이 layout으로 설정합니다.
1. 기존에 작성되었던 index.jsp에서 스크립트 태그를 body 가장 하단에 위치시켜줍니다.
2. header.jsp로 아래의 내용을 복사해줍니다.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
</head>
<body>
<nav class="navbar navbar-expand-md bg-dark navbar-dark">
<a class="navbar-brand" href="/blog">Ukss</a>
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#collapsibleNavbar">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="collapsibleNavbar">
<ul class="navbar-nav">
<li class="nav-item"><a class="nav-link" href="/user/login">로그인</a>
</li>
<li class="nav-item"><a class="nav-link" href="/user/join">회원가입</a>
</li>
</ul>
</div>
</nav>
<br />
3. footer.jsp로 아래의 내용을 복사해줍니다.
<br/>
<div class="jumbotron text-center" style="margin-bottom: 0">
<p>Created by Ukss</p>
<p>📞 010-1234-1234</p>
<p>🏴 서울시 강남구 테헤란로</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
4. index.jsp로 다시 돌아와 header.jsp, footer.jsp 파일들을 include 해줍니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="layout/header.jsp" %>
<div class="container">
<div class="card m-2">
<div class="card-body">
<h4 class="card-title">제목 적는 부분</h4>
<p class="card-text">내용 적는 부분</p>
<a href="#" class="btn btn-primary">상세보기</a>
</div>
</div>
</div>
<%@ include file="layout/footer.jsp" %>
이제, 로그인화면과 회원가입 화면을 만들어줍니다.
이를 위해 UserController를 아래와 같이 작성합니다.
package com.cos.blog.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class UserController {
@GetMapping("/user/joinForm")
public String joinForm() {
return "user/joinForm";
}
@GetMapping("/user/loginForm")
public String loginForm() {
return "user/loginForm";
}
}
로그인(loginForm.jsp) 화면을 아래와 같이 작성합니다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="../layout/header.jsp"%>
<div class="container">
<form action="/action_page.php">
<div class="form-group">
<label for="username">Username</label> <input type="text" class="form-control" placeholder="Enter username" id="username">
</div>
<div class="form-group">
<label for="password">Password</label> <input type="password" class="form-control" placeholder="Enter password" id="password">
</div>
<div class="form-group form-check">
<label class="form-check-label"> <input class="form-check-input" type="checkbox"> Remember me
</label>
</div>
<button type="submit" class="btn btn-primary">로그인</button>
</form>
</div>
<%@ include file="../layout/footer.jsp"%>
회원가입(joinForm.jsp) 화면을 아래와 같이 작성합니다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="../layout/header.jsp"%>
<div class="container">
<form action="/action_page.php">
<div class="form-group">
<label for="username">Username</label> <input type="text" class="form-control" placeholder="Enter username" id="username">
</div>
<div class="form-group">
<label for="email">Email</label> <input type="email" class="form-control" placeholder="Enter email" id="email">
</div>
<div class="form-group">
<label for="password">Password</label> <input type="password" class="form-control" placeholder="Enter password" id="password">
</div>
<button type="submit" class="btn btn-primary">회원가입완료</button>
</form>
</div>
<%@ include file="../layout/footer.jsp"%>
강의 주소 : https://youtu.be/7uz311JqQKI