[TIL] 240418

Geehyun(장지현)·2024년 4월 19일

TIL

목록 보기
64/70
post-thumbnail

Today

  • Spring Web MVC로 게시판 만들기 계속 진행중
    git : Study_springmvc
  • encoding filter추가하기
    => 한글의 경우 페이지 마다 따로 utf-8 인코딩을 추가해줘도 되지만 spring에 들어있는 인코딩 필터를 한번에 적용해줄 수도 있다.
    <!-- web.xml 일부 -->
    <!-- 한글 인코딩 설정 -->
      <filter>
          <filter-name>encoding</filter-name>
          <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
          <init-param>
              <param-name>encoding</param-name>
              <param-value>UTF-8</param-value>
          </init-param>
      </filter>
      <filter-mapping>
          <filter-name>encoding</filter-name>
          <servlet-name>appServlet</servlet-name>
      </filter-mapping>
  • hibernate-validator 사용해보기
  1. 체크할 인자 값 앞에 @Valid 추가 (DTO 객체 등)
  2. DTO객체에 가서 해당 필드에 맞는 조건을 어노테이션을 추가
    🌟 중요 : javax.validation.constraints으로 임포트 해야함!!!!
    @Positive : 정수 중 양수만 허용
    @PositiveOrZero : 정수 중 양수 또는 0만 허용
    @NotEmpty : null, 빈 값, 공백 문자열 허용 X
    @NotBlank : null 또는 빈 값 허용 X
    @Builder.Default : builder할 때 값이 없으면 설정된 기본값으로 넣어라
  3. 위 1번에서 넣어준 @Valid 어노테이션을 이용해서 bindingResult를 매개변수로 받아 검사 결과에 대해 작업할 수 있다.
    if(bindingResult.hasErrors()) {
               log.info("Errors");
               redirectAttributes.addFlashAttribute("dto", dto);
               redirectAttributes.addFlashAttribute("errors", bindingResult.getAllErrors());
               // 이런식으로 에러 있는지 bindingResult 체크해서 addFlashAttribute 보내면 처음 리다이렉트 한 페이지에서 한번만 조회하고 끝낼 수 있음.
               // getAllErrors는 Array 형태로 보내짐.
               return "redirect:/bbs/regist";
           }

Review

  • spring 실습 계속 진행중인데 확실히 그냥 JSP, Servlet으로만 작성했을 때보다 단순 반복성 작업이 훨씬 줄어들었다.
  • hibernate-validator 처음 써봤는데, 혼자 알아서 값체크하고 오류 내용도 상세히 던져주고 완전 최고...
  • 로그인 로직을 혼자 먼저 구현해 봤는데, MyBatis에서 sql문에 매개변수에 값이 2개 들어가면 nestedException이 발생하는 듯 하다.
    => 일단 안쓰는 값 하나는 제외시킴 (DTO나 VO객체로 던지면 될 듯)
profile
블로그 이전 했습니다. 아래 블로그 아이콘(🏠) 눌러서 놀러오세요

0개의 댓글