Login2.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | package study.j0428; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/j0428/Login2") public class Login2 extends HttpServlet{ @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String fid = request.getParameter("fid") == null ? "" :request.getParameter("fid"); String fpw = request.getParameter("fpw") == null ? "" :request.getParameter("fpw"); String saveId = request.getParameter("saveId") == null ? "no" :request.getParameter("saveId"); request.setAttribute("fid", fid); request.setAttribute("fpw", fpw); request.setAttribute("saveId", saveId); String viewPage =""; String mid=""; if (!fid.equals("admin") || !fpw.equals("asdf1234")) { request.setAttribute("loginFlag", "NO"); request.setAttribute("mid", ""); viewPage = "/study/0428/login.jsp"; } else { request.setAttribute("loginFlag", "OK"); viewPage = "/study/0428/res.jsp"; if (saveId.equals("yes")) { Cookie cookieFid = new Cookie("cFid", fid); cookieFid.setMaxAge(60 * 60 * 24); response.addCookie(cookieFid); Cookie cookieFpw = new Cookie("cFpw", fpw); cookieFpw.setMaxAge(60 * 60 * 24); response.addCookie(cookieFpw); } else { Cookie[] cookies = request.getCookies(); for(int i=0; i<cookies.length; i++) { cookies[i].setMaxAge(0); response.addCookie(cookies[i]); } } } request.setAttribute("mid", mid); RequestDispatcher dispatcher =request.getRequestDispatcher(viewPage); dispatcher.forward(request, response); } } | cs |
login.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Login</title> <style> body{ display: flex; justify-content: center; align-items: center; height: 100vh; background: linear-gradient(to right, #E2E0B9,#e2c075, #C2D3AF ); } .grid-container { background-color: white; opacity: 0.8; width: 800px; border-radius: 1cm; display: grid; grid-template-columns: auto 1fr; box-shadow: 4px 7px 15px 2px #d09e2b; } .logo { margin: 15px; } .form{ margin-top: 90px; margin-left: 15px; } input[type="text"], input[type="password"]{ width: 280px; height: 32px; margin-top: 5px; font-size: 16px; border-top: none; border-left: none; border-right: none; border-color: #BCD3AD; } input[type="text"]:focus, input[type="password"]:focus{ outline: none; } input[type="text"]::placeholder, input[type="password"]::placeholder{ color: #CF7D4D; } .loginbtn{ width: 280px; height: 37px; margin-top: 10px; border: none; background-color: #CF7D4D; color: white; border-radius:4px; font-size: 17px; cursor: pointer; } .loginbtn:hover{ background-color: #8F913C; } .btn{ margin-right: 80px; margin-top: 3px; text-align: right; } .cancelbtn{ border: none; background:transparent; cursor: pointer; color: #6F7A32; } .err-msg, .perr-msg { display: block; color: rgb(245, 22, 22); font-size: 13px; font-style: italic; position: relative; margin-bottom: 46px; } .v-msg, .pv-msg { display: block; font-style: italic; font-size: 13px; color: green } .saveId{ font-size : 17px; color: #6F7A32; text-align: right; margin-right: 80px; } </style> <script> 'use strict' let idV = false; let pwV = false; document.addEventListener('DOMContentLoaded', function(){ const fid = document.getElementById('fid'); const fpw = document.getElementById('fpw'); fid.addEventListener('input', function(){ let input = fid.value.trim(); const err_msg = document.querySelector('.err-msg'); const v_msg = document.querySelector('.v-msg'); if (input === '') { v_msg.innerText =''; err_msg.innerText = '아이디를 입력하세요.'; idV = false; } else if (input.indexOf(' ') !== -1) { v_msg.innerText =''; err_msg.innerText = '아이디는 공백을 포함할 수 없습니다.'; idV = false; } else if (input.length < 5) { v_msg.innerText =''; err_msg.innerText = '아이디는 최소 5자 이상입니다.'; idV = false; } else { v_msg.innerText = '유효한 형식입니다.'; err_msg.innerText =''; idV = true; } }); fpw.addEventListener('input', function(){ let input = fpw.value.trim(); const perr_msg = document.querySelector('.perr-msg'); const pv_msg = document.querySelector('.pv-msg'); if (input === '') { pv_msg.innerText =''; perr_msg.innerText = '비밀번호를 입력하세요.'; pwV = false; } else if (input.indexOf(' ') !== -1) { pv_msg.innerText =''; perr_msg.innerText = '비밀번호는 공백을 포함할 수 없습니다.'; pwV = false; } else if (input.length < 5) { pv_msg.innerText =''; perr_msg.innerText = '비밀번호는 최소 5자 이상입니다.'; pwV = false; } else { pv_msg.innerText = '유효한 형식입니다.'; perr_msg.innerText =''; pwV = true; } }); }); function msgClear() { document.querySelector('.perr-msg').innerHTML=" "; document.querySelector('.pv-msg').innerText=""; document.querySelector('.err-msg').innerText="" document.querySelector('.v-msg').innerHTML=" "; pwV = false; idV = false; } if('${loginFlag}' == 'NO') { alert("아이디와 비밀번호를 다시 확인해주세요.") } </script> </head> <body> <div class="grid-container"> <div class="logo"> <img src ="<%=request.getContextPath()%>/images/logo.PNG" width="400px" /> </div> <div class ="form"> <form name="myform" method="post" action="<%=request.getContextPath()%>/j0428/Login2"> <div class="fid"> <input type="text" id="fid" name="fid" placeholder="아이디" required minlength="5" value="${mid}" /><br/> <div class="v-msg"> </div> <div class="err-msg"></div> </div> <div class="fpw"> <input type="password" id="fpw" name="fpw" placeholder="비밀번호" required minlength="5" value="${mpw}" /> <div class="pv-msg"> </div> <div class="perr-msg"></div> </div> <div class="saveId"> <input type="checkbox" name="saveId" value="yes" ${remember} />아이디 저장 </div> <button type="submit" class="loginbtn"><b>로 그 인</b></button> <div class="btn"> <button type="reset" class="cancelbtn" xxxxonclick="msgClear()">다시입력 </button> </div> </form> </div> </div> </body> </html> | cs |
res.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script> 'use strict'; if('${loginFlag}'=="OK") { alert("${fid}님 로그인 되셨습니다."); location.href=location.href = '<%=request.getContextPath()%>/study/0428/main.jsp?fid=${fid}&loginFlag=${loginFlag}'; } </script> </head> <body> </body> </html> | cs |
main.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String fid = request.getParameter("fid"); String loginFlag = request.getParameter("loginFlag"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script> 'use strict'; if ('<%=loginFlag%>' != 'OK') { alert("로그인 후 접속하세요."); location.href = '<%=request.getContextPath()%>/study/0428/login.jsp'; } function logout() { var ans = confirm("로그아웃 하시겠습니까?"); if (ans) { alert('<%=fid%>' + "님 안녕히가세요."); location.href = "<%=request.getContextPath()%>/j0428/Logout"; } } </script> <style> body{ display: flex; flex-direction: column; justify-content: center; align-items: center; height: 100vh; background: linear-gradient(to right, #E2E0B9,#e2c075, #C2D3AF ); } </style> </head> <body> <hr/> <p><%=fid%>님 안녕하세요.</p><br/> <img src ="<%=request.getContextPath()%>/images/123.jpg" height ='500px'/> <hr/><br/> <p><a href="xxxxxxxxjavascript:logout()">로그아웃</a></p> </body> </html> | cs |
Logout.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | package study.j0428; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/j0428/Logout") public class Logout extends HttpServlet{ @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String remember = ""; Cookie[] cookies = request.getCookies(); String mid= ""; String mpw= ""; if(cookies != null) { for(int i=0; i<cookies.length; i++) { if(cookies[i].getName().equals("cFid")){ mid = cookies[i].getValue(); remember = "checked"; } if(cookies[i].getName().equals("cFpw")){ mpw = cookies[i].getValue(); } } } request.setAttribute("remember", remember); request.setAttribute("mid", mid); request.setAttribute("mpw", mpw); request.getRequestDispatcher("/study/0428/login.jsp").forward(request, response); } } | cs |
예전 과제 로그인페이지 만들었던걸로 했어요
첫댓글 서블릿에서의 쿠키저장처리 좋아요.. 수고하셨습니다.