1.
예를들어, View 로 부터,
searchCondition 이라는 이름의 값을 가져오고,
searchContent 이라는 이름의 값을 가져온다고 해보자.
이 둘을 가져 오려면, 아래와 같이 코드를 작성 해야 한다.
@RequestMapping(value = "/main.do")
public String main(Request request) {
String searchCondition = request.getParameter("searchCondition");
String searchContent = request.getParameter("searchContent");
}
근데, request를 주체로 사용 하기 위해서, main() 메서드의 인자로 Request request 를 넣었기 때문에,
해당 클래스는 import 덕분에 상대적으로 무거워지게 된다.
2.
이때, 해결 할 수 있는 방법이 바로, @RequestParam() 어노테이션 이다.
3.
아래와 같이 작성 하게 된다.
@RequestMapping(value = "/main.do")
public String main(@RequestParam(value = "searchCondition", defaultValue = "TITLE", required = false)String searchCondition, @RequestParam(value = "searchContent", defaultValue = "", required = false)String searchContent) {
System.out.println("log : searchCondition : " + searchCondition);
System.out.println("log : searchContent : " + searchContent);
}
// Console
// log : searchCondition : TITLE
// log : searchContent : (사용자가 입력한 값)
근데, 이 방식도 사실 구식 이다.
왜냐하면, main() 메서드 내부의 인자로 줄줄이 길게 작성 해야 하기 때문 이다.
가독성 측면으로도 안좋고, 암튼 오래된 구식 방법 이다.
4.
그래서, 이러한 경우에 !
필요한 파라미터명을 VO 클래스 내부에 tmp 변수를 만들고,
Command 객체가 특정 자료형의 참조변수 까지 객체화를 해주니까,
그 개념을 사용 해서 필요한 데이터를 set 하면 된다.
5.
이때, 두가지 방법 모두 괜찮다.
1) searchCondition 을 예시로 들면,
Controller 에서 직접 필요한 값을 set 해주기
예시)
// VO 클래스 멤버변수
private String searchCondition;
// ====================================================
// mainController.java
public class MainController {
public String main(BoardVO bVO, BoardDAO bDAO, ..) {
bVO.setSearchCondition("키워드");
}
}
2)
애초에 View에서 파라미터명 대소문자를 잘 맞춰서,
searchCondition 이라는 이름으로 필요한 키워드값을,
hidden 태그에 담아서 보내던지,
또는,
<a href = ""> 해서 링크에 실어서 보내던지,
하면 된다.
그러면, Command 객체가 파라미터명이 같은것을 찾아서,
setter을 자동 호출해서 데이터를 set 해준다.
예시)
selectAll 쿼리문은 총 3개 라서, 키워드값이 필요 하다.
update 쿼리문은 총 2개 라서, 키워드값이 필요 하다.
그러면, C가 V에게 나 searchCondition 이라는 이름으로 그 이름의 값이 필요 하다 ~
값은 Cnt 이야 ~ 라고 말해주면,
V가 응 보내줄게 ~ 하는것이다.
3)
정답은 없으며, 모두 괜찮은 방법 이다.
[ 정리 ]
무언가 키워드값, .. 등이 필요 할 때,
임시로 VO 클래스 내부에 tmp 변수를 만든다.
그리고,
해당하는 tmp 변수에 필요한 값을,
C가 직접 set 하던지,
또는,
V가 필요한 키워드값 을 보내준다.
'Spring 프레임워크 > 메모' 카테고리의 다른 글
throws 와 try-catch 메모 (0) | 2023.08.17 |
---|---|
Spring 프레임워크 JoinPoint 인터페이스 (0) | 2023.08.12 |
[ Spring ] redirect: 와 forward: (0) | 2023.08.07 |
Spring 로그 분석 하기 (0) | 2023.08.06 |
의존 관계와 포함 관계 (0) | 2023.08.05 |