| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- @
- AOP
- 비즈니스레이어
- .xml
- 의존주입
- jointpoint
- application.properties
- @RequestParam
- MVC
- gradle
- spring
- @ResponseBody
- PointCut
- @RequestMapping
- Java
- 서비스레이어
- springjdbc
- 생성자주입
- frontController
- 스프링
- Model
- 어노테이션
- 바인딩변수
- SpringBoot
- springmvc
- 유효성검사
- @Valid
- produces
- c:if
- after-throwing
- Today
- Total
메모장
Spring 제공 MVC로 바꾸기 (@ 어노테이션 방식) 본문
[Spring MVC로 변경하기] @ 어노테이션 으로
@Component
1) @Repository M, DAO
2) @Service C, Service 레이어에서 활용됨
3) @Controller C, implements Controller를 대신함
import org.springframework.stereotype.Controller;
이제 스프링 기본 제공 프레임워크로 바꿉니다.
@Controller를 쓰고있어서
메서드 강제성이 없음
== 메서드 시그니쳐가 고정되어있지않음
@Controller 때문에 implements도 사라지고 강제성이 없어져서 메서드 이름을 바꿔도 됨
implements 안해도 됨 !
그러면 오버라이드가 아니네 ?
throws 버려 response 안쓰네 버려

@RequestMapping (value="/main.do")
나 언제 불러 ? main.do 일때

메서드 이름도 알기쉽게 수정가능하다. 인자로는 command 객체를 사용할 수 있다.
★★★★★★★★★★★★★★★
Command 객체
: 컨테이너는 객체를 생성 및 관리
해당 객체가 언제, 어떤 메서드를 호출해야하는지
ex) DS가 초기화될때, init()
ex) DS가 .do요청을 받았을때, doGet()(or doPost())
객체를 내가 new 하는게 아니라 컨테이너가 해주는거 IoC
: 요청을 받았을때, new VO()는 당연히 하는거고(객체생성이니까)
setter()까지 해줄수는없을까?
그걸 구현해놓은 객체를 Command 객체 라고 한다.
== new는 당연히 수행하고, request로부터 값을 추출해서 setter 처리까지 전부 완료해주는 객체
웹으로 코딩을 하면 Command 객체는 나올 수 밖에 없다 . setter까지 하려면 이름이 같아야 한다.
★★★★★★★★★★★★★★★
커맨드 객체가 new는 당연히 되고 setter 까지 해줌
InsertBoardController 에 insertBoard Page 와 insertBoard 로 합칠 수 있다.
insertBoardPage 메서드 , insertBoard 메서드가
얘가 더이상 메서드 강제가 되지 않기 때문에

그리고 스프링 어노테이션 자체 ViewResolver 기능이 있다.
mav를 안써줘도 된다. 아웃풋을 String 을 써주고 return 에 mav 가 사라진다.
메서드 속성을 사용하여 get, post 인지 에 따라 에러처리및 보안 이유로 종종 사용한다.
메서드 속성을 추가로 활용할 수 있다.
세션으로 넘어와야 되면 어떻게 해야 될까? 하드코딩해도 되고 인풋에서 히든으로 넘겨줘도 됨
로그인은 세션을 다뤄야 하는 부분 때문에 http session 이 붙는다.
자바x가 붙으면 조금 무거워 지지만 서블릿 보단 가볍다
세션 같은 경우도 임시 창고에 저장하는 방식이라 세션은 뷰에서도 다른데서도 꺼내다 쓸수 있으므로
세션있을때도 String 으로 바꿀 수 있다 mav 안써도 됨 EX) 로그인 기능
★ 정리
@Controller는 new 당연하고 implements 컨트롤까지 해줌 !
이 덕분에 Override 강제성이 사라지고 Command 객체도 쓰고
메서드 명을 바꿀수 있게 되니 응집도도 높일수 있다 !!
mav( ModelAndView ) 로만 output을 낼 수 있던게 String 으로 가볍게 될 수 있다.
@RequestMapping 이 속성을 여러개 가질수 있다
뭐에대해 자기를 부를수 있는지 메서드를 가질수 있다.
method=RequestMethod.GET -> GET 으로 부른 것만 실행 하고
method=RequestMethod.POST -> POST는 POST로 부른것만
EX) 이제 GET으로 보내면 페이지 보여줘 가 되고 ( 글 작성 페이지로 이동해줘 ~ 하고 클래스 만들던것을 생략 )
POST로 보내면 글작성한걸 보여주는 거고
★ 사용자는 url 입력을 아무리 해도 GET 방식 이라서
어노테이션을 쓰면 WEB-INF 에 못 숨기는 대신 GET과 POST로 나눠서 접근을 막을 수 있다.
ModelAndView 객체는
데이터를 가지고 jsp 이동할 때는 mav
내가 만약 데이터 를 DB 안 거쳐도 되면 String으로 가볍게 만들수 있음
mav 는 ModelAndView 라서 Model 의 기능도 있고 View에 대한 기능도 있다.
보낼땐 addObject 라는 mav 안에 기능이 있어서 최대한 기능을 맞춰주고,
받을땐 request 로 받는다.

내가 가져가야할 데이터가 없다면 String으로 가볍게 만들수 있는 모습

세션 같은 경우도 임시 창고에 저장하는 방식이라 세션은 view에서도 다른데서도 꺼내다 쓸수 있으므로
세션있을때도 String 으로 바꿀 수 있다 mav 안써도 된다.
'Spring > 개념정리' 카테고리의 다른 글
| @ModelAttribute 어노테이션 (0) | 2024.06.21 |
|---|---|
| Spring 에 대한 간단 정리 (0) | 2024.06.21 |
| Spring 제공 MVC로 바꾸기 (.xml 방식) (0) | 2024.06.21 |
| @ 어노테이션의 종류 (0) | 2024.06.21 |
| Spring MVC 구조 설명 (1) | 2024.06.21 |