@Component : 해당 클래스를 bean으로 등록하라는 프로그램에게 알려주는 주석
@RequestMapping("경로") : 클라이언트의 요청(url)에 맞는 클래스 또는 메소드를 연결시켜주는 어노테이션
ex) @RequestMapping("/member") : localhost:8080/comm/member 이하의 요청을 처리하는 컨트롤러
[위치에 따른 해석]
[작성법에 따른 해석]
@Autowired : bean으로 등록된 객체 중 타입이 같거나, 상속관계인 bean을 주입해주는 역할(DI:의존성 주입)
-> Controller: Service에 / Service: DAO에 / DAO: SqlSessionTemplate에 @Autowired 작성!
1.HttpServletRequest 이용
@RequestMapping("/login")
public String login(HttpServletRequest req) {
logger.info("로그인 요청됨");
String inputEmail = req.getParameter("inputEmail");
String inputPw = req.getParameter("inputPw");
logger.debug("inputEmail : " + inputEmail);
logger.debug("inputPw : " + inputPw);
return "redirect:/"; // sendRedirect 안써도 된다. 이게 리다이렉트 구문임
}
@RequestMapping("/login")
public String login(@RequestParam("inputEmail") String inputEmail,
@RequestParam("inputPw") String inputPw,
@RequestParam(value="inputName", required = false, defaultValue="홍길동") String inputName
) {
logger.debug("email: " + inputEmail);
logger.debug("pw: " + inputPw);
logger.debug("name: " + inputName);
// email 숫자만 입력받는다고 가정
// logger.debug(inputEmail + 100);
return "redirect:/";
}
@PostMapping("/login")
public String login(@ModelAttribute Member inputMember ) {
logger.info("로그인 기능 수행됨");
// 아이디, 비밀번호가 일치하는 회원 정보를 조회하는 Service 호출 후 결과 반환 받기
Member loginMember = service.login(inputMember);
return "redirect:/";
}
// 회원 가입 화면 전환
@GetMapping("/signUp") // Get 방식 : /comm/member/signUp 요청
public String signUp() {
return "member/signUp";
}
@Service : 비즈니스 로직(데이터 가공, DB연결)을 처리하는 클래스임을 명시 + bean 등록
/** 로그인 서비스 구현
*/
@Override
public Member login(Member inputMember) {
Member loginMember = dao.login(inputMember);
return loginMember;
// Connection을 얻어오거나 / 반환하거나
// 트랜잭션 처리를 하는 구문을 작성하지 않아도
// Spring에서 제어를 하기 때문에 Service 구문이 간단해진다.
}
@Repository : 영속성을 가지는 DB/파일을 연결하는 클래스임을 명시 + bean 등록