본문 바로가기
Spring/spring, mybatis

임시 비밀번호 찾기

by 코리늬 2018. 1. 3.

국비교육을 듣는동안 내가 맡았던 부분의 일부분을 포스팅해보려 한다.

비밀번호 찾기를 했을 시 이름과 메일이 DB에 저장된 값과 일치하면, 메일로 임시 비밀번호를 발송해주는 부분이다.


컨트롤러에서는 jsp 페이지에서 입력한 이름과 이메일 값이 일치하면 member로 가져와 저장한다.

그 후 A~Z까지 난수를 발생시켜 6개를 비밀번호로 저장한 후 Repository로 넘어가 값을 비교한다.

비교된 결과 값 result를 model이라는 바구니에 속성값을 담아준다.

아래에도 언급을 하겠지만, update는 integer를 반환하기 때문에 update문이 실행된 경우에는 값이 일치했기 때문에

mailing메소드를 불러와 메일로 값을 보내주고 틀렸을 경우에는 다시 비밀번호찾기 페이지로 가게된다.

package controller;

import java.util.Properties;
import java.util.Random;

import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


import model.Member;
import qna.SMTPAuthenticator;
import repository.PwmailSessionRepository;

@Controller
public class PwmailController {
	
	@Autowired
	PwmailSessionRepository pwmailSessionRepository;
	
	@RequestMapping(value="/find_password", method = RequestMethod.POST)
	public String updateEmail(Member member, Model model) {
		
		String s="";
		String st[] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
		Random r = new Random();
		for(int i=1; i<=6; i++) {
			
			s+=st[r.nextInt(26)];
			
		}
		member.setmPw(s);
		Integer result = pwmailSessionRepository.updateEmail(member);		
		model.addAttribute("result",result);
		System.out.println("result : " + result);
		try {
			if(result>=1) {
				mailing(member);
			}else {
				return "mail";
			}
		}catch (Exception e) {
			e.printStackTrace();
			
		}
		
		return "mail";
	}
	


 Repository

update함수는 반환형으로 integer 상수를 반환 하기 때문에 반환형을 integer로 주었다.

SqlSessionFactory를 통해 DB와 연동을 한다.

그 후 statement 경로에 담긴 mapper에서 update구문을 실행해 DB와 값을 비교하여 일치하면 1을 리턴하고 그렇지 않은 경우

0을 리턴하게된다.

아래 커밋, 롤백은 리턴 값에 따른 경우이다.

package repository;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import model.Member;

@Repository
public class PwmailSessionRepository extends AbstractRepository{

	private final String nameSpace = "repository.mapper.PwmailMapper";
	
	public Integer updateEmail(Member member) {
		SqlSession sqlSession = this.getSqlSessionFactory().openSession();
		try {
			String statment = nameSpace+".updateEmail";
			System.out.println("statment : " + statment);
			System.out.println("getmEmail : " + member.getmEmail());
			System.out.println("getmName : " + member.getmName());
			 int result = sqlSession.update(statment,member);
			 if(result>0) {
				 sqlSession.commit();
			 }else {
				 sqlSession.rollback();
			 }
			 return result;
			}finally {
				sqlSession.close();
			}
	}
}


'Spring > spring, mybatis' 카테고리의 다른 글

Mybatis #과 $ 매핑기호의 차이점  (0) 2019.09.04
스프링 @Autowired  (0) 2018.02.04
spring, 메이븐  (2) 2018.02.03
이클립스에서 mybatis 설정  (0) 2018.02.02

댓글