게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
스프링에서 컨트롤러, 서비스, DAO 구현이 모호합니다.
게시물ID : programmer_21289짧은주소 복사하기
작성자 : kre29
추천 : 0
조회수 : 628회
댓글수 : 4개
등록시간 : 2017/08/30 18:28:54
옵션
  • 창작글
  • 베스트금지
  • 베오베금지
  • 본인삭제금지

기본적으로 controller는 요청이 들어오면 해당 요청에 해당하는 비즈니스 로직(service)을 호출,

호출된 비즈니스 로직에서 해당 프로세스을 실행하게 되며, 그 중간중간 DB 접근을 dao를통해 하게 된다.


라고 이해하고 있습니다만,

무슨 말인지는 이해 하나, 직접 코딩을 했을 때 이 경계가 모호해져버립니다.


예를 들어 컨트롤러에서 로그인 후 로그인을 체크하는 메서드를 호출했을 때,

현재 프로세스는 아래와 같습니다.


AuthController입니다.

@RequestMapping(value="/login/check", method=RequestMethod.POST) public String loginCheck(MemberVo memberVo, String token, Model model) throws Exception { 	securityService.checkToken(token);  	HashMap<String, Object> hashMap = authService.login(memberVo); 	 	MemberVo resultVo = (MemberVo) hashMap.get("memberVo"); 	Integer loginState = (Integer) hashMap.get("state"); 	 	if(loginState != null) { 		if(loginState == IAuthService.NO_EMAIL_CERTIFY) { // 이메일이 인증되지 않았다면 이메일 인증 메일 변경 및 재전송 			model.addAttribute("msg", resultVo.getEmail() + "메일로 메일인증을 받으셔야 로그인 가능합니다.\\n다른 메일주소로 변경하여 인증하시려면 확인을 클릭하시기 바랍니다."); 			model.addAttribute("redirect", "member/change/email?id=" + resultVo.getId() + "&token=" + securityService.getToken()); 			model.addAttribute("redirectCancle", ""); 			 			return "message/confirmReplace"; 		} 	}  	return "redirect:/"; }


AuthService입니다.

public HashMap<String, Object> login(MemberVo memberVo) throws Exception {	MemberVo resultVo = memberDao.selectOne(memberVo);	 	HashMap<String, Object> hashMap = new HashMap<String, Object>();	hashMap.put("memberVo", resultVo);	 	if(resultVo == null) {		throw new Exception("아이디 혹은 비밀번호가 맞지 않습니다.");	} 	if(!memberService.checkHashedPassword(resultVo.getPassword(), memberVo.getPassword())) {		//아이디 혹은 비밀번호가 맞지 않다는 메시지를 나타내는 이유는 사용자에게 아이디가 존재하는지 알리지 않기 위함. 		throw new Exception("아이디 혹은 비밀번호가 맞지 않습니다.");	}	 	TimestampUtil timestampUtil = new TimestampUtil();	timestampUtil.setFormat("yyyy년 MM월 dd일 HH시 mm분 ss초");	 	if(resultVo.getBlockDate() != null) {		timestampUtil.setTimestamp(resultVo.getBlockDate());		String blockDate = timestampUtil.getFormatDate();		throw new Exception(resultVo.getId() + " 회원님은 " + blockDate + "에 차단되셨습니다.");	}	 	if(resultVo.getLeaveDate() != null) {		timestampUtil.setTimestamp(resultVo.getLeaveDate());		String leaveDate = timestampUtil.getFormatDate();		throw new Exception(resultVo.getId() + " 회원님은 " + leaveDate + "에 회원탈퇴를 하셨습니다.");	}	 	if(resultVo.getEmailCertifyDate() == null) {		System.err.println("warning: 회원 로그인 시 이메일 인증이 없으면 출력, 회원 이메일을 다시 적을 수 있는 페이지 제작해야 함.");		 		hashMap.put("state", IAuthService.NO_EMAIL_CERTIFY);		 		return hashMap;	}	 	System.err.println("warning: 비밀번호 5회 이상 틀릴 경우 비밀번호 찾기 필요");	 	timestampUtil = new TimestampUtil();	Timestamp today = timestampUtil.getTimestamp();	 	memberVo.setLoginDate(today);	 	memberDao.update(memberVo);	 	setAuthMember(memberVo); //세션에 memberVo 추가.(로그인 	 	return hashMap;}


현재 경계를 나눌 수가 없어서 제 마음대로 작성해놨습니다만,

어떤 부분이 어디로 가야할지를 알려주시면 정말 많은 도움이 될 것 같습니다.


선배님들의 많은 도움 부탁드립니다!

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호