[Spring][국비교육] Day 92

Ga02·2023년 5월 10일

국비교육

목록 보기
79/82

🔍 @RequestParam 어노테이션 사용법

컨트롤러 메소드에서 요청 파라미터를 처리하는 방식을 지정할 때 사용

  • 컨트롤러 메소드의 매개변수에 적용
  • value, name, required, defaultValue 속성을 설정값으로 적용할 수 있음
  • value 속성은 name 속성의 별칭

➰ @RequestParam(value="n") String name

  • "n"이라는 이름의 요청 파라미터의 값을 name 변수에 저장 👉🏻 String name = req.getParameter("n");과 같은 동작

➰ @RequestParam(required = true) String name

  • 변수 이름과 같은 "name"이라는 이름의 요청 파라미터의 값을 name 변수에 저장
    • required = true : 요청 파라미터 항목이 존재하지 않으면 에러 발생 👉🏻 기본값
      ➡ 기본값이므로 required 속성을 넣지 않아도 필수로 적용됨
    • required = false : 요청 파라미터 항목이 존재하지 않아도 동작 ➡ 전달 데이터는 null로 처리됨
    • @RequestParam 어노테이션을 생략하면 required=false로 적용됨

✔ true로 설정했을 때 파라미터 항목이 아예 존재하지 않을 때 에러가 발생

@RequestParam(required = true) String test
/param/required ➡ null				에러(400)
/param/required?test=""			에러 없음, ""빈 문자열 전달
/param/required?test=apple ➡ 정상	에러 없음, "apple"문자열 전달

➰ @RequestParam(defaultValue = "abc") String name

  • 요청 파라미터의 데이터가 없으면 "abc" 값을 name 변수에 저장
  • 요청파라미터의 기본데이터를 설정
  • int형 변수로 사용할 기본값도 문자열 형태로 작성해야 함 👉🏻 처음에 들어올 데이터를 대체하는 것이므로
@RequestParam(defaultValue = "0" ) int num

➰ @RequestParam HashMap<String, String> map

전달파라미터를 map의 key, value 쌍으로 추출해서 저장 👉🏻 DTO를 사용하지 않아도 됨

  • 요청파라미터의 이름에 상관없이 전달된 모든 데이터를 맵 객체에 저장
    ✔ Map을 이용한 처리헤는 @RequestParam 어노테이션 생략 불가 👉🏻 생략하면 빈 맵 객체가 생성됨

🔍 컨트롤러 메소드의 매개변수

  • 메소드 내에서 필요한 기능을 가진 객체를 매개변수로 선언해서 사용할 수 있음
  • 별도의 new 연산자 사용없이 객체를 생성해줌
  • 자주 사용되는 객체나 웹 어플리케이션 실행에 필요한 객체를 스프링이 자동으로 생성해줌
  • 전달 파라미터를 처리하는 변수 선언에 많이 사용됨
  • HttpServletRequest : 요청 정보 객체
  • HttpServletResponse : 응답 정보 객체
  • Writer : 응답 출력 스트림 객체
  • Reader : 요청 입력 스트림 객체
  • HttpSession : 세션 정보 객체
  • Model, ModelAndView, ModelMap : 모델값 정보를 다루는 객체
  • Locale : 언어권 정보 객체
  • 커맨드 객체, Command Object : 요청파라미터를 받아들이는 DTO 객체
    👉🏻 @ModelAttribute 어노테이션으로 적용됨
  • 요청 파라미터를 받아들이는 변수 : @RequestParam 어노테이션으로 적용됨

🔍 스프링 컨트롤러의 페이지 이동(화면 전환)

➰ 포워드, forward

URL을 유지하면서 화면만 전환

  • 요청정보객체, 응답정보객체가 유지됨
  • 모델값을 유지
  • 뷰네임을 문자열로 반환하면 JSP로 forward함
    "forward" : 뒤에 url 문자열을 적용하면 해당 URL 자원으로 forward함

➰ 리다이렉트, redirect

URL을 변경하면서 페이지 이동 👉🏻 새로운 요청이 발생

  • 요청정보객체, 응답정보객체를 새롭게 생성
  • MODEL값도 유지하지 않음
  • 뷰네임을 지정할 때 접두어로 "redirect:"를 써서 적용
return "redirect:/board/list";
	== resp.sendRedirect("/board/list");

🔍 스프링 마이바티스 설정

스프링과 마이바티스 연동에 필요한 라이브러리들을 Maven을 통해 적용
✔ 연동 설정(.xml 작성)도 필요

➰ 설정 순서

1. 메이븐을 통해 필요 라이브러리 설치하기

  • mybatis 마이바티스 라이브러리
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.13</version>
</dependency>
  • mybatis-spring 스프링에서 마이바티스를 사용할 수 있도록 제공되는 라이브러리
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>3.0.1</version>
</dependency>
  • spring-jdbc 스프링에서 JDBC를 사용할 수 있도록 제공되는 라이브러리
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${org.springframework-version}</version>
</dependency>
  • ojdbc6 오라클 DB에 JDBC로 접근할 수 있도록 만들어진 라이브러리
    ✔ OJDBC6는 mvnrepository 사이트에서 다운받을 수 없음 👉🏻 저장소를 추가로 설정해서 다운받을 수 있도록 해야함

  • 추가 메이븐 저장소 설정

<!-- 	** properties태그의 아래, dependencies 태그의 위에 작성한다 -->
<repositories>
	<repository>
		<id>oracle</id>
		<url>http://maven.jahia.org/maven2</url>
	</repository>
</repositories>

<!-- OJDBC 6 12.1.0.1 -->
<dependency>
	<groupId>com.oracle</groupId>
	<artifactId>ojdbc6</artifactId>
	<version>12.1.0.2</version>
</dependency>

2. root-context.xml에 마이바티스 관련 설정 추가하기
스프링 빈으로 마이바티스 관련 객체들을 등록

  • dataSource : DB 접속 정보
  • SqlSessionFactory : 마이바티스 수행 객체 환경 설정
    • configLocation 프로퍼티로 Configuration XML 파일의 위치를 등록
    • mapperLocations 프로퍼티로 Mapper XML 파일의 위치를 등록
  • MapperScannerConfigurer 클래스 : DAO 인터페이스의 위치를 설정

3. 프로그램 작성 및 개발

profile
IT꿈나무 댓츠미

0개의 댓글