- 여러 타입의 정보를 파라미터로 받아 콘솔에 출력해보기

Controller
@Controller
public class MainController {
@GetMapping("/monday5")
public String monday5(){
return "monday5";
}
monday5.jsp를 화면에 보여주기 위해
return moday5를하는 GetMapping 메소드
@PostMapping("/monday5-param")
public String monday5Param(@RequestParam("name") String name,
@RequestParam("gender") String gender ,
@RequestParam("city") String city ,
@RequestParam("lang") String[] lang){
System.out.println("name = " + name + ", gender = " + gender +", city = "
+ city + ", lang = " + Arrays.toString(lang));
return "index";
}
처음 배운 방법대로 @RequestParam을 사용하여 하나씩 다 받는 방법도 있다
하지만 지금 보기에도 가독성이 그렇게 좋지는 않다
@PostMapping("/monday5-param")
public String monday5Param(@ModelAttribute MenuDTO menuDTO){
@ModelAttribute를 사용하여 객체에 받아온 정보를 담는 방법이 있다
받아야하는 정보가 많다면 오히려 DTO를 하나 만들어서 사용하는게 더 편하다
System.out.println("menuDTO = " + menuDTO);
return "index";
}
}
여기서 살펴볼것은 @ModelAttribute와 checkbox의 정보를 받아온 Stripg [] 이다
checkbox는 사용자가 선택을 여러가지 할 수 있기 때문에 배열로 받아주는게 좋다
- @Service - 사용하는 이유
알아보기 전에 먼저 일반적인 웹 서버의 구조와
스프링 프레임워크를 사용한 웹서버의 구조를 알아보겠습니다

사진이 2017년 자료이기 때문에 일반적인 구조는 맞지 않을수도 있습니다
사진을 참고해보면 3명의 유저가 동시에 서버에 접속을하여 자원을 사용한다고
가정하겠습니다 일반적인 구조에서는 각유저당 객체들이 생성됩니다
하지만 스프링을 사용한 웹의 구조에서는 자주사용되는 객체의 경우 빈에 등록하여
싱글톤 패턴으로 사용합니다 각 유저당 객체를 관리하는 것보다 객체를 하나로 두고
그걸 공유하는 방법이 더 효율적이기 때문입니다
스프링에서는 이렇게 관리하기 위해 빈에 등록할 수 있는 어노테이션이 여러가지 존재합니다
- 의존성 주입 (DI / Dependency injection)

위의 설명처럼 스프링에서는 이렇게 Bean으로 등록된 클래스를 다른 클래스에서
참조할 때 DI(Dependency injection / 의존성 주입)을통해 쉽게 주입할 수 있습니다
현재는 생성자 주입을 주로 사용하지만 사용 문법만 간단하게 알아보고
오늘은 필드 주입을 먼저 알아봤습니다
- 생성자 주입 - 문법


생성자 주입은 문법만 알아두겠습니다
- 필드 주입 - 문법

필드 주입과 생성자 주입의 가장 큰 차이는
필드 주입은 스프링에서만 사용이 가능하고 생성자 주입은 어디서든 사용이 가능합니다
- @Service - 어노테이션 정리
1. class를 Bean에 등록해 Spring에서 관리하게 만들어준다
2. 싱글톤으로 관리된다 (하지만 일반적인 싱글톤과는 다르다)
3. Bean에 등록되기 때문에 다른 클래스에서 참조할 때
의존성 주입 ( DI )으로 쉽게 관리 할 수 있다
4. 해당 클래스가 담당하는 역활을 쉽게 파악가능하다 가독성 향상
- @Service / Autowired ( 필드 주입 ) 사용해보기

해당 정보를 입력받은 파라미터를 @Service 어노테이션을 적용한
MemberSerivce의 메소드를 사용해 출력하기
Controller
@Controller
public class MainController {
@Autowired
private MemberService memberService;
필드 주입 @Autowired를 사용하고
memberService를 사용하여 MemberService의 필드에
값을 넣어주거나 메소드를 가져와 사용 가능하다
@GetMapping("/monday6")
public String monday6(){
return "monday6";
}
사용자가 index화면에서 monday6로 바로가기를 클릭하면
monday6.jsp를 보여줄 수 있게하는 GetMapping 메소드이다
@PostMapping("/monday6-param")
public String monday6Param(@ModelAttribute MemberSaveDTO memberSaveDTO){
memberService.method2(memberSaveDTO);
return "index";
}
monday6.jsp에서 입력받은 파라미터의 정보를 @ModelAttribute를 사용하여
객체의 필드에 정보를 바로 넣어주었다
(객체의 필드 이름과 파라미터로 받는 이름이 같아야함)
이후 필드 주입을 사용하여 memberService.method2의 매개변수로 넘겨줌
}
MemberService
import lombok.Data;
import org.springframework.stereotype.Service;
@Data
@Service // 싱글톤처럼 스프링에서 관리해줌
public class MemberService {
public void method2(MemberSaveDTO memberSaveDTO){
System.out.println("memberSaveDTO = " + memberSaveDTO);
매개변수로 받은 객체의 정보를 MemberService에서 출력한 모습이다
}
}
'나의 수업일지' 카테고리의 다른 글
- 여러 타입의 정보를 파라미터로 받아 콘솔에 출력해보기

