반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

Yeonee's Story

[Spring] 스프링에서 parameter(요청시 전달값)을 받는 방법 - 로그인 기능 본문

⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆⋆ 。゜☁︎ 。⋆ 。゜☾゜。⋆/Spring

[Spring] 스프링에서 parameter(요청시 전달값)을 받는 방법 - 로그인 기능

yeonee 여니 2023. 8. 13. 12:07
728x90
반응형
SMALL

안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)

 

yeonee 블로그 : 네이버 블로그

예쁘고 맛있게 먹고 건강하게,강인하지만 온화하게 행하라. ※맛스타운스타일상 인스타 www.instagram.com/s2._.y25n ※맛집감성일상 유튜브https://youtube.com/channel/@S2_yeonee 티스토리https://yeoneeluv.tistory.co

blog.naver.com

 

 

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는 생략 가능하다.

 

 

 

728x90
반응형
LIST