Spring - 관심사 분리

김도형·2022년 10월 23일
0
post-thumbnail

관심사

  • 입력
  • 처리
  • 출력

분리

  • 관심사(입력, 처리, 출력)
  • Common 과 Uncommon(변하는 것과 변하지 않는 것)
  • 중복(공통) 코드

입력 분리(@RequestParam, @ModelAttribute)

중복으로 사용하는 메서드(request.getParameter)를 메서드의 매개변수에 @RequestParam, @ModelAttribute 사용해서 관심사를 하나로 묶어서 설계
입력 분리전

입력 분리후

이미지 출처 : 출처 : [스프링의 정석 - 기초편] 남궁성과 끝까지 간다. 패스트 캠퍼스

@RequestParam, @ModelAttribute

@RequestParam

  • 매개변수의 기본형 또는 String 타입에 사용

  • 요청 파라미터를 연결할 매개변수에 붙이는 애너테이션

  • jsp에서 매개변수의 값을 바로 호출 가능

    • 예시 : ${param.매개변수 이름}
  • 속성값 중 required=false 이면 생략 가능

  • 속성값 중 required=true 이면 매개변수 값이 있어야함.

    정상 출력 및 에러 발생 경우

    @RequestParam(name =”year”, required=true) String year]
    http://localhost/ch2/requestParam3 → 매개변수 값이 없어 400 에러 발생
    http://localhost/ch2/requestParam3?year → 정상 호출 year=""

@ModelAttribute

  • 매개변수의 참조형 타입에 사용
  • 적용 대상을 Model의 속성으로 자동 추가해주는 애너테이션
  • 반환 타입 또는 Controller 메서드의 매개변수에 적용 가능
  • ModelAttribute 을 쓸 경우, 매개변수의 호출 또는 저장도 필요 없음
  • 생략 가능
  • Map 형식으로, key의 이름이 설정되어 있지 않으면 참조변수 타입 이름을 첫글자만 소문자로 변경해서 저장

출력(view) 분리 - 변하는 것과 변하지 않는 것 분리

  • 변하는 것: 처리(Controller)
  • 변하지 않는 것 : 사용자 화면(View)
    • ex : jsp

      jsp resource 파일 연결 설정(InternalResourceViewResolver)

      servlet-conttext.xml

      <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
      	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      		<beans:property name="prefix" value="/WEB-INF/views/" />
      		<beans:property name="suffix" value=".jsp" />
      		<beans:property name="order" value="2" />
      	</beans:bean>
profile
3년간 웹/앱, 자동제어 QA 🔜 개발자로 전향하여 현재 교육 회사에서 백엔드 개발자로 근무 중입니다.(LinkedIn : https://www.linkedin.com/in/dohyoung-kim-5ab09214b)

0개의 댓글