20221117(목)
- 목차
- 회원가입 페이지 폼 만들기
- 추가 작업
- daum 우편번호 api 삽입
- ID 중복체크
- 이메일 인증
< 회원가입 페이지 폼 만들기 >
1. Member SQL 테이블 생성
-- 1. 회원가입 테이블
CREATE TABLE MEMBER_TBL(
MEM_ID VARCHAR2(15) CONSTRAINT PK_MEMBER_ID PRIMARY KEY,
MEM_NAME VARCHAR2(30) NOT NULL,
MEM_PW CHAR(60) NOT NULL,
MEM_EMAIL VARCHAR2(50) NOT NULL,
MEM_ZIPCODE CHAR(5) NOT NULL,
MEM_ADDR VARCHAR2(100) NOT NULL,
MEM_ADDR_D VARCHAR2(100) NOT NULL,
MEM_PHONE VARCHAR2(15) NOT NULL,
MEM_NICK VARCHAR2(20) NOT NULL UNIQUE,
MEM_ACCEPT_E CHAR(1) DEFAULT 'Y' NOT NULL,
MEM_POINT NUMBER DEFAULT 0 NOT NULL,
MEM_DATE_SUB DATE DEFAULT SYSDATE NOT NULL,
MEM_DATE_UP DATE DEFAULT SYSDATE NOT NULL,
MEM_DATE_LAST DATE DEFAULT SYSDATE NOT NULL,
MEM_AUTHCODE CHAR(1) DEFAULT 'N' NOT NULL,
MEM_ACCEPT_INFO CHAR(1) DEFAULT 'Y' NOT NULL
);
COMMIT;
2. MemberVO / Controller / Mapper / Service / ServiceImpl 생성
3. 어노테이션 및 주입작업 완료
- join.jsp 내용 따와서 회원가입 폼 만들기 (부트 스트랩 이용)
- join.jsp 에 코드 추가
<div class = "container"> 부터 ~ footer.jsp 까지
< 추가 작업 >
(1) MemberVO.java 만들기
- DB 보고 MemberVO.java 만들기
- @Data 어노테이션으로 Getter, Setter, ToString 메서드 한번에 추가!
(2) MemberController.java 만들기
//회원정보저장
@PostMapping("/join")
public String join(MemberVO vo, RedirectAttributes rttr) {
return "";
}
**MemberVo.java에 선언된 변수명과 join.jsp에 나오는 name이 일치하는지 확인필요!
(3) join.jsp에 있는 부트스트랩 파일 따로 빼놓기
(include ➡ common.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- Bootstrap core CSS -->
<link href="https://getbootstrap.com/docs/4.6/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<!-- Custom styles for this template -->
<link href="https://getbootstrap.com/docs/4.6/examples/pricing/pricing.css" rel="stylesheet">
위 코드가 사용되었던 파일들은 내용 삭제 후 common.jsp를 연결시켜준다.
➡ <%@include file = "/WEB-INF/views/include/common.jsp" %> 를 추가
** 원래 미리 계획하고 들어가야 하지만, 처음엔 쉽지 않다.😂
< daum 우편번호 api 삽입 >
(1) daum 우편번호 api 검색
https://postcode.map.daum.net/guide#usage
Daum 우편번호 서비스
우편번호 검색과 도로명 주소 입력 기능을 너무 간단하게 적용할 수 있는 방법. Daum 우편번호 서비스를 이용해보세요. 어느 사이트에서나 무료로 제약없이 사용 가능하답니다.
postcode.map.daum.net
(2) 원하는 템플릿 선택 후 코드 복사
(3) daum_post.html 파일 생성 후 <body>내에 위에서 복사한 코드 삽입
ex) 실행화면 1
(4) daum_post.html 안의 자바스크립트코드를<script> join.jsp 에 붙여넣어 연결시켜준다.
ex) 실행화면 2
- common.jsp에 공통관련 코드 넣기 (코드 : 참고코드 받음)
< ID 중복체크 >
(1) join.jsp에 코드추가
<script>
$(document).ready(function(){
let joinForm = $("#joinForm");
// ID 중복 체크
$("#btnIDCheck").on("click", function(){
if($("#mem_id").val() == "") {
alert("아이디를 입력하세요");
$("#mem_id").focus();
return;
}
$.ajax({
url: '/member/idCheck',
type: 'get',
dataType: 'text',
data: {men_id : $("#men_id").val()},
success:function(data) {
console.log("아이디 사용유무: " + data);
}
});
});
});
</script>
(2) MemberController.java에 아이디 중복체크 코드추가
(3) MemberMapper.java에 아이디 중복체크 코드추가
(4) MemberMapper.xml에 idCheck 관련 sql 추가
- resultType : 결과값을 받아와야 할 때 넣는다.
(5) MemberService.java에 idCheck 코드추가
(6) MemberServiceImpl.java에 생성자 오버로딩
(7) MemberController.java에 주입작업 및 아이디 중복체크 코드추가
✨ 어노테이션 정리!
➡ https://dorothy-yang.tistory.com/227
[어노테이션] @ResponseBody / @ResponseEntity<T> / @RequestParam("") 정리
@ResponseBody @ResponseEntity @RequestParam("") 정리 ex) 코드예시 ✨ 여기서 잠깐! 알아두고 넘어가자! (HTTP 프로토콜) - Http 프로토콜 : 인터넷 상 데이터를 주고받기 위한 서버/클라 모델 - http Request 요청 :
dorothy-yang.tistory.com
- 중복체크결과 화면에 나타내기
(7) join.jsp에 아이디 사용유무 확인코드추가
ex) 실행화면
< 이메일 인증 >
- SMTP 프로토콜
(Simple Mail Transfer Protocol, SMTP)
인터넷에서 이메일을 보내기 위해 이용되는 프로토콜이다. 사용하는 TCP 포트번호는 25번이다.
✨ 공개된 메일서버 정보들을 가져와서 붙여넣기 작업
1. pom.xml에 메일 라이브러리 추가 (docmall의 pom.xml 참고)
<!-- 메일 주요내용 정리 -->
<!-- 스프링 메일기능을 제공하는 기본인터페이스 MailSender가 SimpleMailMessage를 이용하며, 첨부파일 등을 지원하지 않음. -->
<!-- MIME Message 를 이용한다. -->
<!-- 백신종류프로그램이 동작되어, 메일기능테스트를 실패하는 경우가 있다. 동작중인 백신프로그램 정지. -->
<!-- 스케줄링, 메일발송, 캐시 연동,Velocity 등 부가기능제공 -->
<!-- org.springframework.mail.javamail.JavaMailSenderImpl -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- 이론설명 할것. -->
<!-- 메일 관련라이브러리 javax.mail.internet.MimeMessage -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.6</version>
</dependency>
2. root-context.xml에 메일기능 관련 설정 추가 (docmall의 root-context.xml 참고)
- 윈도우즈 운영체제 / 리눅스 서버 별 버전에 따라 코드가 달라질 수 있다!
<!-- 메일기능 관련설정 -->
<!-- https://myaccount.google.com/security?rapt=AEjHL4OdkuzyEZ7kVBfl7IjImC8vCQOvguwootB5OVe6lT5TDHpILM5DO4vkNzw5y1RIQtWr_0s09Tz1gwq2JxhmNX6GQsCVRQ
메일인증방식 변경됨. 앱비밀번호. 암호화키 사용. -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com" />
<property name="port" value="587" />
<property name="username" value="${email.account}" />
<property name="password" value="${email.password}" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<!-- 윈도우즈 운영체제 11버전(클라이언트)에 따라 TLS변환문제가 발생이 되는 듯 추측함.
<prop key="mail.smtp.ssl.trust">smtp.gmail.com</prop>
<prop key="mail.smtp.ssl.protocols">TLSv1.2</prop>
-->
<prop key="mail.smtp.starttls.enable">true</prop>
</props>
</property>
</bean>
3. gmail 인증코드 받기 (아래 링크 참고)
https://dorothy-yang.tistory.com/179
[Gmail 앱 비밀번호] 이메일 인증번호 설정하기 / SMTP
Mail API 사용 시 필요한 앱 비밀번호 받아내기 🕵️♂️ 1. Google 계정 로그인 ➡ 본인 아이콘 클릭 ➡ Google 계정 관리 2. 보안 탭 ➡ Google에 로그인 부분 ➡ 앱 비밀번호 (2단계 인증 : 사용 설정
dorothy-yang.tistory.com
4. root-context.xml의 앞에서 불러온 메일기능 관련 설정 중 메일주소와 인증키 부분에 내용을 각각 입력한다.
5. EmailController / EmailService / EmailServiceImpl / EmailDTO 파일 생성하기
6. EmailDTO.java 작성
7. EmailController 작성
**mapper는 없다!!! mapper가 있다는 의미 = DB가 잇다는 의미다.
8. EmailService.java 작성
package com.docmall.service;
import com.docmall.dto.EmailDTO;
public interface EmailService {
void sendMail(EmailDTO dto, String message);
}
9. EmailServiceImple.java 작성
- JavaMailSender : MimeMessage(Java Mail API), JavaMailSenderImpl(인터페이스 구현체)
createMimeMessage()
@Service
public class EmailServiceImpl implements EmailService {
//주입 : mailSender bean 주입.
@Setter(onMethod_ = {@Autowired})
private JavaMailSender mailSender;
@Override
public void sendMail(EmailDTO dto, String message) {
//메일구성정보를 담당하는 객체(받는사람, 보내는 사람, 전자우편주소, 본문내용)
MimeMessage msg = mailSender.createMimeMessage();
try {
//받는사람 메일주소
msg.addRecipient(RecipientType.TO, new InternetAddress(dto.getReceiverMail()));
//보내는 사람(메일, 이름)
msg.addFrom(new InternetAddress[] {new InternetAddress(dto.getSenderMail(), dto.getSenderName())});
//메일제목
msg.setSubject(dto.getSubject(), "utf-8");
//본문내용
msg.setText(message, "utf-8");
mailSender.send(msg); // GMail SMTP서버를 이용하여, 메일 발송이 된다.
}catch(Exception ex) {
ex.printStackTrace();
}
}
}
스프링을 이용하여 메일발송해보자 (gmail기반)
javax.mail mail 1.4.7 org.springframework spring-context-support ${org.springframework-version} → gmail 활용 smtp true true true MailSender — SimpleMailMessage (메일제목, 단순 텍스트 내용) package com.bitcamp.mvc; import org.springframewor
kkangdda.tistory.com
10. EmailController 작성
@setter 작업시 @Autowired 임포트 해야 함
11. join.jsp에 메일인증코드 요청 추가
//메일인증코드 요청
$("#btnAuthcode").on("click", function(){
if($("#mem_email").val() == "") {
alert("메일주소를 입력하세요");
$("#mem_email").focus();
return;
}
$.ajax({
url : '/email/send',
type : 'get',
dataType : 'text',
data : {receiverMail: $("#mem_email").val() }, // Javascript Object 구문
success : function(data) {
if(data == "success") {
alert("인증메일이 발송되었습니다. 인증코드를 확인해주세요");
}else{
alert("메일발송이 실패되었습니다. 관리자에게 문의해주세요");
}
}
ex) 실행화면
(12) join.jsp에 메일인증확인 코드추가
(13) EmailController에 인증번호 확인코드 추가
ex) 실행 화면
입력값 유지하려면 실행화면에서 새고하지말고 뒤로가기 버튼 누르기!!
'🏫 Open API_JAVA' 카테고리의 다른 글
[82일차-2] 아이디 & 비번찾기 / 비번찾기 : 임시비밀번호 발급 (0) | 2022.11.21 |
---|---|
[82일차 - 1] 회원정보 저장 / 비밀번호 암호화 / 로그인 / 로그아웃 (0) | 2022.11.18 |
[80일차] 게시판 댓글 수정 및 삭제 구현 (0) | 2022.11.17 |
[79일차] 게시판 댓글 목록 / 페이징 / 모달창 구현 / jQuery 눈도장 (0) | 2022.11.17 |
[78일차] REST 방식 / gson 라이브러리 추가 / 게시판에 댓글 기능 구현 (ex04) (0) | 2022.11.15 |