공부/Spring 복습

Controller의 여러가지 기능들

ChoiDooSic 2021. 8. 30. 15:25

스프링은 설정만 제대로 해준다면 기능구현은 그렇게 어렵지 않기때문에
처음 설정을 잘 해주도록 하자.

# 다시 기억하기
1. 자바파일 밑에 컨트롤러,dao,서비스 객체
2. webapp의 resources/html파일에 웹 컴포넌트 파일
3. spring밑에는 spring설정파일
4. Views 밑에는 JSP 컴포넌트 파일

@RequestMapping
RequestMapping 메핑

HTML페이지에서 여러 정보들을 받고 버튼을 누르는 순간
action에 있는 url을 찾아서 가는데 method="post" 방식으로 서버에 날아간다
HandlerMapping 빈이 알맞는 Controller을 찾고 HandlerAdapter가 알맞는 메서드를 찾아서 실행시켜준다.


#value ,method

<form action="/lec17/memJoin" method="post"> → 보내는곳
@RequestMapping(value="/memJoin", method=RequestMethod.POST) → 받는곳 


<form action="/lec17/memJoin" method="post"> → 보내는곳
@RequestMapping(value="/memJoin", method=RequestMethod.POST) → 받는곳 

RequestMethod 클래스를 이용하여 클래스에 포스트방식으로 전달되었는지 겟 방식으로 전달되
었는지 확인한다.
(보안성이 중요한것은 post방식으로 전달을 하고 post방식으로 전달받는다)
get으로 보냈을때에는 get방식으로 받아야하는데 get일때에는
method="get" 부분을 생략해도 된다.
다음에 더 간단하게 속성이 한 개 일때는 value도 빼고 속성값만 전달해주어도된다
@RequestMapping("/memJoin")

정리 : get방식일때에는 생략해도되나 가독성이 떨어지므로
POST와 GET모두 명시를 해주는게 좋다.

# RequestMapping 공통된 부분 적기
<form action="/lec17/memJoin" method="post"> 에서
<form action="/lec17/member/memJoin" method="post"> 
이렇게 똑같은 기능별로 구분하기위해서 member을 경로에 추가해줬더니
클래스가 여러개가 될수록 중복되는 상황이 벌어진다
이럴때에는 클래스위에 @RequestMapping("/member")을 만들어 공통된 부분을 적어준다.
이렇게 되면 value값이 들어갈때에 공통된값 + value값이 전해진다.

# 어노테이션을 이용하여 사용자가 입력한 정보를 받아내는 방법

# 어노테이션을 이용하여 사용자가 입력한 정보를 받아내는 방법
@RequestParam()을 이용하여 정보를 받아내는 방법도 있다.
(@RequestParam("요청되는 name값") 받는 데이터타입)

# 잘 사용되지는 않지만 알아두어야 할 방법
@RequestParam(value="memId", required=false, defaultValue="1234") String memId{
(required=false 리콰이어드는 이 값이 꼭 있어야하는 값이냐 없어야 하는 값이냐를 명시하는것이다
true면 반드시 값이 넘어와야하고 false면 값이 없어도 지나친다)
(defaultValue="1234" 값이 넘어오지 않았을때에 기본값으로 사용하라는 속성이다)

컨트롤러 커맨드 객체 사용전
컨트롤러 커맨드 객체 사용후

 

뷰 커맨드 객체 사용전
뷰 커맨드 객체 사용후

# 커맨드 객체 가장 실무에서 많이 쓰이는 방법!
public String memJoin(Member member) {
이걸 사용하면 장황한 구문들이 필요없이 파라미터로 객체 하나만 받으면 끝난다.
대신 개터와 셋터가 반드시 필요하다.

요즘은 커맨드 객체를 이용하는것이 가장 대중적으로 쓰인다(개발자의 편리성을 위해)

'공부 > Spring 복습' 카테고리의 다른 글

세션, 쿠키  (0) 2021.08.31
Controller 객체 구현 2.  (0) 2021.08.31
Service & Dao 객체 구현  (0) 2021.08.30
스프링 MVC웹 서비스 2  (0) 2021.08.30
스프링 MVC웹 서비스  (0) 2021.08.30