[Spring] 기타 예외 처리하기

류재성's avatar
Mar 20, 2024
[Spring] 기타 예외 처리하기

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};