Spring
[Spring] @Component를 상속받은 어노테이션
웹코린이
2023. 8. 10. 15:17
728x90
@Repository
MVC 패턴 Model 파트에서 사용 (DAO 구나라고 알 수 있음)
@Service
Controller 파트에서 사용 (Service 레이어에서 활용됨)
@Controller
Controller 파트에서 사용
implements Controller 대신 사용
@Override 삭제 가능
@Controller 를 사용하므로써 메소드의 강제성이 사라졌다. 따라서 메소드 시그니처가 고정되어 있지 않다는 말이 된다. 그러므로 특정 요청에 대해 Controller 객체를 찾아가는 것이 아니라 메소드를 찾아가는 것이 된다. 또한, 비슷한 로직끼리의 메소드를 묶을 수 있지만 응집도가 높아지는 단점이 있다.
LoginController.java
@Controller
public class LoginController {
@RequestMapping(value="/login.do")
public String login(MemberVO mVO, MemberDAO mDAO, HttpSession session) { // 로그인
System.out.println("LoginController 로그");
mVO = mDAO.selectOne(mVO);
if(mVO != null) {
session.setAttribute("memberId", mVO.getMid());
}
return "redirect:main.do";
}
@RequestMapping(value="/logout.do")
public String logout(HttpSession session) { // 로그아웃
System.out.println("LogoutController 로그");
session.removeAttribute("memberId");
return "redirect:main.do";
}
또한 Command 객체도 바뀔 수 있는데 new하는 모든 객체들을 컨테이너가 관리하게 된다. 해당 객체가 언제, 어떤 메소드를 호출해야 하는지까지 관리한다. 예를 들어, DispatcherServlet이 초기화 될 때, init()을 불러야 한다. 이 말은 DispatcherServlet이.do 요청을 받았을 때, doGet() / doPost()를 실행한다는 말이다.
정리하자면 .do 요청을 받으면 객체화를 수행하고, request로부터 값을 추출하여 setter 처리까지 자동으로 처리해주는 객체를 말한다.
GET & POST 사용 방법
@RequestMapping(value="xxx.do" method=RequestMethod.GET)
@RequestMapping(value="xxx.do" method=RequestMethod.POST)
// 이를 추가할 수 있다.
// 사용자의 악의적 직접 접근을 막을 수 있기 때문에 사용
728x90