스프링부트+jsp로 배달사이트 만들기-04 mypage, 로그인페이지 만들기
2021. 12. 4. 17:30ㆍ스프링부트

아래 코드를 해당 위치에 붙여넣기합니다
UserController
@Controller public class UserController { @GetMapping("/myPage") public String myPage() { return "user/myPage"; } @GetMapping("/login") public String login() { return "user/login"; } }
myPage.css
section.title { width: 100%; } section.title h1 { text-align: center; margin : 30px 0 30px 0 ; } /* 콘텐츠 */ main { /* min-height: 390px; */ } main .container { max-width: 1200px; margin: 0 auto; } main .container .grid_box { margin: 0 auto 30px; display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 75px 1fr 1fr; width: 67%; text-align: center; border-right: 1px solid #ddd; border-bottom: 1px solid #ddd; } main .container .grid_box > div { border: 1px solid #ddd; border-bottom: none; border-right: none; } main .container .grid_box .login_box { grid-column-end: span 3; display: flex; align-items: center; justify-content: space-between; padding: 0 30px; } main .container .grid_box .login_box span { display: inline; } main .container .grid_box .login_box a { font-size: 2rem; font-weight: bold } main .container .grid_box .login_box a:after { content: '>'; color: rgb(202, 198, 198); margin-left: 5px; } main .container .grid_box .login_box .logout { background: none; border: none; cursor: pointer; font-size: 1.5rem; } main .container .grid_box > div a span:last-child { padding-bottom: 15px; margin-top: -10px; } main .container .grid_box > div a span { display: block; } main .container .grid_box > div img { width: 130px; } @media (max-width:1023px) { main .container .grid_box { width: 80%; } } @media (max-width:767px) { .wrap { min-height: calc(100vh - 277px); } main .container .grid_box { width: 90%; grid-template-rows: 50px 1fr 1fr; } main .container .grid_box > div img { width: 100px; } } @media (max-width:480px) { .wrap { min-height: calc(100vh - 274px); } main .container .grid_box { width: 99%; } main .container .grid_box > div img { width: 80px; } }
myPage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/WEB-INF/view/include/link.jsp" %> <link rel="stylesheet" href="/css/layout/nav.css"> <link rel="stylesheet" href="/css/user/myPage.css"> <%@ include file="/WEB-INF/view/include/header.jsp" %> <div class="wrap"> <section class="title"> <h1>my 배민</h1> </section> <!-- 콘텐츠 --> <main> <div class="container"> <div class="grid_box"> <div class="login_box"> <c:if test="${empty SPRING_SECURITY_CONTEXT }"> <a href="/login"><span>로그인을 해주세요</span></a> </c:if> <c:if test="${!empty SPRING_SECURITY_CONTEXT }"> <c:set var="nickname" value="${SPRING_SECURITY_CONTEXT.authentication.principal.user.nickname }" /> <a href="/user/myInfo"><span class="nickname" data-nickname=${nickname } >${nickname }</span></a> <button type="button" class="logout">로그아웃</button> </c:if> </div> <div> <a href="/user/point" onclick="return loginCheck();"> <span class="img_box"> <img src="/img/icon11.png" alt="포인트"> </span> <span>포인트</span> </a> </div> <div> <a class="updating" href="/myPage/coupon" onclick="return false;"> <span class="img_box"> <img src="/img/icon22.png" alt="쿠폰함"> </span> <span>쿠폰함</span> </a> </div> <div> <a class="updating" href="/myPage/gift" onclick="return false;"> <span class="img_box"> <img src="/img/icon33.png" alt="선물함"> </span> <span>선물함</span> </a> </div> <div> <a href="/likes/store"> <span class="img_box"> <img src="/img/icon44.png" alt="찜한가게"> </span> <span>찜한가게</span> </a> </div> <div> <a href="/orderList"> <span class="img_box"> <img src="/img/icon55.png" alt="주문내역"> </span> <span>주문내역</span> </a> </div> <div> <a href="/user/myReview" onclick="return loginCheck()" > <span class="img_box"> <img src="/img/icon66.png" alt="리뷰관리"> </span> <span>리뷰관리</span> </a> </div> </div> </div> </main> </div> <!-- 콘텐츠 --> <!-- 하단 메뉴 --> <%@ include file="/WEB-INF/view/include/nav.jsp" %> <!-- 하단 메뉴 --> <!-- 푸터 --> <%@ include file="/WEB-INF/view/include/footer.jsp" %> <!-- 푸터 --> <script type="text/javascript"> $(".updating").click(function () { swal("업데이트 준비 중 입니다"); }) $(".logout").click(function () { location.href = "/logout"; }) function loginCheck(){ const nickname = $(".nickname").data("nickname"); if(!nickname) { swal("로그인 후 이용 가능합니다"); return false; } return true; } </script> </body> </html>
SPRING_SECURITY_CONTEXT는 스프링 시큐리티로 로그인을 하면 생성되는 세션인데
나중에 로그인 여부를 확인하기위해 사용됩니다
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/WEB-INF/view/include/link.jsp" %> <link rel="stylesheet" href="/css/user/login.css"> </head> <body> <main> <div class="login_box"> <a href="/"><img src="/img/bamin2.png" alt="이미지" class="bm_img"></a> <form action="/login" method="post"> <div class="input_aera"><input type="text" name="username" value="" required placeholder="이메일을 입력해 주세요" maxlength="30" ></div> <div class="input_aera"><input type="password" name="password" value="" required placeholder="비밀번호를 입력해 주세요" maxlength="30"></div> <input type="submit" value="로그인" class="login_btn" > <div class="box"> <div class="continue_login"> <label for="continue_login"> <span>로그인 유지하기</span> <input type="checkbox" id="continue_login" name="remember-me" > <i class="fas fa-check-square"></i> </label> </div> <div> <span class="id_search"><a href="/find/id">아이디</a></span> <span> ㅣ </span> <span><a href="/find/password">비밀번호 찾기</a></span> </div> </div> </form> <div id="oauth_login"> <div> <a href="/oauth2/authorization/kakao"></a> </div> <div> <a href="/oauth2/authorization/naver"></a> </div> <div> <a href="/oauth2/authorization/google"></a> </div> </div> <div class="join"><a href="/join" >회원 가입하러 가기</a></div> </div> </main> </body> </html>
login.css
main { width: 70%; margin: 40px auto; border: 1px solid #ddd; border-radius: 15px; padding-bottom: 40px; } .login_box { margin: 0px auto; text-align: center; } .bm_img { width: 50%; } .login_box .input_aera { margin: 10px auto; width: 80%; } .login_box input { margin: 3px auto; width: 100%; height: 40px; padding: 0 2%; border: 1px solid #ddd; box-sizing: border-box; } .login_box .login_btn, #login_btn { background: #2AC1BC; border-radius: 10px; width: 80%; height: 45px; color: #fff; cursor: pointer; font-size: 1.8rem; font-weight: bold; } .login_box .box { display: flex; justify-content: space-between; width: 80%; margin: 10px auto 40px auto; } .login_box .box .continue_login { direction: rtl; } .login_box .box i { font-size: 2rem; color: #999999; } input[type="checkbox"] { display: none; } input[type="checkbox"]:checked ~ i{ color: #2AC1BC; } #oauth_login div { width: 300px; margin: 5px auto; height: 55px; border-radius: 5px; box-shadow: 0px 2px 3px 0px rgb(0 0 0 / 25%); } #oauth_login div a { display: block; width: 100%; height: 100%; } #oauth_login div:nth-child(1) a { background: url("/img/kakao_login_btn.png") no-repeat center; background-size: cover; } #oauth_login div:nth-child(2) a { background: url("/img/naver_login_btn2.png") no-repeat center; background-size: cover; } #oauth_login div:nth-child(3) a { background: url("/img/btn_google.png") no-repeat center; background-size: cover; } .join { margin-top: 20px; } .join a { color: rgb(43,206,203); font-weight: bold; font-size: 1.8rem; margin-top: 20px; } @media ( max-width :1023px) { main { width: 90%; } } @media ( max-width : 767px ) { html { font-size: 58%; } main { width: 99%; } .login_box .input_aera { width: 90%; } .login_box .login_btn { width: 90%; } .login_box .box { width: 90%; margin: 10px auto; } #oauth_login { display: flex; width: 230px; margin: 0 auto; } #oauth_login div { width: 60px; height: 60px; border-radius: 5px; box-shadow: 0px 2px 3px 0px rgb(0 0 0 / 25%); } #oauth_login div:nth-child(1) a { background: url("/img/btn_kakao_m.png") no-repeat center; background-size: cover; } #oauth_login div:nth-child(2) a { background: url("/img/btn_naver_m.png") no-repeat center; background-size: cover; } #oauth_login div:nth-child(3) a { background: url("/img/btn_google_m.png") no-repeat center; background-size: cover; } } @media (max-width: 480px) { html { font-size: 58%; } }
'스프링부트' 카테고리의 다른 글
스프링부트+jsp로 배달사이트 만들기-06 회원가입 02 MYBATIS 사용하기 (21) | 2021.12.05 |
---|---|
스프링부트+jsp로 배달사이트 만들기-05 회원가입 01 (2) | 2021.12.04 |
스프링부트+jsp로 배달사이트 만들기-03 메인페이지 만들기2(쿠키,세션으로 주소저장) (0) | 2021.12.04 |
스프링부트+jsp로 배달사이트 만들기-02 메인페이지 만들기1 (0) | 2021.12.03 |
스프링부트+jsp로 배달사이트 만들기-01 프로젝트 생성 (3) | 2021.12.03 |