2024년 4월 21일
<div class="cont">
<form id="formLogin" method="post" action="login_process.do">
<!-- <input type="hidden" id="mode" name="mode" value="login"/>
<input type="hidden" id="returnUrl" name="returnUrl" value="https%3A%2F%2Fwww.pocketsalad.co.kr%3A443"/> -->
<div class="member_login_box">
<div class="login_input_sec">
<div>
<input type="text" id="id" name="id" value="" placeholder="아이디" required="true"><!--id -->
<input type="password" id="pass" name="pass" value="" placeholder="비밀번호" required="true"><!-- pass -->
</div>
<button type="submit" class="btn_login_nbtn" id="loginBtn">로그인</button>
<button id="btnJoinMember" class="btn_member_join">회원가입</button>
</div>
<div class="login_under_con" >
<ul class="idpw_list">
<li><button id="btnFindId" class="btn_member_white">아이디 찾기</button></li>
<li><button id="btnFindPwd" class="btn_member_white">비밀번호 찾기</button></li>
</ul>
</div>
</div>
</form>
</div>
<script type="text/javascript">
var $formLogin;
$(document).ready(function () {
var order_no_max_length = $('input[name=orderNo]').data('max-length');
$('#btnJoinMember').click(function (e) { //회원가입
e.preventDefault();
location.href = 'join.do';
});
$('#btnFindId').click(function (e) { //아이디찾기
e.preventDefault();
location.href = 'find_id.do';
});
$('#btnFindPwd').click(function (e) { //비밀번호 찾기
e.preventDefault();
location.href = 'find_pass.do';
});
$('#id, #pass').focusin(function () {
$('.js_caution_msg1', '#formLogin').addClass('dn');
});
$.validator.addMethod(
"spaceCheck", //validate명
function (value, element) {
//검사하는 name태그의 value 중 공백이 없으면 true, 있으면 false리턴
//false 리턴 시 messages에 선언된 내용들 띄워줌
return $(element).val().indexOf(" ")=-1?true:false;
}
);
$formLogin = $('#formLogin');
$formLogin.validate({
dialog: false,
rules: {
id: {
required: true
},
pass: {
required: true
}
},
messages: {
id: {
required: "아이디를 입력해주세요"
},
pass: {
required: "패스워드를 입력해주세요"
}
}, submitHandler: function (form) {
/* if (window.location.search) {
var _tempUrl = window.location.search.substring(1);
var _tempVal = _tempUrl.split('=');
if (_tempVal[1] == 'lnCouponDown') {
$('#returnUrl').val(document.referrer);
}
}
form.target = 'ifrmProcess'; */
form.submit();
}
});
$("#apple_btn").on("click", startClicked);
function startClicked(){
$("#appleid-signin").click();
}
});
</script>
<script type="text/javascript">
//본 예제에서는 도로명 주소 표기 방식에 대한 법령에 따라, 내려오는 데이터를 조합하여 올바른 주소를 구성하는 방법을 설명합니다.
function execDaumPostcode() {
new daum.Postcode({
oncomplete : function(data) {
// 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
// 도로명 주소의 노출 규칙에 따라 주소를 표시한다.
// 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
var roadAddr = data.roadAddress; // 도로명 주소 변수
var extraRoadAddr = ''; // 참고 항목 변수
// 법정동명이 있을 경우 추가한다. (법정리는 제외)
// 법정동의 경우 마지막 문자가 "동/로/가"로 끝난다.
if (data.bname !== '' && /[동|로|가]$/g.test(data.bname)) {
extraRoadAddr += data.bname;
}
// 건물명이 있고, 공동주택일 경우 추가한다.
if (data.buildingName !== '' && data.apartment === 'Y') {
extraRoadAddr += (extraRoadAddr !== '' ? ', '
+ data.buildingName : data.buildingName);
}
// 표시할 참고항목이 있을 경우, 괄호까지 추가한 최종 문자열을 만든다.
if (extraRoadAddr !== '') {
extraRoadAddr = ' (' + extraRoadAddr + ')';
}
// 우편번호와 주소 정보를 해당 필드에 넣는다.
document.getElementById('zipcode').value = data.zonecode;
document.getElementById("addr").value = roadAddr;
}
}).open();
}
$(function(){
$("#allMenuToggle").click(function(){
$("#gnbAllMenu").toggle();
});//click
$("#joinBtn").click(function(){
joinCheck();
});//click
//아이디 중복검사
$("#id").on("propertychange change keyup paste input", function(){
var memberId=$("#id").val();
var data={memberId : memberId}
var idReg = /^[a-z]+[a-z0-9]{5,19}$/g;
$.ajax({
type:"post",
url:"id_chk_process.do",
data : data,
success: function(result){
if(result != 'fail' ){
$("#errorId").text("");
$("#possId").css("display","inline-block");
$("#impossId").css("display","none");
$("#idPassFlag").val("0"); //사용가능
}else{
$("#errorId").text("");
$("#impossId").css("display","inline-block");
$("#possId").css("display","none");
$("#idPassFlag").val("1"); //아이디사용불가능
}
if(!idReg.test( $("input[name=id]").val() )){
$("#errorId").text("아이디는 영문자로 시작하는 6~20자 영문자 또는 숫자이어야 합니다.");
$("#possId").css("display","none");
$("#impossId").css("display","none");
$("#idPassFlag").val("1"); //사용불가능
}
}
});
});
//비밀번호 일치확인
$("#pass, #pass_chk").on("propertychange change keyup paste input", function(){
var pw = document.getElementById('pass').value;
var SC = ["!","@","#","$","%"];
var check_SC = 0;
for(var i=0;i<SC.length;i++){
if(pw.indexOf(SC[i]) != -1){
check_SC = 1;
}
}
if(pw.length < 6 || pw.length>16 || check_SC == 0){
$("#errorPass").text('!,@,#,$,% 의 특수문자포함 6~15글자이내로 입력.')
$("#passPassFlag").val("1"); //사용불가능
}else{
$("#errorPass").text("");
$("#passPassFlag").val("0"); //사용가능
}
if(document.getElementById('pass').value !="" && document.getElementById('pass_chk').value!=""){
if(document.getElementById('pass').value==document.getElementById('pass_chk').value){
$("#truePass").css("display","inline-block");
$("#falsePass").css("display","none");
$("#psChkPassFlag").val("0"); //사용가능
}
else{
$("#falsePass").css("display","inline-block");
$("#truePass").css("display","none");
$("#psChkPassFlag").val("1"); //사용불가능
}
}
});
});//ready
//비어있는값 계산
function joinCheck(){
//psChkPassFlag passPassFlag idPassFlag
var userid=$("#id").val();
var userpass=$("#pass").val();
var username=$("#name").val();
var userphone=$("#phone").val();
var useremailH=$("#email_head").val();
var useremailN=$("#email_next").val();
var userzipcode=$("#zipcode").val();
var userdeaddr=$("#deAddr").val();
var idPassFlag=$("#idPassFlag").val();
var passPassFlag=$("#passPassFlag").val();
var psChkPassFlag=$("#psChkPassFlag").val();
if(idPassFlag=='1'){
$("#id").focus();
return;
}
if(passPassFlag=='1'){
$("#pass").focus();
return;
}
if(psChkPassFlag=='1'){
$("#pass_chk").focus();
return;
}
if(userid.length==0){
$("#errorId").text("아이디를 입력하세요");
$("#id").focus();
return;
}else{
$("#errorId").text("");
}
if(userpass.length==0){
$("#errorPass").text("비밀번호를 입력하세요");
$("#pass").focus();
return;
}else{
$("#errorPass").text("");
}
if(username.length==0){
$("#errorName").text("이름을 입력하세요");
$("#name").focus();
return;
}else{
$("#errorName").text("");
}
if(useremailH.length==0){
$("#errorEmail").text("이메일을 입력하세요");
$("#email_head").focus();
return;
}else{
$("#errorEmail").text("");
}
if(useremailN.length==0){
$("#errorEmail").text("이메일주소를 입력하세요");
$("#email_next").focus();
return;
}else{
$("#errorEmail").text("");
}
if(userphone.length==0){
$("#errorPhone").text("전화번호를 입력하세요");
$("#phone").focus();
return;
}else{
$("#errorPhone").text("");
}
if(userzipcode.length==0){
$("#errorZipcode").text("우편번호를 입력하세요");
$("#zipcode").focus();
return;
}else{
$("#errorZipcode").text("");
}
if(userdeaddr.length==0){
$("#errorDeaddr").text("상세주소를 입력하세요");
$("#deAddr").focus();
return;
}else{
$("#errorDeaddr").text("");
}
var pass = true;
/*
* 필수 동의 항목 검증
*/
$(':checkbox.require').each(function (idx, item) {
var $item = $(item);
if (!$item.prop('checked')) {
pass = false;
alert("필수항목에 체크해주세요!")
_.delay(function () {
$item.focus();
}, 1000);
return false;
}
});
if(pass){
$("#formJoin").submit();
}
}
</script>
<div class="content_box">
<div class="join_base_wrap">
<div class="member_tit">
<h2>회원가입</h2>
<ol>
<li class="page_on"><span>01</span> 정보입력<span><img src="<http://salad.sist.co.kr/resources/images/main/icon_join_step_on.png>" alt=""></span></li>
<li><span>02</span> 가입완료</li>
</ol>
</div>
<!-- //member_tit -->
<div class="member_cont">
<form id="formJoin" name="formJoin" action="join_process.do" method="post">
<input type="hidden" name="rncheck" value="">
<input type="hidden" name="dupeinfo" value="">
<input type="hidden" name="pakey" value="">
<input type="hidden" name="foreigner" value="">
<input type="hidden" name="adultFl" value="">
<input type="hidden" name="mode" value="join">
<!-- 회원가입/정보 기본정보 --><div class="base_info_box">
<h3>기본정보</h3>
<span class="important">표시는 반드시 입력하셔야 하는 항목입니다.</span>
<div class="base_info_sec">
<table border="0" cellpadding="0" cellspacing="0">
<colgroup>
<col width="25%">
<col width="75%">
</colgroup>
<tbody>
<tr>
<th><span class="important">아이디</span></th>
<td>
<div class="member_warning">
<input type="text" id="id" name="id" data-pattern="gdMemberId">
<input type="hidden" id="idPassFlag" name="idPassFlag" value="0">
</div>
<span id="errorId" style="color: red; "></span>
<span id="possId" style="color: green; display: none;">사용 가능한 아이디입니다.</span>
<span id="impossId" style="color: red; display: none;">아이디가 이미 존재합니다.</span>
</td>
</tr>
<tr class="">
<th><span class="important">비밀번호</span></th>
<td class="member_password">
<div class="member_warning">
<input type="password" id="pass" name="pass" autocomplete="off" placeholder="" onchange="check_pw()">
<input type="hidden" id="passPassFlag" name="passPassFlag" value="1">
</div>
<span id="errorPass" style="color: red"></span>
</td>
</tr>
<tr class="">
<th><span class="important">비밀번호 확인</span></th>
<td>
<div class="member_warning">
<input type="password" class="check-id" id="pass_chk" name="pass_chk" autocomplete="off" onchange="check_pw()">
<input type="hidden" id="psChkPassFlag" name="psChkPassFlag" value="1">
</div>
<span id="truePass" style="color: green; display: none;">비밀번호가 일치합니다.</span>
<span id="falsePass" style="color: red; display: none;">비밀번호가 일치하지않습니다.</span>
</td>
</tr>
<tr>
<th><span class="important">이름</span></th>
<td>
<div class="member_warning">
<input type="text" name="name" id="name" data-pattern="gdMemberNmGlobal" value="" maxlength="30" >
</div>
<span id="errorName" style="color: red"></span>
</td>
</tr>
<tr>
<th><span class="important">이메일</span></th>
<td class="member_email">
<div class="member_warning">
<input type="hidden" name="email" id="email">
<input type="text" name="email_head" id="email_head" value="" style="width:160px;margin-right:7px;">@
<input type="text" name="email_next" id="email_next" value="" style="width: 181px;">
<select id="emailDomain" name="emailDomain" class="chosen-select" style="width:180px;">
<option value="self">직접입력</option>
<option value="naver.com">naver.com</option>
<option value="hanmail.net">hanmail.net</option>
<option value="daum.net">daum.net</option>
<option value="nate.com">nate.com</option>
<option value="hotmail.com">hotmail.com</option>
<option value="gmail.com">gmail.com</option>
<option value="icloud.com">icloud.com</option>
</select>
</div>
<span id="errorEmail" style="color: red"></span>
</td>
</tr>
<tr>
<th><span class="important">휴대폰번호</span></th>
<td class="member_address">
<div class="address_postcode">
<input type="text" id="phone" name="phone" maxlength="11" placeholder="- 없이 입력하세요."
data-pattern="gdNum" value="" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\\..*)\\./g, '$1');" style="width: calc( 100% - 187px) ;">
</div>
<span id="errorPhone" style="color: red"></span>
</td>
</tr>
<!-- 우편번호 -->
<tr >
<th><span class="important">우편번호</span></th>
<td class="member_address">
<div class="address_postcode">
<input type="text" name="zipcode" id="zipcode" value="" style="width:160px;margin-right:7px;"/>
<button class="btn_post_search" type="button" id="zipcodeBtn" style="width:165px;" onclick="execDaumPostcode()">우편번호</button>
</div>
<span id="errorZipcode" style="color: red"></span>
</td>
</tr>
<!-- 주소 -->
<tr>
<th><span class="important">주소</span></th>
<td>
<div class="member_warning">
<input type="text" id="addr" name="addr" data-pattern="gdMemberId">
</div>
</td>
</tr>
<!-- 상세주소 -->
<tr>
<th><span class="important">상세주소</span></th>
<td>
<div class="member_warning">
<input type="text" id="deAddr" name="deAddr" data-pattern="gdMemberId">
</div>
<span id="errorDeaddr" style="color: red"></span>
</td>
</tr>
</tbody>
</table>
</div>
<!-- //base_info_sec -->
</div>
MemberController.java
package kr.co.salad.user.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.encoding.PasswordEncoder;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import kr.co.salad.user.domain.KategoriePrdDomain;
import kr.co.salad.user.service.KategoriePrdService;
import kr.co.salad.user.service.MemberService;
import kr.co.salad.user.vo.MemberVO;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
import static org.springframework.web.bind.annotation.RequestMethod.POST;
import java.lang.reflect.Member;
import java.util.List;;
@SessionAttributes({"userId","userName"})
@Controller
public class MemberController {
@Autowired(required = false)
private MemberService ms;
@Autowired(required = false)
private KategoriePrdService kpService;
//로그인이동
@RequestMapping(value = "/login.do",method = GET)
public String login(Model model) {
List<KategoriePrdDomain> mainCateList=kpService.mainCateList();
model.addAttribute("mainCateList",mainCateList);
return "user/member/login";
}
//로그인시도
@RequestMapping(value = "/login_process.do",method = {GET,POST})
public String loginProcess(MemberVO mVO,Model model) {
String loginUri="";
String loginname=ms.searchLogin(mVO);
System.out.println("로그인한 이름 : "+loginname);
if(loginname==""||loginname==null) { //로그인 실패
System.out.println("실패");
model.addAttribute("eMsg","일치하는 회원이 없습니다.");
loginUri="user/member/login";
}else { //로그인 성공
System.out.println("로그인한 ID : "+mVO.getId());
model.addAttribute("userId",mVO.getId()); //id세션설정
model.addAttribute("userName",loginname); //name세션설정
loginUri="redirect:<http://salad.sist.co.kr/index.do>";
}
System.out.println(loginUri);
return loginUri;
}
//회원가입이동
@RequestMapping(value = "/join.do",method = GET)
public String join(Model model) {
List<KategoriePrdDomain> mainCateList=kpService.mainCateList();
model.addAttribute("mainCateList",mainCateList);
return "user/member/join";
}
//회원가입성공
@RequestMapping(value = "/join_process.do",method = POST)
public String joinProcess(MemberVO mVO,Model model) {
BCryptPasswordEncoder passEncoder=new BCryptPasswordEncoder();
String loginUri="";
mVO.setPass(passEncoder.encode(mVO.getPass()));
System.out.println(mVO);
boolean joinFalg=ms.addJoin(mVO);
if(joinFalg) {
model.addAttribute("name",mVO.getName());
loginUri="user/member/join_ok";
}else {
model.addAttribute("joinFail","회원가입에 실패하였습니다.");
loginUri="user/member/join";
}
return loginUri;
}
//ID찾기이동
@RequestMapping(value = "/find_id.do",method = GET)
public String findId(Model model) {
List<KategoriePrdDomain> mainCateList=kpService.mainCateList();
model.addAttribute("mainCateList",mainCateList);
return "user/member/find_id";
}
//ID찾기완료이동
@RequestMapping(value = "/find_id_process.do",method = POST)
public String findIdProcess(MemberVO mVO,Model model) {
String findIdUri="";
String findId=ms.searchFindIdChk(mVO);
System.out.println(findId);
List<KategoriePrdDomain> mainCateList=kpService.mainCateList();
model.addAttribute("mainCateList",mainCateList);
if(findId!=null) {
model.addAttribute("id",findId);
model.addAttribute("name",mVO.getName());
findIdUri="user/member/find_id_success";
}else{
model.addAttribute("eMsg",true);
findIdUri="user/member/find_id";
}
return findIdUri;
}
//ID중복확인
@RequestMapping(value = "/id_chk_process.do",method = POST)
@ResponseBody
public String idChkProcess(String memberId){
int result=ms.searchIdChk(memberId);
System.out.println(result);
if(result!=0) { //중복 아이디 존재
return "fail";
}else {
return "success"; //아이디 사용 가능
}
}
//PW찾기이동
@RequestMapping(value = "/find_pass.do",method = GET)
public String findPass(Model model) {
List<KategoriePrdDomain> mainCateList=kpService.mainCateList();
model.addAttribute("mainCateList",mainCateList);
return "user/member/find_password";
}
//PW입력페이지이동(회원확인)
@RequestMapping(value = "/find_pass_reset.do",method = POST)
public String findPassReset(MemberVO mVO,Model model) {
String findpwUri="";
System.out.println("비밀번호 변경전 회원 확인 : "+mVO);
boolean pwChk=ms.searchFindPassChk(mVO);
List<KategoriePrdDomain> mainCateList=kpService.mainCateList();
model.addAttribute("mainCateList",mainCateList);
if(pwChk) { //회원정보있음
model.addAttribute("id",mVO.getId());
findpwUri="user/member/find_password_reset";
}else { //회원정보없음
model.addAttribute("pwFindFail","일치하는 회원이 없습니다.");
findpwUri="user/member/find_password";
}
return findpwUri;
}
//PW변경
@RequestMapping(value = "/find_pass_process.do",method = POST)
public String findPassProcess(MemberVO mVO,Model model) {
BCryptPasswordEncoder passEncoder=new BCryptPasswordEncoder();
String updatePwUri="";
mVO.setNewPass(passEncoder.encode(mVO.getNewPass())); //새로운 비밀번호 암호화
System.out.println("비밀번호 변경 : "+mVO);
int pwEdit=ms.editPassReser(mVO);
if(pwEdit==1) { //비밀번호 변경 성공
List<KategoriePrdDomain> mainCateList=kpService.mainCateList();
model.addAttribute("mainCateList",mainCateList);
System.out.println("비번 변경 성공");
updatePwUri="user/member/find_password_complete";
}else { //비밀번호 변경 실패
System.out.println("비번 변경 실패");
model.addAttribute("pwEditFail","비밀번호변경 실패.");
updatePwUri="user/member/find_password_reset";
}
return updatePwUri;
}
//로그아웃
@RequestMapping(value="/logout_process.do",method = GET)
public String logoutProcess(SessionStatus ss) {
ss.setComplete();
return "redirect:<http://salad.sist.co.kr/index.do>";
}
//이용약관동의화면이동
@RequestMapping(value = "/agreement.do",method = GET)
public String agreement(Model model) {
List<KategoriePrdDomain> mainCateList=kpService.mainCateList();
model.addAttribute("mainCateList",mainCateList);
return "user/member/agreement";
}
//개인정보수집동의화면이동
@RequestMapping(value = "/pprivate.do",method = GET)
public String pprivate(Model model) {
List<KategoriePrdDomain> mainCateList=kpService.mainCateList();
model.addAttribute("mainCateList",mainCateList);
return "user/member/pprivate";
}
}
MemberService.java
package kr.co.salad.user.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import kr.co.salad.user.dao.MemberDAO;
import kr.co.salad.user.vo.MemberVO;
@Component
public class MemberService {
@Autowired(required = false)
private MemberDAO mDAO;
//로그인 여부
public String searchLogin(MemberVO mVO) {
String loginName="";
loginName=mDAO.selectLogin(mVO);
return loginName;
}
//회원가입 추가
public boolean addJoin(MemberVO mVO) {
boolean joinFalg=false;
joinFalg=mDAO.insertJoin(mVO);
return true;
}
//아이디찾기
public String searchFindIdChk(MemberVO mVO) {
String findName="";
findName=mDAO.selectFindIdChk(mVO);
return findName;
}
//중복아이디체크
public int searchIdChk(String id) {
return mDAO.selectIdChk(id); //중복아이디존재
}
//비밀번호 찾기 체크
public boolean searchFindPassChk(MemberVO mVO) {
boolean pwCh=false;
pwCh=mDAO.selectFindPassChk(mVO);
return pwCh;
}
//비밀번호 변경
public int editPassReser(MemberVO mVO) {
int editPw=0;
editPw=mDAO.updatePassReser(mVO);
return editPw; //변경완료
}
}
MemberDAO.java
package kr.co.salad.user.dao;
import org.apache.ibatis.session.SqlSession;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Component;
import kr.co.salad.user.vo.MemberVO;
import kr.co.salad.dao.handler.MyBatisHandler;
@Component
public class MemberDAO {
//로그인 여부
public String selectLogin(MemberVO mVO) {
String name="";
BCryptPasswordEncoder passEncoder=new BCryptPasswordEncoder();
MyBatisHandler mbh=MyBatisHandler.getInstance();
SqlSession session=mbh.getHandler();
//쿼리실행
MemberVO resultVO=session.selectOne("kr.co.salad.user.memberMapper.selectLogin", mVO);
if(resultVO==null) {
name="";
}else {
System.out.println(resultVO.getPass());
if(passEncoder.matches(mVO.getPass(), resultVO.getPass())) { //암호화한 비밀번호와 입력한 비밀번호 비교
System.out.println("회원정보 있음");
name=resultVO.getName();
session.commit();
}else {
System.out.println("회원정보 없음");
}
}
//Handler 종료
mbh.closeHandler(session);
return name;
}
//회원가입 추가
public boolean insertJoin(MemberVO mVO) {
boolean joinFlag=false;
MyBatisHandler mbh=MyBatisHandler.getInstance();
SqlSession session=mbh.getHandler();
//쿼리실행
int mCnt=session.insert("kr.co.salad.user.memberMapper.insertMember", mVO);
if(mCnt==1) { //select 값이 있어
System.out.println("회원추가");
joinFlag=true;
session.commit();
}else {
System.out.println("회원추가 실패");
}
//Handler 종료
mbh.closeHandler(session);
return joinFlag;
}
//아이디찾기
public String selectFindIdChk(MemberVO mVO) {
String id=null;
MyBatisHandler mbh=MyBatisHandler.getInstance();
SqlSession session=mbh.getHandler();
//쿼리실행
String findID=session.selectOne("kr.co.salad.user.memberMapper.selectId", mVO);
if(findID!=null) { //찾는 아이디가 있다
System.out.println("찾은 아이디 "+findID);
id=findID;
session.commit();
}else {
System.out.println("아이디 찾기 실패");
}
//Handler 종료
mbh.closeHandler(session);
return id;
}
//중복아이디체크
public int selectIdChk(String id) {
int idChk=0;
MyBatisHandler mbh=MyBatisHandler.getInstance();
SqlSession session=mbh.getHandler();
//쿼리실행
String findID=session.selectOne("kr.co.salad.user.memberMapper.selectIdChk", id);
if(findID!=null) { //찾는 아이디가 있다
idChk=1;
session.commit();
}else {
}
//Handler 종료
mbh.closeHandler(session);
return idChk;
}
//비밀번호 찾기 회원확인
public boolean selectFindPassChk(MemberVO mVO) {
boolean pwChFlag=false;
MyBatisHandler mbh=MyBatisHandler.getInstance();
SqlSession session=mbh.getHandler();
//쿼리실행
String findID=session.selectOne("kr.co.salad.user.memberMapper.selectMemCh", mVO);
if(findID!=null) { //찾는 아이디가 있다
System.out.println("회원확인 완료");
pwChFlag=true;
session.commit();
}else {
System.out.println("회원확인 실패");
}
//Handler 종료
mbh.closeHandler(session);
return pwChFlag;
}
//비밀번호 변경
public int updatePassReser(MemberVO mVO) {
MyBatisHandler mbh=MyBatisHandler.getInstance();
SqlSession session=mbh.getHandler();
//쿼리실행
int upCnt=session.update("kr.co.salad.user.memberMapper.updateMemCh", mVO);
if(upCnt==1) { //변경된 비밀번호
System.out.println("비밀번호 변경 완료");
upCnt=1;
session.commit();
}else {
System.out.println("비밀번호 변경 실패");
}
//Handler 종료
mbh.closeHandler(session);
return upCnt; //변경완료
}
}
memberMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"<https://mybatis.org/dtd/mybatis-3-mapper.dtd>">
<mapper namespace="kr.co.salad.user.memberMapper">
<!-- 로그인 -->
<select id="selectLogin" parameterType="kr.co.salad.user.vo.MemberVO" resultType="kr.co.salad.user.vo.MemberVO">
select id, pass,name
from member
where id=#{id} and out_flag=0
</select>
<select id="selectIdChk" parameterType="string" resultType="string">
select id
from member
where id=#{id}
</select>
<!-- 아이디찾기 -->
<select id="selectId" parameterType="kr.co.salad.user.vo.MemberVO" resultType="string">
select id
from member
where name=#{name} and email=#{email}
</select>
<!-- 비밀번호 회원확인 -->
<select id="selectMemCh" parameterType="kr.co.salad.user.vo.MemberVO" resultType="string">
select id
from member
where id=#{id} and name=#{name} and email=#{email}
</select>
<!-- 비밀번호 변경 -->
<update id="updateMemCh" parameterType="kr.co.salad.user.vo.MemberVO">
update member
set pass=#{newPass}
where id=#{id}
</update>
<!-- 회원가입 -->
<insert id="insertMember" parameterType="kr.co.salad.user.vo.MemberVO">
insert into member(id,pass,name,email,phone,zipcode,addr,de_addr)
values(#{id}, #{pass}, #{name}, #{email}, #{phone}, #{zipcode},#{addr}, #{deAddr})
</insert>
</mapper>