프로젝트 24

영화 예매 사이트 (MoVieCinema) - 마이페이지 : 나의 예매 내역 조회 항목 ( 컬렉션과 스트림 )

컨트롤러 - 페이징 처리도 같이 해준다 ! 서비스 public Page getMyTickets(Long memberId, Pageable pageable, Model model) { Page myTicketList = ticketRepository.findAllByMemberId(memberId, pageable); int nowPage = myTicketList.getPageable().getPageNumber(); int totalPages = myTicketList.getTotalPages(); int pageGroupSize = 5; int currentPageGroup = nowPage / pageGroupSize; int startPage = currentPageGroup * pageGroup..

프로젝트 2024.04.14

영화 예매 사이트 (MoVieCinema) - 유효성 검사 코드 리팩토링

회원 가입 시 아이디, 비밀번호, 이름, 이메일, 전화번호에 대한 유효성 검사 코드를 간결하게 하고 싶다. 기존 유효성 검사 코드 $(() => { const $idInput = $("#username"); const getIdCheck = /^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z0-9]{5,10}$/; const $checkIdResult = $("#checkIdResult"); const $enrollFormSubmit = $("#enrollForm :submit"); $idInput.focus(); $idInput.on('blur keyup', function() { const id = $idInput.val(); let isValidId = false; if (event.type ..

프로젝트 2024.04.13

영화 예매 사이트 (MoVieCinema) - 마이페이지 : 나의 리뷰 조회 항목

나의 리뷰 조회는 로그인한 사용자의 아이디를 찾아 리뷰의 작성자와 동일한 리뷰들을 모두 조회해 오도록 했다. 컨트롤러 서비스에 파라미터로 로그인 유저의 아이디와, 페이징 처리를 위한, pageable, model을 넘겨주었다. 서비스 리파지터리 ⇒ 리뷰 테이블의 reviewWriter와 username이 같은 리뷰들을 조회한다. myReviews.jsp 나의 영화 후기 목록 ${myReview.reviewId} ${myReview.reviewWriter} ★ ★ ${myReview.reviewContent} ${fn:substringBefore(myReview.createReviewDate.toString(), 'T')} 이전 ${page + 1} 다음 마이페이지에서 리뷰 보기를 누르면 내가 작성한 리뷰..

프로젝트 2024.04.13

영화 예매 사이트 (MoVieCinema) - 마이페이지 화면 AJAX로 띄우기

기존 마이페이지는 페이지에 들어가자마자 내 정보가 바로 뜨도록 만들었는데, 마이페이지를 들어가면 여러 항목들을 두고 선택해서 나의 정보를 볼 수 있도록 구조를 바꾸기로 했다. 마이페이지 우측 화면의 항목들을 누르면 페이지가 새로 고침 되는 것이 아니라 AJAX로 검정 부분에 해당 화면을 띄워야 한다. 이렇게 개인정보 탭을 누르면 내 정보 수정 / 비밀번호 재설정 등의 하위 탭이 나오도록 했고, 이 탭을 누르면 해당 기능을 구현해 놓은 페이지가 나오도록 기존 페이지를 연결해주어야 한다. 먼저, 개인정보 탭을 누르면 나의 정보들이 나와야 한다. 여기에 showSubMenu( ) 메서드는 개인정보가 상위 탭이므로 누르면 하위 탭들이 열리도록 해 놓은 이벤트이다. 개인정보가 있는 li 태그에 id를 이용해서 페..

프로젝트 2024.04.13

영화 예매 사이트 (MoVieCinema) - 리뷰에 별점 항목 추가

리뷰에 별점도 같이 작성할 수 있도록 해야 한다. 기존 리뷰엔티티에 별점 컬럼을 생성한다. review.jsp에서 별점 작성 부분을 추가해준다. css로 라디오 버튼을 없애고 label 태그에 들어있는 별에 그림자 효과를 줘서 별모양으로 선택할 수 있도록 한다. #starForm fieldset { display: inline-block; direction: rtl; border: 0; } #starForm fieldset legend { text-align: right; } #starForm input[type=radio] { display: none; } #starForm label { font-size: 1.2em; color: transparent; text-shadow: 0 0 0 #f0f0f0..

프로젝트 2024.04.13

영화 예매 사이트 (MoVieCinema) - 아이디 찾기 및 비밀번호 재설정

로그인 실패시 사용자에게 잘못된 로그인 정보임을 알려주고 다시 로그인하도록 한다. MemberController 수정 @PostMapping("/member/login") public String login(Member member, HttpSession session, Model model) { Optional optionalLoginUser = memberService.selectMemberByUsername(member); if (optionalLoginUser.isPresent()) { Member loginUser = optionalLoginUser.get(); if (pEncoder.matches(member.getPassword(), loginUser.getPassword())) { sess..

프로젝트 2024.04.13

영화 예매 사이트 (MoVieCinema) - 마이페이지 정보 수정

마이페이지 화면 구성 마이페이지 ID NAME EMAIL PHONE ADDRESS 내정보 수정하기 마이페이지 화면 띄우기 @GetMapping("/member/myPage") public String showMyPage(HttpSession session) { Member loginUser = (Member)session.getAttribute("loginUser"); return "member/myPage"; } 컨트롤러에서 세션에 저장한 loginUser로 마이페이지 값을 불러온다. 내 정보 수정하기 버튼을 누르면 수정 폼으로 이동한다. 수정 폼에서도 동일하게 값을 가져오고 수정할 수 있도록 아이디를 제외하고 readonly를 지워준다. 여기서 문제는 이메일을 저장할 때 email 컬럼에 emailI..

프로젝트 2024.04.13

영화 예매 사이트 (MoVieCinema) - 회원 가입 유효성 검사

유효성 검사를 하기 위해 정규표현식을 사용한다. 유효성 검사는 사용자가 입력한 데이터가 특정 형식에 맞는지 검사하는 과정을 말한다. 정규표현식은 문자열을 처리할 때 특정 패턴을 정의하여 검색, 대체, 유효성 검사 등을 수행하는 강력한 도구이다. 이를 통해 데이터가 올바른 형식인지 검사할 수 있으며, 이는 프로그래밍에서 매우 유용하게 사용된다. 1. 아이디 유효성 검사 ID

프로젝트 2024.04.13

영화 예매 사이트 (MoVieCinema) - 영화 검색

기존 영화 전체 목록을 조회하는 부분에 페이징 처리만 해놓은 부분에 searchKeyword가 있을 때 검색 결과를 조회하는 코드를 넣어준다. 키워드가 없을 때에는 전체 영화 목록을 조회하고 키워드가 있으면 해당 키워드가 있는 영화 목록을 조회한다. 영화 목록 페이지에서 사용자가 검색어를 입력하고 검색 아이콘을 누르면 위의 클릭 이벤트가 실행된다. 사용자가 입력한 searchKeyWord를 get 방식으로 seachForm 매핑으로 넘겨주면, 컨트롤러가 받아서 해당하는 keyWord의 값을 찾아서 다시 jsp로 보내준다. 전체 목록을 조회해오는 것처럼 키워드가 맞는 결과를 조회하고, 검색 결과가 없는 경우 검색 결과가 없음을 알려준다. 전체 목록 조회와 검색 후 결과 반환 목록 조회의 주소가 다르기 때문..

프로젝트 2024.04.13

영화 예매 사이트 (MoVieCinema) - 영화 리뷰 수정 (AJAX)

AJAX로 영화 리뷰 수정 기능을 구현한다. ReviewController @PostMapping("/updateReview") @ResponseBody public String updateReview(Review review) { reviewService.updateReview(review); return "success"; } ReviewService public Review updateReview(Review review) { return reveiwRepository.save(review); } reviews.jsp 위의 수정 버튼을 누르면 reviewId를 매개변수로 editReview 이벤트가 실행된다. 사용자에게 해당 번호의 리뷰를 수정하시겠습니까? 알림창을 띄우고 확인을 누르면, 리뷰id에..

프로젝트 2024.04.13

영화 예매 사이트 (MoVieCinema) - 영화 리뷰 목록에 작성자 표시

회원 가입 후 영화 리뷰 작성 시 작성자가 나오도록 수정해준다. 현재는 로그인 기능을 구현하지 않아 작성자 란에 null이 나오고, 로그인을 하지 않은 사용자들도 리뷰를 남길 수 있도록 구현이 되어있다. 로그인 기능을 구현하였으니 이제 로그인한 회원이 댓글을 작성하면 작성자가 리뷰 목록에 나오도록하고, 로그인 하지 않은 회원이 리뷰를 작성하려하면 로그인 창으로 이동하도록 하였다. 또, 리뷰 내용을 작성하지 않고 작성 버튼을 누를경우 내용을 작성해달라는 문구를 띄우도록 했다. ReviewController @PostMapping("/reviewInsert") @ResponseBody public String insertReview(Review review, HttpSession session) { if(s..

프로젝트 2024.04.13

영화 예매 사이트 (MoVieCinema) - 회원 가입 시 이메일 저장

회원 가입시 발생한 문제점 : DB에 email 컬럼에 이메일 아이디와 직접입력 또는 사용자가 선택한 이메일 주소를 묶어서 같이 저장해야 하는데, 자꾸 이메일 아이디만 저장된다. MemberEntity @Entity @Data @SequenceGenerator(name = "member_SEQ", sequenceName = "member_SEQ", allocationSize = 1) @EntityListeners(AuditingEntityListener.class) public class Member { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "member_SEQ") private Long memberId; private ..

프로젝트 2024.04.13

영화 예매 사이트 (MoVieCinema) - 댓글 조회 및 페이징 (AJAX)

ReviewController @GetMapping("/reviewList") @ResponseBody public ResponseEntity getReviewsByMovieId (@RequestParam("movieNo") Long movieId, @PageableDefault(page=0, size=4, sort="reviewId", direction= Sort.Direction.DESC) Pageable pageable, Model model) { Page reviewList = reviewService.selectReviewListByMovieNo(movieId, pageable); int nowPage = reviewList.getPageable().getPageNumber(); int page..

프로젝트 2024.04.13

가전제품 대여 웹사이트 (세숫대여) - 로그인한 작성자로 기록

FreeBoardMapper.java @Select("select memberId " + "from Member " + "where memberNo = " + "(select memberNo " + "from FreeBoard " + "where freeBoardNo = #{ freeBoardNo })") String getMemberId(@Param("freeBoardNo") int freeBoardNo); // memberNo로 memberId 찾아오기 FreeBoardService.java String getMemberId(int freeBoardNo); FreeBoardServiceImpl.java @Override public String getMemberId(int freeBoardNo) { ..

프로젝트 2023.10.05