쌍용 강북 교육센터 국비학원 Day 69일차
Modal 창의 값을 초기화 하는 방법
위는 대상 아이프레임을 선택해서 모달창 내부 jsp 에서 함수를 이용해 값을 초기화 시킨 것으로 페이지 구현이 많지 않을 때 사용하기 용이하다.
iframe 요소에 접근하는 contentWindow 와 contentDocument 의 차이점은 다음과 같다.
contentWindow 와 contentDocument 모두 iframe 하위 요소에 접근 할 수 있는 방법으로
contentWindow 는 iframe의 window (전체, 전역)을 의미하는 것이고
contentWindow.document 은 contentDocument 와 같은 것이다. contentWindow 가 contentDocument 의 상위 요소이다.
반면 비밀번호 찾기와 같은 인증번호를 받고, 입력하는 등 페이지 구현이 많을경우 모달창 자체의 클릭 이벤트로 새로고침을 이용해서 어느 페이지에서든 모달창이 닫혀도 값이 초기화 되도록 설정할 수 있다.
새로고침 (reload) 방법 3가지
1. 일반적인 reload
window.location.reload();
- 컴퓨터의 캐시에서 우선 파일을 찾아본다. 없으면 서버에서 받아온다.
2. 강제적인 reload
window.location.reload(true);
- true 라는 파라미터를 입력하면, 무조건 서버에서 직접 파일을 가져오게 된다. 캐시는 완전히 무시된다.
3. soft 한 reload
history.go(0);
- 캐시에서 현재 페이지의 파일들을 항상 우선적으로 찾는다.
window.history();
winodw.history 프로퍼티는 History 객체에 대한 참조이며 윈도우의 열람 이력을 최근에 방문한 URL의 배열로 반환한다. DOM의 window 객체는 history 객체를 통해 브라우저 히스토리에 접근할 수 있다. HTML5의 history 객체는 사용자 히스토리에서의 앞 뒤 이동이 가능하도록 유용한 메소드와 속성들을 제공하며, history stack의 내용을 조작할 수 있게 한다. 사용자의 개인 정보를 보호하기 위해 이 객체에 접근하는 방법을 일부 제한한다.
※ javascript history 객체 참고
location.href="javascript:history.go(-2);"; - 이전이전 페이지로 이동
location.href="javascript:history.go(-1);"; - 이전 페이지로 이동
location.href="javascript:history.go(0);"; - 현재 페이지로 이동 (새로고침) 캐시에서 읽어옴.
location.href="javascript:history.go(1);"; - 다음 페이지로 이동.
location.href="javascript:history.back();"; - 이전 페이지로 이동
location.href="javascript:location.reload(true)"; - 현재 페이지로 이동 (새로고침) 서버에 가서 다시 읽어옴. location.href="javascript:history.forward();"; - 다음 페이지로 이동.
이메일 인증코드 구현
비밀번호 찾기와 같이 해당 사용자의 이메일에 인증코드를 발송해 확인하여 인증하는 방법으로 구글을 통해 구현했다. (Gmail SPMT사용)
activation과 mail 의 라이브러리를 받아 적용해야하고 현재로서는 업데이트가 되어 사용불가능하지만 java내의 security 파일의 값을 수정하면 사용이 가능하다.
인증코드는 소문자 5글자 + 숫자7자리로 이루어진 코드로 정의하였고
GoogleMail의 sendmail 메소드를 정의하였다.
package member.controller;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class GoogleMail {
public void sendmail(String recipient, String certificationCode) throws Exception {
// 1. 정보를 담기 위한 객체
Properties prop = new Properties();
// 2. SMTP(Simple Mail Transfer Protocoal) 서버의 계정 설정
// Google Gmail 과 연결할 경우 Gmail 의 email 주소를 지정
prop.put("mail.smtp.user", "");
// 3. SMTP 서버 정보 설정
// Google Gmail 인 경우 smtp.gmail.com
prop.put("mail.smtp.host", "smtp.gmail.com");
prop.put("mail.smtp.port", "465");
prop.put("mail.smtp.starttls.enable", "true");
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.debug", "true");
prop.put("mail.smtp.socketFactory.port", "465");
prop.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
prop.put("mail.smtp.socketFactory.fallback", "false");
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.trust", "smtp.gmail.com");
Authenticator smtpAuth = new MySMTPAuthenticator();
Session ses = Session.getInstance(prop, smtpAuth);
// 메일을 전송할 때 상세한 상황을 콘솔에 출력한다.
ses.setDebug(true);
// 메일의 내용을 담기 위한 객체생성
MimeMessage msg = new MimeMessage(ses);
// 제목 설정
String subject = "localhost:9090/MyMVC/index.up 회원님의 비밀번호를 찾기위한 인증코드 발송";
msg.setSubject(subject);
// 보내는 사람의 메일주소
String sender = "";
Address fromAddr = new InternetAddress(sender);
msg.setFrom(fromAddr);
// 받는 사람의 메일주소
Address toAddr = new InternetAddress(recipient);
msg.addRecipient(Message.RecipientType.TO, toAddr);
// 메시지 본문의 내용과 형식, 캐릭터 셋 설정
msg.setContent("발송된 인증코드 : <span style='font-size:14pt; color:red;'>"+certificationCode+</span>", "text/html;charset=UTF-8");
// 메일 발송하기
Transport.send(msg);
} // end of public void sendmail (String recipient, String certificationCode)
}
- 위 객체의 import 값 -
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
'Web > JSP' 카테고리의 다른 글
쌍용강북교육센터 국비 학원 Day 73일차 JSP (페이징 처리, Paging) (0) | 2023.04.17 |
---|---|
쌍용강북교육센터 국비 학원 Day 70일차 JSP (radio index 이벤트, 팝업창 함수호출, 결제창 로직구현) (0) | 2023.04.12 |
쌍용강북교육센터 국비 학원 Day 67일차 JSP (session 세션) (0) | 2023.04.09 |
쌍용강북교육센터 국비 학원 Day 66일차 JSP (암호화/복호화, Ajax, Json) (0) | 2023.04.06 |
쌍용강북교육센터 국비 학원 Day 64일차 JSP (DBCP, Connection Pool) (0) | 2023.04.04 |