Spring MVC 요청, 응답 흐름
Spirng에서 Form 데이터 요청을 받는 방법
Spirng에서 Form 데이터 요청을 받는 방법은 대표적으로 3개가 존재한다.
HttpServletRequest 객체 활용
전통적인 서블릿 방식으로, 요청 객체(HttpServletRequest)를 직접 이용해 데이터를 가져오는 방법이다.
메서드의 매개변수로 HttpServletRequest를 선언하면 스프링이 자동으로 주입해 준다.
기본 자바에서는 JSP/Servlet에서 방식은 동일하지만, 스프링에서는 사용하지 않는 방법이다.
비효율적이고 타입 안전하지 않는다.
@PostMapping("login.me")
public String login(HttpServletRequest request) {
String id = request.getParameter("userId");
String password = request.getParameter("userPwd");
System.out.println(id);
System.out.println(password);
return null;
}
@RequestParam 어노테이션 활용
request.getParameter("키") 역할을 대신해 주는 스프링의 간편 문법이다.
요청 파라미터의 key와 변수명이 같으면 @RequestParam 생략도 가능하다.
기본값이 필요할 경우 defaultValue 속성 사용 가능하다.
@PostMapping("login.me")
public String login(
@RequestParam(value = "userId", defaultValue = "user01") String id,
String userPwd
) {
System.out.println(id);
System.out.println(userPwd);
return null;
}
| 항목 | 설명 |
| value | 요청 파라미터 key값 |
| required | 필수 여부 (기본값 true) |
| defaultValue | 값이 없을 때 사용할 기본값 |
객체로 받기(@ModelAttribute)
폼 데이터를 객체로 자동 매핑하는 방법이다.
HTML <input name="userId"> 와 객체의 private String userId; 필드명이 같으면 자동으로 바인딩된다.
@ModelAttribute 생략 가능하다. (기본적으로 적용됨)
필드명이 늘어나도 코드 변경이 적으며, 자동형 변환 지원한다.
@PostMapping("login.me")
public String login(@ModelAttribute Member member) {
System.out.println(member.getUserId());
System.out.println(member.getUserPwd());
return null;
}
응답 데이터 전달(Response Data) 방법
요청을 처리한 후, 데이터를 JSP(View)에 전달하는 방법은 여러 가지가 있다.
대표적으로 Model, HttpSession, ModelAndView 3가지 방법을 사용한다.
Spring에서 제공하는 Model 객체를 이용하는 방법
포워딩할 응답 뷰로 전달하고자 하는 데이터를 k-v 쌍으로 담을 수 있는 영역이며, model 객체에 addAttribute()로 저장 시 requestScope에 값을 저장하게 된다.
@PostMapping("login.me")
public String login(@ModelAttribute Member member, Model model) {
System.out.print(member);
//request.getAttribute 와 동일
model.addAttribute("memberId", member.getMemberId());
model.addAttribute("memberPwd", member.getMemberPwd());
return "index";
}
Model 객체에 담아 키와 값을 requestScope에 저장한다.
HttpSession을 이용한 값 저장 후 url 재요청
로그인 정보 등 여러 페이지에서 유지되어야 하는 데이터 저장에 사용된다.
sessionScope에 저장되며, 브라우저 종료 전까지 유지된다.
@PostMapping("login.me")
public String login(@ModelAttribute Member member, HttpSession session) {
System.out.print(member);
session.setAttribute("memberId", member.getMemberId());
session.setAttribute("memberPwd", member.getMemberPwd());
return "redirect:/";
}
ModelAndView 객체를 이용하는 방법
Model(데이터) + View(이동할 페이지)를 한 번에 관리할 수 있는 객체이며 포워드, 리다이렉트 모두 가능하다.
@PostMapping("login.me")
public String login(@ModelAttribute Member member, ModelAndView mv) {
System.out.print(member);
mv.addObject("memberId", member.getMemberId());
mv.addObject("memberPwd", member.getMemberPwd());
mv.setViewName("index"); //포워딩
mv.setViewName("redirect:/"); //url 재요청
return "redirect:/";
}
'Spring' 카테고리의 다른 글
| Spring 2일차 (0) | 2025.10.22 |
|---|---|
| Spring 1일차(4) (0) | 2025.10.21 |
| Spring 1일차(3) (0) | 2025.10.21 |
| Spring 1일차(2) (0) | 2025.10.21 |
| Spring 1일차(1) (0) | 2025.10.21 |