안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)
1) 스프링에서 parameter(요청시 전달값)을 받는 방법
1. HttpServletRequest request를 이용해서 전달받기(기존방식 그대로)
해당 메소드의 매개변수로 HttpServletRequest를 작성해 놓으면 스프링 컨테이너가 해당 메소드를 호출할때
자동으로 request객체를 생성해서 매개변수로 주입해준다.
@RequestMapping(value = "login.me" , method = RequestMethod.POST)
public String loginMember(HttpServletRequest request) {
String userId = request.getParameter("userId");
String userPwd = request.getParameter("userPwd");
System.out.println("userId : "+userId );
System.out.println("userPwd : "+userPwd);
return "main";
}
RequestMapping이라는 어노테이션을 붙이면 HandlerMapping곳에 등록이 됩니다.
(HandlerMapping을 관리하는 것이 DispatchServlet입니다.)
()안에 여러개의 속성을 추가 할수 있습니다. 여기서 그냥 'method = POST' 이런 식으로 작성하면 안되고 'method = RequestMethod.POST' 형식으로 작성해야 합니다.
(여기서 'method 자체가 없으면 get이든 post이든 신경쓰지 않겠다.는 뜻입니다.)
+ DispatchServlet의 HandlerMapping 관리 및 기능은 다음 포스팅을 참고해주시기 바랍니다 :)
2. @RequestParam어노테이션을 이용하는 방법
기존의 request.getParameter("키")로 뽑는 역할을 대신 수행해주는
어노테이션 input 속성의 value로 jsp에서 작성했던 name값을 입력해주면 알아서 매개변수로 값을 담아온다.
만약 넘어온값이 비어있다면 defaultValue로 설정 가능.
@RequestMapping(value = "login.me" , method = RequestMethod.POST)
public String loginMember(
//@RequestParam(value="userId") String userId,
@RequestParam(value="userId" , defaultValue="m") String userId, //;defaultValue="m" 값이 없을 때 디폴트값, 꼭 입력하지 않아도 되는 경우 사용.
@RequestParam(value="userPwd") String userPwd
) {
System.out.println("userId : "+userId );
System.out.println("userPwd : "+userPwd);
return "main";
}
- '@RequestParam(value="userId") String userId' 으로 작성시
id를 빈칸으로 입력했을 경우, 콘솔창에 "userId : "으로 빈칸을 출력하게 됩니다.
- '@RequestParam(value="userId" , defaultValue="m") String userId' 으로 작성시
id를 빈칸으로 입력했을 경우, 콘솔창에 "userId : m"으로 defaultValue 값인 'm'을 출력하게 됩니다.
(주로, 내 정보 목록의 메일, 취미, 직업 등 꼭 기입하지 않아도 되는 곳에 사용합니다.)
3. @RequestParam어노테이션을 생략하는 방법
단, 매개변수의 변수명을 jsp에서 전달한 파라미터의 name속성값과 일치시켜줘야한다.
+ defaultValue 사용불가
@RequestMapping(value = "login.me" , method = RequestMethod.POST)
public String loginMember(
String userId,
String userPwd
) {
System.out.println("userId : "+userId );
System.out.println("userPwd : "+userPwd);
return "main";
}
4. 커멘드 객체 방식 해당 메소드의 매개변수로 요청시 전달값을 담고자하는 VO클래스타입의 변수를 셋팅하고,
요청시 전달값의 name속성값이 VO클래스의 담고자하는 필드명과 일치시켜서 작성한다.
스프링컨테이너에서 해당 객체를 "기본 생성자"로 호출해서 생성 후, 내부적으로 전달받은 key값에 해당하는
setter메서드를 찾아서 전달한값을 필드에 담아준다. 따라서 반드시 name속성값(키값)과 vo객체의 필드명이 일치해야
한다.
@RequestMapping(value = "login.me" , method = RequestMethod.POST)
public String loginMember(
@ModelAttribute Member m
//; @ModelAttribute : 생략 가능
) {
System.out.println("userId : "+m.getUserId() );
System.out.println("userPwd : "+m.getUserPwd());
return "main";
}
@ModelAttribute는 생략 가능하다.
'⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆ > Spring' 카테고리의 다른 글
[Spring] @RequestParam을 이용한 값 받아오기 (0) | 2023.08.15 |
---|---|
[Spring] Dispatcher-Servlet이란? 디스패처 서블릿의 개념과 동작 과정 (0) | 2023.08.15 |
[spring] spring scheduler 스프링 스케줄러란? (스프링 스케줄러 작업순서) (0) | 2023.08.09 |
[Spring] Model과 ModelAndView 객체로 응답페이지 url재요청 하기 (+ Model과 ModelAndView 차이점 및 개념) (0) | 2023.08.03 |
[Spring] 스프링에서 parameter(요청시 전달값)을 받는 방법(@RequestParam, @ModelAttribute) + 필드, 생성자, 수정자 주입방식 개념 (0) | 2023.08.03 |