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 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <c:set var="ctp" value="${pageContext.request.contextPath}"/> <% // 로그인창에 아이디 체크 유무에 대한 처리 // 쿠키를 검색해서 cMid가 있을때 가져와서 아이디입력창에 뿌릴수 있게 한다. Cookie[] cookies = request.getCookies(); if(cookies != null) { // 저장된 쿠키가 있으면 작동하도록 if문 먼저 for(int i=0; i<cookies.length; i++) { if(cookies[i].getName().equals("cMid")) { pageContext.setAttribute("mid", cookies[i].getValue()); break; } } } %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>memberLogin.jsp</title> <%@ include file = "/WEB-INF/views/include/bs4.jsp" %> <style> #spinner { position: absolute; left: 50%; top: 50%; z-index: 1; } </style> <script> 'use strict'; $(function(){ $("#searchPassword").hide(); $("#searchMid").hide(); }); // 아이디 찾기 function midSearch() { $("#searchMid").show(); $("#searchPassword").hide(); } // 비밀번호 찾기 function pwdSearch() { $("#searchPassword").show(); $("#searchMid").hide(); } // 임시 비밀번호 등록시켜주기 function newPassword(){ let mid = $("#midSearch").val().trim(); let email = $("#emailSearch2").val().trim(); if(mid=="" || email=="") { alert("가입시 등록한 아이디와 메일 주소를 입력하세요."); $("#midSearch").focus(); return false; } document.getElementById("spinner").style.display='block'; //document.getElementsByClassName("container")[0].style.display='none'; $.ajax({ url: "${ctp}/member/memberNewPassword", type: "post", data: { mid : mid, email : email }, success: function(res){ document.getElementById("spinner").style.display='none'; //document.getElementsByClassName("container")[0].style.display='block'; if(res != "0") alert("새로운 비밀번호가 메일로 발송 되었습니다.\n받은 메일함을 확인하세요."); else alert("등록하신 정보가 일치하지 않습니다.\n확인 후 다시 처리하세요."); }, error: function(){ alert("전송오류"); } }); } // 아이디 발송하기 function searchMidBtn(){ let name = $("#nameSearch").val().trim(); let email = $("#emailSearch1").val().trim(); if(name=="" || email=="") { alert("가입시 등록한 이름과 메일 주소를 입력하세요."); $("#nameSearch").focus(); return false; } document.getElementById("spinner").style.display='block'; $.ajax({ url: "${ctp}/member/memberMidSearch", type: "post", data: { name : name, email : email }, success: function(res){ document.getElementById("spinner").style.display='none'; if(res != "0") alert("회원님의 아이디가 메일로 발송 되었습니다.\n받은 메일함을 확인하세요."); else alert("등록하신 정보가 일치하지 않습니다.\n확인 후 다시 처리하세요."); }, error: function(){ alert("전송오류"); } }); } </script> </head> <body> <jsp:include page="/WEB-INF/views/include/nav.jsp" /> <jsp:include page="/WEB-INF/views/include/slide2.jsp" /> <p><br/></p> <div class="spinner-border text-primary" id="spinner" style="display:none;"></div> <div class="container"> <form name="myform" method="post"> <table class="table table-bordered text-center"> <tr> <td colspan="2"><font size="5">로 그 인</font></td> </tr> <tr> <th>아이디</th> <td><input type="text" name="mid" value="${mid}" autofocus required class="form-control"/></td> </tr> <tr> <th>비밀번호</th> <td><input type="password" name="pwd" value="1234" required class="form-control"/></td> </tr> <tr> <td colspan="2"> <input type="submit" value="로그인" class="btn btn-success mr-2"/> <input type="reset" value="다시입력" class="btn btn-warning mr-2"/> <input type="button" value="회원가입" xxonclick="location.href='${ctp}/member/memberJoin';" class="btn btn-primary mr-4"/> </td> </tr> </table> <table class="table p-0"> <tr> <td class="text-center"> <input type="checkbox" name="idSave" checked /> 아이디 저장 │ [<a href="xxjavascript:midSearch()">아이디 찾기</a>] / [<a href="xxjavascript:pwdSearch()">비밀번호 찾기</a>] </td> </tr> </table> </form> <div id="searchMid"> <hr/> <table class="table table-bordered p-0 text-center"> <tr> <td colspan="2"> <font size="4"><b>아이디 찾기</b></font> (가입시 입력한 이름과 메일 주소를 입력하세요.) </td> </tr> <tr> <th>이름</th> <td><input type="text" name="nameSearch" id="nameSearch" class="form-control" placeholder="이름을 입력하세요" /></td> </tr> <tr> <th>이메일</th> <td><input type="text" name="emailSearch1" id="emailSearch1" class="form-control" placeholder="이메일을 입력하세요" /></td> </tr> <tr> <td colspan="2"><input type="button" value="아이디 찾기" xxonclick="searchMidBtn()" class="btn btn-primary form-control" /></td> </tr> </table> </div> <div id="searchPassword"> <hr/> <table class="table table-bordered p-0 text-center"> <tr> <td colspan="2"> <font size="4"><b>비밀번호 찾기</b></font> (가입시 입력한 아이디와 메일 주소를 입력하세요.) </td> </tr> <tr> <th>아이디</th> <td><input type="text" name="midSearch" id="midSearch" class="form-control" placeholder="아이디를 입력하세요" /></td> </tr> <tr> <th>이메일</th> <td><input type="text" name="emailSearch2" id="emailSearch2" class="form-control" placeholder="이메일을 입력하세요" /></td> </tr> <tr> <td colspan="2"><input type="button" value="새 비밀번호 발급" xxonclick="newPassword()" class="btn btn-primary form-control" /></td> </tr> </table> </div> </div> <p><br/></p> <jsp:include page="/WEB-INF/views/include/footer.jsp" /> </body> </html> | cs |
Controller
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 | // 임시 비밀번호 발급 @ResponseBody @RequestMapping(value = "/memberNewPassword", method = RequestMethod.POST) public String memberNewPasswordPost(String mid, String email) throws MessagingException { MemberVO vo = memberService.getMemberIdCheck(mid); if(vo != null && vo.getEmail().equals(email)) { // 정보 확인 후 정보가 맞으면 임시 비밀번호를 발급받아서 메일로 전송처리한다. UUID uid = UUID.randomUUID(); String pwd = uid.toString().substring(0,8); // 새로 발급받은 비밀번호를 암호화 한 후, DB에 저장한다. memberService.setMemberPasswordUpdate(mid, passwordEncoder.encode(pwd)); // 발급받은 비밀번호를 메일로 전송한다. String title = mid +"님의 임시 비밀번호를 발급하였습니다."; String imsiContent = "임시 비밀번호 : " + pwd; String mailFlag = "pwdSearch"; String res = mailSend(email, title, imsiContent, mailFlag); if(res == "1") return "1"; } return "0"; } // 아이디 찾기 @ResponseBody @RequestMapping(value = "/memberMidSearch", method = RequestMethod.POST) public String memberMidSearchPost(String name, String email) throws MessagingException { MemberVO vo = memberService.getMemberNameCheck(name); if(vo != null && vo.getEmail().equals(email)) { // 정보 확인 후 정보가 맞으면 임시 비밀번호를 발급받아서 메일로 전송처리한다. // 발급받은 비밀번호를 메일로 전송한다. String title = "아이디 찾기"; String imsiContent = "아이디 : "+vo.getMid(); String mailFlag = "midSearch"; String res = mailSend(email, title, imsiContent, mailFlag); if(res == "1") return "1"; } return "0"; } // 메일 전송 메소드(아이디 찾기, 비밀번호 찾기) private String mailSend(String toMail, String title, String imsiContent, String mailFlag) throws MessagingException { HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest(); String content = ""; // 메일 전송을 위한 객체 :MimeMessage(), MimeMessageHelper() MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "UTF-8"); // 메일 보관함에 작성한 메세지들의 정보를 모두 저장시킨 후 작업처리 messageHelper.setTo(toMail); // 받는 사람 메일 주소 messageHelper.setSubject(title); // 메일 제목 messageHelper.setText(content); // 메일 내용 // 메세지 보관함의 내용(content)에, 발신자의 필요한 정보를 추가로 담아서 전송처리한다. if(mailFlag.equals("pwdSearch")) { content += "<br><hr><h3>임시 비밀번호 발급</h3><hr><br>"; content += imsiContent+"<br>"; } else if(mailFlag.equals("midSearch")) { content += "<br><hr><h3>아이디 찾기</h3><hr><br>"; content += imsiContent+"<br>"; } content += "<p><img src='cid:main.jpg' width='500px'></p>"; // cid: 예약어, 보내고 싶은 그림 이름을 적어준다 content += "<p>방문하기 : <a href='http://49.142.157.251:9090/javaclassJ9/Main.do'>javaclass</a></p>"; content += "<hr>"; content = content.replace("\n", "<br>"); // 엔터키를 <br>태그로 바꾼 후 내용을 쌓는다 /는 html4에서 에러가 생길 수 있어서 생략 messageHelper.setText(content, true); // 기존 내용을 무시하고 덮어쓴다 // 본문에 그림 표시하기: cid개수대로 나와야 함 FileSystemResource file = new FileSystemResource(request.getSession().getServletContext().getRealPath("/resources/images/main.jpg")); messageHelper.addInline("main.jpg", file); // 메일 전송하기 mailSender.send(message); return "1"; } | cs |
xml 추가분
1 2 3 | <select id="getMemberNameCheck" resultType="com.spring.javaclassS.vo.MemberVO"> select * from member2 where name = #{name}; </select> | cs |
스피너 출처: https://www.w3schools.com/bootstrap4/bootstrap_spinners.asp
첫댓글 spinner 사용이 아주 멋지군요..
적절할 위치에 잘 삽입하셨습니다. 수고하셨어요