-
[ JSP ] 로그인하기, 장바구니 담기 해야 할 것PROGRAMMING/Web 2022. 6. 1. 23:09
[ 로그인하기 ]
1. 로그인폼 html 만들기
유저가 요청하면 응답으로 보내기
2. 로그인폼에 응답된 email과 pwd 받아서 getUserByEmail(email) 돌리기
돌리는 이유 : 이 사람이 db에 저장되었나 알기 위해서
3. db에 저장되어 있지 않다면(user == null), 탈퇴한 회원이라면(getDeleted = "Y"), 비밀번호가 틀렸다면(!getPassword().equals(pwd)) 경고창을 html페이지에 포함해 로그인창을 redirect시킨다.
3-1. "invalid".equals(fail)이라면 "아이디 혹은 비밀번호가 올바르지 않습니다.", "deleted".equals(fail)이라면 '탈퇴처리된 계정입니다.', "deny".equals(fail)이라면 "해당 서비스는 로그인 후 이용가능합니다." 라는 문구를 각각 띄운다.
4. 위의 모든 단계를 통과했다면 HttpSession의 속성이름을 정하고 user를 값으로 넣는다. 홈페이지를 redirect시킨다.
5. 로그아웃했다면 session을 폐기하고 home을 redirect한다.
6. 만약 로그아웃/비로그인 상태라면 상단 메뉴바에 로그인/회원가입이 뜨게 하고, 로그인 상태라면 장바구니, 로그아웃, "XXX님 반갑습니다."라는 문구가 뜨게 한다.
[ 장바구니 담기 ]
* 대부분의 기능은 로그인 후라고 가정하고 만들어진다.
1. 로그인된 유저여야 한다.
2. 만들 vo / dto
vo : cartItem(아이템 번호, 유저 번호, 책 번호, 수량, 생성일, 수정일)
dto : CartItemDto(아이템 번호, 유저 번호, 책 번호, 책이름, 책값, 책할인가, 수량)
dto 만든 이유 : vo가 여러 table에 걸쳐 있어서
3. dao 생성, 메소드 만들기
getCartItemByUserNo(int userNo)
유저번호(userNo)를 받아서 해당 유저의 장바구니에 있는 아이템 정보를 반환한다. 아이템이 몇 개일지 모르기에 List, 안에 들어갈 건 CartItemDto, 변수명은 cartItems를 사용한다. While(rs.next())을 사용해 안의 모든 아이템을 조회한다. CartItemDto item 변수를 만들고 그 안에 앞의 조회값들을 모두 넣은뒤 cartItems.add(item)으로 List에 값을 add한다. cartItems를 반환한다.
getCartItemByItemNo(int itemNo)
아이템번호(itemNo)를 받아서 유저의 장바구니에 있는 아이템 중 같은 아이템번호가 있다면 해당 아이템의 정보를 반환한다. itemNo에 해당하는 것만 반환되기에 List는 사용하지 않는다. CartItem item = null;을 정의한다. if(rs.next())를 사용해 일치하는 아이템의 정보를 item에 담아 반환한다.
deleteCartItem(int itemNo)
아이템번호(itemNo)를 받아서 유저의 장바구니에 있는 아이템 중 같은 아이템번호가 있다면 삭제한다.
4. list.jsp (유저 장바구니 목록 불러오는 기능)
if 카트가 비었다면 '장바구니가 비었습니다.' 라는 문구를 띄운다.
else { for문을 돌려서(cartItems) 체크박스, 책명, 할인가, 갯수, 총구매가격, 삭제/주문 버튼을 반환시킨다. }
5. 그런데 누군가 url을 외워서 남의 상품을 삭제하려 할 수도 있고, 세션 만료 등으로 로그아웃 된 걸 모르고 카트 상품을 삭제하려 할 수도 있다.
5-1. 특정 유저의 특정 상품 삭제 URL을 알고 다른 사람이 그 URL을 입력해 삭제하려 하는 경우 / 로그아웃된 상태에서 카트에 접근할 경우 : HttpSession에 저장된 객체를 들고와 만약 user==null이라면 로그인폼을 리다이렉트하고 url에 실패이유(?fail=deny)와 (생각해보니까 nav 빼곤 정말 다 상대경로방식을 사용한다) '다른 사용자의 장바구니 아이템을 변경할 수 없습니다.' 멘트를 로그인폼에 추가해서 보낸다.'PROGRAMMING > Web' 카테고리의 다른 글
크롬 요소 소스 보기, MIME, AJAX, 서버와 자바스크립트의 데이터 교환, JSON (0) 2022.06.08 게시판 만들기 과정도, jsp의 예외처리, 파일 업로드 다운로드 (0) 2022.06.07 [ JSP ] 로그인하기(HttpSession), 로그인 활용(cart), 절대주소와 상대주소 (0) 2022.05.31 [ JSP ] 서블릿(Servlet)의 주요 객체 (0) 2022.05.30 [ JSP ] 클라이언트의 요청방식 (0) 2022.05.26