일시
2021.01.02 ~ 2022.01.03
프로젝트 개요
주제 : 유기견 입양 및 후원 사이트
프로젝트명(사이트명) & 팀명 : DDORI'S HOUSE
구현 내용(목표) : 로그인/회원가입, 마이페이지(사용자), 마이페이지(관리자), 각종 게시판(공지사항, 강아지 리스트, 자유게시판, 입양후기 등), 쇼핑몰(물건 판매, 결제 시스템), 매칭 시스템(질문에 대한 답변을 통해 적절한 유형 매칭)
네비게이션 구성 : about(각종 소개 및 공지사항), adopt(강아지 리스트, 강아지 매칭), donation(후원 안내, 물건 판매), volunteer(봉사 안내 게시판), community(입양후기, 자유게시판), contact(오시는길, 연락 등), login/join(로그인, 회원가입, 마이페이지 등)
맡은 역할 : DB 관리(모델링 및 테이블, 컬럼 등), 네비게이션바, login/join, Mypage
람쥐의 진행현황 2탄!!!
★ Mypage
1) 마이페이지 jsp 만들기
★ login/join
1) 회원정보 수정 jsp 만들기
2) DB연동하여 업데이트한 회원정보 출력 확인
3) 회원탈퇴 버튼 만들기
4) DB연동하여 딜리트한 회원정보 출력 확인 (※탈퇴시 모든 게시물 삭제 추가로 21.01.23 최종구현완료)
5) 아이디 찾기 구현
구현화면
//★★ 회원정보수정 창 띄우기
@RequestMapping(value="/user/updateForm", method=RequestMethod.GET)
public String updateForm(ModelMap model, HttpServletRequest request, HttpServletResponse response)
{
String cookieUserId = CookieUtil.getHexValue(request, AUTH_COOKIE_NAME);
User user = userService.userSelect(cookieUserId); //유저객체에 현재 갖고있는 유저정보를 읽어왔어요
model.addAttribute("user", user); // 나는 "user"라는 jsp에서 사용할 이름을 쓸거야, 메소드에 정의되어있는 user라는 객체를
return "/user/updateForm";
}
<update id="userUpdate" parameterType="com.icia.web.model.User">
UPDATE TBL_USER
SET USER_PWD = #{userPwd},
USER_NAME = #{userName},
USER_EMAIL = #{userEmail},
REG_DATE = SYSDATE,
USER_ADDRESS = #{userAddress},
USER_PNUM = #{userPNum},
USER_B_DATE = #{userBDate},
USER_NNAME = #{userNName}
WHERE USER_ID = #{userId}
</update>
public int userUpdate(User user);
public int userUpdate(User user)
{
int count = 0;
try
{
count = userDao.userUpdate(user);
}
catch(Exception e)
{
logger.error("[UserService] userUpdate Exception", e);
}
return count;
}
$.ajax({
type : "POST",
url:"/user/updateProc",
data:{
userId:$("#userId").val(),
userPwd:$("#userPwd").val(),
userName:$("#userName").val(),
userEmail:$("#userEmail").val(),
userAddress:$("#userAddress").val(),
userPNum:$("#userPNum").val(),
userBDate:$("#userBDate").val(),
userNName:$("#userNName").val()
},
datatype:"JSON",
beforeSend:function(xhr){
xhr.setRequestHeader("AJAX", "true");
},
success:function(response)
{
if(response.code==0)
{
alert("회원정보가 수정되었습니다.");
location.href = "/user/myPage";
}
else if(response.code==400)
{
alert("파리미터 값이 올바르지 않습니다.");
$("#userPwd1").focus();
}
else if(response.code==404)
{
alert("회원정보가 없습니다.");
location.href = "/";
}
else if(response.code==500)
{
alert("회원정보 수정 중 오류가 발생했습니다.");
$("#userPwd1").focus();
}
else
{
alert("회원정보 수정 중 오류가 발생했습니다.");
$("#userPwd1").focus();
}
},
complete:function(data)
{
icia.common.log(data);
},
error:function(xhr, status, error)
{
icia.common.error(error);
}
});
//★★회원정보 수정
@RequestMapping(value="/user/updateProc", method=RequestMethod.POST)
@ResponseBody
public Response<Object> updateProc(HttpServletRequest request, HttpServletResponse response)
{
Response<Object> ajaxResponse = new Response<Object>();
String cookieUserId = CookieUtil.getHexValue(request, AUTH_COOKIE_NAME);
String userId = HttpUtil.get(request, "userId");
String userPwd = HttpUtil.get(request, "userPwd");
String userName = HttpUtil.get(request, "userName");
String userEmail = HttpUtil.get(request, "userEmail");
String regDate = HttpUtil.get(request, "regdate");
String userAddress = HttpUtil.get(request, "userAddress");
String userPNum = HttpUtil.get(request, "userPNum");
String dogSeqList = HttpUtil.get(request, "dogSeqList");
String userBDate = HttpUtil.get(request, "userBDate");
String userNName = HttpUtil.get(request, "userNName");
if(!StringUtil.isEmpty(cookieUserId))
{//일단 주소를 바로 치고들어오는경우도 있기 때문에~
User user = userService.userSelect(cookieUserId); //그래서 이걸로 정보일단 조회할거야
if(user != null)
{//status가 y일때 수정할 수 있자나
if(StringUtil.equals(user.getStatus(), "Y"))
{//회원정보수정도 사용하고 있는 회원이기 때문에 Y 스테터스 확인해주는겨
if(!StringUtil.isEmpty(userPwd) && !StringUtil.isEmpty(userName) && !StringUtil.isEmpty(userEmail))
{//입력값이 빠진거 없이 null없이 잘 들어갔니?
//이제 유저객체에 값을 넣어줘야함. 현재까지는 DB에있는 값만 불러온듯
user.setUserName(userName);
user.setUserPwd(userPwd);
user.setUserEmail(userEmail);
user.setUserAddress(userAddress);
user.setUserPNum(userPNum);
user.setUserBDate(userBDate);
user.setUserNName(userNName);
if(userService.userUpdate(user)>0)
{//그리고나서 업데이트구문 날려주면 끝~! / 0보다 큰게 정상적으로 처리된거
ajaxResponse.setResponse(0, "Success"); //우리 정상처리는 걍 코드값 0으로 해줬엇자나
}
else
{
ajaxResponse.setResponse(500, "internal server error");
}
}
else
{
CookieUtil.deleteCookie(request, response, AUTH_COOKIE_NAME);
ajaxResponse.setResponse(400, "Bad Request");
}
}
else
{//문제있는 회원
CookieUtil.deleteCookie(request, response, AUTH_COOKIE_NAME);
ajaxResponse.setResponse(400, "Bad Request");
}
}
else
{
CookieUtil.deleteCookie(request, response, AUTH_COOKIE_NAME);
ajaxResponse.setResponse(404, "Not Found. 회원이없다고요");
}
}
else
{//로그인된정보가 아니겠지~?
ajaxResponse.setResponse(400, "Bad Request");
}
return ajaxResponse;
}
<update id="userDelete" parameterType="String">
UPDATE TBL_USER
SET
USER_PWD = NULL,
USER_NAME = NULL,
USER_EMAIL = NULL,
STATUS = NULL,
REG_DATE = NULL,
USER_ADDRESS = NULL,
USER_PNUM = NULL,
USER_B_DATE = NULL,
USER_NNAME = NULL,
USER_GRADE = NULL,
USER_POINT = NULL
WHERE
USER_ID = #{value}
</update>
public int userDelete(String userId);
public int userDelete(String userId)
{
int count = 0;
try
{
count = userDao.userDelete(userId);
}
catch(Exception e)
{
logger.error("[UserService] userDelete", e);
}
return count;
}
$("#btnDelete").on("click", function(){
if(confirm("정말 삭제 하시겠습니까?\n(※ 작성한 입양후기, 코멘트, 댓글 등은 삭제 됩니다.)") == true)
{
$.ajax({
type:"POST",
url:"/user/userDelete",
data:{
userId : $("#userId").val()
},
datatype:"JSON",
beforeSend:function(xhr){
xhr.setRequestHeader("AJAX", "true");
},
success:function(response){
if(response.code == 0)
{
alert("탈퇴가 완료되었습니다.");
location.href = "/index";
}
else if(response.code == 400)
{
alert("회원 정보를 찾을 수 없습니다..");
}
else if(response.code == 405)
{
alert("사용자가 아닙니다.");
location.href = "/index";
}
else
{
alert("회원 탈퇴 중 오류가 발생했습니다.");
}
},
complete:function(data)
{
icia.common.log(data);
},
error:function(xhr, status, error)
{
icia.common.error(error);
}
});
}
});
//★★회원 탈퇴
@RequestMapping(value="/user/userDelete", method=RequestMethod.POST)
@ResponseBody
public Response<Object> userDelete(HttpServletRequest request, HttpServletResponse response)
{
Response<Object> ajaxResponse = new Response<Object>();
String cookieUserId = CookieUtil.getHexValue(request, AUTH_COOKIE_NAME);
String userId = HttpUtil.get(request, "userId", "");
User user = userService.userSelect(userId);
Free free = new Free();
free.setUserId(userId);
List<Free> freeList = null;
List<Review> reviewList = null;
ReviewComment reviewComment = new ReviewComment();
reviewComment.setUserId(userId);
List<ReviewComment> rCommentList = null;
//카운트 변수
long freeCount = 0;
long reviewCount = 0;
long rCommentCount = 0;
long basketCount = 0;
if(user != null)
{
freeCount = communityService.myFreeListCount(userId);
reviewCount = communityService.myReviewListCount(userId);
rCommentCount = communityService.myRCommentListCount(userId);
basketCount = donationService.basketListCount(userId);
//로그인한 아이디(쿠키값)과 게시글 작성자가 동일한지 확인
if(StringUtil.equals(user.getUserId(), cookieUserId))
{
if(freeCount > 0)
{
freeList = communityService.myFreeList(free);
for(int i = 0; i < freeList.size(); i++)
{
communityService.freeDelete(freeList.get(i).getFbsSeq());
}
}
if(rCommentCount > 0)
{
rCommentList = communityService.myRCommentList(reviewComment);
for(int i = 0; i < rCommentList.size(); i++)
{
communityService.rCommentDelete2(rCommentList.get(i).getCrbsSeq());
}
}
if(reviewCount > 0)
{
reviewList = communityService.reviewUserSelect(userId);
for(int i = 0; i < reviewList.size(); i++)
{
if(communityService.rCommentCount(reviewList.get(i).getRbsSeq()) > 0)
{
communityService.rCommentDelete(reviewList.get(i).getRbsSeq());
}
try
{
communityService.reviewDelete(reviewList.get(i).getRbsSeq());
}
catch(Exception e)
{
logger.error("[UserController] userDelete Exception", e);
}
}
}
if(basketCount > 0)
{
donationService.basketDelete2(userId);
}
if(userService.userDelete(userId) > 0)
{
CookieUtil.deleteCookie(request, response, "/", AUTH_COOKIE_NAME);
ajaxResponse.setResponse(0, "Success");
}
else
{
ajaxResponse.setResponse(500, "Internal Server Error");
}
}
else
{
ajaxResponse.setResponse(405, "User Error");
}
}
else
{
CookieUtil.deleteCookie(request, response, "/", AUTH_COOKIE_NAME);
ajaxResponse.setResponse(400, "Bad Request");
}
return ajaxResponse;
}
@RequestMapping(value="/user/userFind")
public String userFind(HttpServletRequest request, HttpServletResponse response)
{
return "/user/userFind";
}
<select id="userIdSearch" parameterType="com.icia.web.model.User" resultType="String">
SELECT
USER_ID
FROM
TBL_USER
WHERE
USER_NAME = #{userName}
AND
USER_PNUM = #{userPNum}
</select>
public String userIdSearch(User user);
public String userIdSearch(User user)
{
String userId = "";
try
{
userId = userDao.userIdSearch(user);
}
catch(Exception e)
{
logger.error("[UserService] userIdSearch", e);
}
return userId;
}
$.ajax({
type:"POST",
url:"/user/userIdSearch",
data:{
userName:$("#userName").val(),
userPNum:$("#userPNum").val()
},
datatype:"JSON",
beforeSend:function(xhr){
xhr.setRequestHeader("AJAX", "true");
},
success:function(response){
if(response.code == 0)
{
alert("아이디는 " + response.data + "입니다.");
if(confirm("비밀번호를 찾으시겠습니까?"))
{
document.getElementById("div2").style = "";
document.getElementById("div1").style = "display: none;";
}
}
else if(response.code == 400)
{
alert("입력 값이 올바르지 않습니다.");
}
else if(response.code == 404)
{
alert("아이디를 찾을 수 없습니다.");
}
else
{
alert("아이디 찾기 중 오류가 발생했습니다.");
}
},
complete:function(data)
{
icia.common.log(data);
},
error:function(xhr, status, error)
{
icia.common.error(error);
}
});
@RequestMapping(value="/user/userIdSearch")
@ResponseBody
public Response<Object> userIdSearch(HttpServletRequest request, HttpServletResponse response)
{
Response<Object> ajaxResponse = new Response<Object>();
String userName = HttpUtil.get(request, "userName", "");
String userPNum = HttpUtil.get(request, "userPNum", "");
String userId = "";
User user = new User();
if(!StringUtil.isEmpty(userName) && !StringUtil.isEmpty(userPNum))
{
user.setUserName(userName);
user.setUserPNum(userPNum);
userId = userService.userIdSearch(user);
if(!StringUtil.isEmpty(userId))
{
ajaxResponse.setResponse(0, "Success", userId);
}
else
{
ajaxResponse.setResponse(404, "Not Found");
}
}
else
{
ajaxResponse.setResponse(400, "parameter error");
}
return ajaxResponse;
}