[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개의 댓글

관련 채용 정보