[2021-03-17 수] TIL

노을·2021년 3월 17일
0

TIL

목록 보기
59/81

문자열의 빈 값 혹은 Null을 다루는 방법

https://thisisnew-storage.tistory.com/3

  • equals() 는 여러 로직이 있어 기능적으로 낭비일 수 있다.
  • str == null || str.trim().length() == 0;
  • return str == null || str.trim().isEmpty();

Redirect vs Forward vs 그냥 리턴

    @GetMapping("/redirectTest")
    public String redirectTest() {
        logger.debug("GET /redirectTest");
        return "redirect:/users";
    }

    @GetMapping("/forwardTest")
    public String forwardTest() {
        logger.debug("GET /forwardTest");
        return "forward:/users";
    }
    
    @GetMapping("/users")
    private String getMemberList(Model model) {
        logger.debug("users", userRepository.findAll());
        return "user/list";
    }

GET /redirectTest

  • HTTP 302 응답 후 이동, 클라이언트가 GET /user를 새로 요청한다.

  • /users로 url 변경

  • redirectTest(302), users(200) 로그 2개

GET /forwardTest

  • 서버에서 URL에 해당하는 컨트롤러 메소드를 실행

  • url 유지

  • forwardTest(200) 로그 1개

GET /users

  • user/list.html을 이용해서 렌더링을 하고 클라이언트에게 응답

  • url 유지

  • users(200) 로그 1개

그럼 forward은 url을 유지하고 서버에서 렌더링된 html을 받는건가?..브라우저 디버거로는 차이점을 잘 모르겠다.😂

logger.debug를 통해 로그를 본 결과

forward일 경우 컨트롤러 메소드를 두번 호출 하는것 같다.
내부적으로 호출이 한 번더 이뤄지는 것 같다.

GET /users 의 경우는 곧바로 컨트롤러 메서드 한개만 호출 하는 것 같다.

그래서 forward는 대체 언제 쓰는거지??..URL을 고정하고 싶을때??😅 용도가 궁금하다.


3-tier 아키텍처


@ExceptionHandler와 @ControllerAdvice를 미션3에서 적용을 해보았다.

  • 예외에 따른 페이지 전환을 구상했는데, 생각했던 것처럼 작동해서 기쁘다.
    • 로그인실패시 로그인실패 알림 등..

QnA 고쳐야할 것.

  1. QuestionController에서
    @GetMapping("/questions/{id}") // 메인화면에서 질문리스트 중 하나를 클릭할 경우

유효하지 않는 게시글에 접속할 경우 null 값이 발생해서 500에러가 발생한다.

이부분 케어를 해야함.

  1. 개인정보를 수정해도 일부 닉네임 변경안됨
    (상단이나 댓글)
profile
카르페디엠

0개의 댓글