inblog logo
|
{CODE-RYU};
    SPIRNG

    [Spring] 기타 예외 처리하기

    류재성's avatar
    류재성
    Mar 20, 2024
    [Spring] 기타 예외 처리하기
    Contents
    1. 회원가입2. 로그인 3. 게시글 수정하기4. 없는 게시글 주소를 입력했을 때5. 게시글 삭제하기

    1. 회원가입

     
    @PostMapping("/join") public String join(UserRequest.JoinDTO requestDTO){ try{ User sessionUser = userRepository.save(requestDTO.toEntity()); session.setAttribute("sessionUser",sessionUser); }catch (NoResultException e){ throw new Exception400("동일한 아이디가 존재합니다."); } //회원가입 후 자동 로그인되게 return "redirect:/"; }
     
     
    notion image
     

    2. 로그인

     
    @PostMapping("/login") public String login(UserRequest.LoginDTO requestDTO){ try { User sessionUser = userRepository.findByUsernameAndPassword(requestDTO); session.setAttribute("sessionUser",sessionUser); } catch (Exception e) { throw new Exception401("아이디 혹은 비밀번호가 일치하지 않습니다."); } return "redirect:/"; }
     
    notion image

    3. 게시글 수정하기

     
    @PostMapping("/board/{id}/update") public String update(@PathVariable Integer id,BoardRequest.UpdateDTO requestDTO){ Board board = boardReposiroty.findById(id); User sessionUser = (User) session.getAttribute("sessionUser"); if(sessionUser.getId()!=board.getUser().getId()){ throw new Exception403("게시글을 수정할 권한이 없습니다"); }
     
    notion image
     
     

    4. 없는 게시글 주소를 입력했을 때

     
    @GetMapping("/board/{id}/update-form") public String updateForm(@PathVariable Integer id,HttpServletRequest request){ Board board = boardReposiroty.findById(id); if(board==null){ throw new Exception404("해당 게시글을 찾을 수 없습니다."); } request.setAttribute("board",board); return "board/update-form"; }
     
    notion image

    5. 게시글 삭제하기

     
    //@PostMapping("/board/{id}/delete") @RequestMapping(value = "/board/{id}/delete", method = {RequestMethod.GET, RequestMethod.POST}) public String delete(@PathVariable Integer id){ Board board = boardReposiroty.findById(id); User sessionUser = (User) session.getAttribute("sessionUser"); if(sessionUser.getId()!=board.getUser().getId()){ throw new Exception403("게시글을 삭제할 권한이 없습니다"); } boardReposiroty.deleteById(id); return "redirect:/"; }
     
    notion image
    💡
    @RequestMapping(value = "/board/{id}/delete", method = {RequestMethod.GET, RequestMethod.POST}) 은 delete 페이지 화면이 없어서 그런지 주소를 넣으면 오류 페이지가 뜨고 throw가 되지 않아서 추가했다. 저 코드를 추가하니까 페이지가 없는 화면도 throw 되서 페이지에 메세지가 던져졌다.
     
    Share article

    {CODE-RYU};

    RSS·Powered by Inblog