Controller
@Controller
public class MainController {
@GetMapping("/monday5")
public String monday5(){
return "monday5";
}
monday5.jsp를 화면에 보여주기 위해
return moday5를하는 GetMapping 메소드
@PostMapping("/monday5-param")
public String monday5Param(@RequestParam("name") String name,
@RequestParam("gender") String gender ,
@RequestParam("city") String city ,
@RequestParam("lang") String[] lang){
System.out.println("name = " + name + ", gender = " + gender +", city = "
+ city + ", lang = " + Arrays.toString(lang));
return "index";
}
처음 배운 방법대로 @RequestParam을 사용하여 하나씩 다 받는 방법도 있다
하지만 지금 보기에도 가독성이 그렇게 좋지는 않다
@PostMapping("/monday5-param")
public String monday5Param(@ModelAttribute MenuDTO menuDTO){
@ModelAttribute를 사용하여 객체에 받아온 정보를 담는 방법이 있다
받아야하는 정보가 많다면 오히려 DTO를 하나 만들어서 사용하는게 더 편하다
System.out.println("menuDTO = " + menuDTO);
return "index";
}
}
여기서 살펴볼것은 @ModelAttribute와 checkbox의 정보를 받아온 Stripg [] 이다
checkbox는 사용자가 선택을 여러가지 할 수 있기 때문에 배열로 받아주는게 좋다
- @Service - 사용하는 이유
알아보기 전에 먼저 일반적인 웹 서버의 구조와
스프링 프레임워크를 사용한 웹서버의 구조를 알아보겠습니다

사진이 2017년 자료이기 때문에 일반적인 구조는 맞지 않을수도 있습니다
사진을 참고해보면 3명의 유저가 동시에 서버에 접속을하여 자원을 사용한다고
가정하겠습니다 일반적인 구조에서는 각유저당 객체들이 생성됩니다
하지만 스프링을 사용한 웹의 구조에서는 자주사용되는 객체의 경우 빈에 등록하여
싱글톤 패턴으로 사용합니다 각 유저당 객체를 관리하는 것보다 객체를 하나로 두고
그걸 공유하는 방법이 더 효율적이기 때문입니다
스프링에서는 이렇게 관리하기 위해 빈에 등록할 수 있는 어노테이션이 여러가지 존재합니다
- 의존성 주입 (DI / Dependency injection)

위의 설명처럼 스프링에서는 이렇게 Bean으로 등록된 클래스를 다른 클래스에서
참조할 때 DI(Dependency injection / 의존성 주입)을통해 쉽게 주입할 수 있습니다
현재는 생성자 주입을 주로 사용하지만 사용 문법만 간단하게 알아보고
오늘은 필드 주입을 먼저 알아봤습니다
- 생성자 주입 - 문법


생성자 주입은 문법만 알아두겠습니다
- 필드 주입 - 문법

필드 주입과 생성자 주입의 가장 큰 차이는
필드 주입은 스프링에서만 사용이 가능하고 생성자 주입은 어디서든 사용이 가능합니다
- @Service - 어노테이션 정리
1. class를 Bean에 등록해 Spring에서 관리하게 만들어준다
2. 싱글톤으로 관리된다 (하지만 일반적인 싱글톤과는 다르다)
3. Bean에 등록되기 때문에 다른 클래스에서 참조할 때
의존성 주입 ( DI )으로 쉽게 관리 할 수 있다
4. 해당 클래스가 담당하는 역활을 쉽게 파악가능하다 가독성 향상
- @Service / Autowired ( 필드 주입 ) 사용해보기

해당 정보를 입력받은 파라미터를 @Service 어노테이션을 적용한
MemberSerivce의 메소드를 사용해 출력하기
Controller
@Controller
public class MainController {
@Autowired
private MemberService memberService;
필드 주입 @Autowired를 사용하고
memberService를 사용하여 MemberService의 필드에
값을 넣어주거나 메소드를 가져와 사용 가능하다
@GetMapping("/monday6")
public String monday6(){
return "monday6";
}
사용자가 index화면에서 monday6로 바로가기를 클릭하면
monday6.jsp를 보여줄 수 있게하는 GetMapping 메소드이다
@PostMapping("/monday6-param")
public String monday6Param(@ModelAttribute MemberSaveDTO memberSaveDTO){
memberService.method2(memberSaveDTO);
return "index";
}
monday6.jsp에서 입력받은 파라미터의 정보를 @ModelAttribute를 사용하여
객체의 필드에 정보를 바로 넣어주었다
(객체의 필드 이름과 파라미터로 받는 이름이 같아야함)
이후 필드 주입을 사용하여 memberService.method2의 매개변수로 넘겨줌
}
MemberService
import lombok.Data;
import org.springframework.stereotype.Service;
@Data
@Service // 싱글톤처럼 스프링에서 관리해줌
public class MemberService {
public void method2(MemberSaveDTO memberSaveDTO){
System.out.println("memberSaveDTO = " + memberSaveDTO);
매개변수로 받은 객체의 정보를 MemberService에서 출력한 모습이다
}
}