스프링 [Spirng] iBatis 로그인 기능 구현

반응형

로그인을할수있게 sql을 xml만들고

값을 주고, 받는 자바빈과 DAO를 만들고.

서버에서를 유효성검사 시키기 위해 Validator를 이용한 코드를짜고,

 

sql을 활용하기위해 loginservice를 통해정보를 전달한다.

동작하기 위한 컨트롤러를 만들어준다.

@Controller  
public class LoginController {  
private ApplicationContext context; // 컨텍스트 (선언)  
  
@RequestMapping("/login.do") // get방식 요청  
public String login() {  
return "/board/login";  
}  
  
@RequestMapping(value="/login.do", method = RequestMethod.POST) // login.do에 post 방식요청이 오면  
public ModelAndView loginProc(// 모델엔뷰(자바빈)이 받고 에러발생 정보는 바인딩으로 잡고 세션을 걸어준다.  
@ModelAttribute("LoginModel") LoginSessionModel loginModel,  
BindingResult result, HttpSession session) {  
ModelAndView mav = new ModelAndView(); // 모델엔뷰 객체를 생성  
  
//form validation 유효성 검증을하고  
new LoginValidator().validate(loginModel, result);  
if(result.hasErrors()) { // 에러가 존재하면  
mav.setViewName("/board/login"); // 로그인을 표시하고  
return mav; // 리턴  
}  
  
// 받아온 자바빈으로 아이디와 비밀번호를 꺼내고  
String userId = loginModel.getUserId();  
String userPw = loginModel.getUserPw();  
  
context = new ClassPathXmlApplicationContext("/config/applicationContext.xml"); // 컨텍스트 선언된 객체를 생성하고  
LoginService loginService = (LoginService) context.getBean("loginService"); // 저장된 로그인 서비스를 꺼내 객체로 얻고  
LoginSessionModel loginCheckResult = loginService.checkUserId(userId); // 로그인 서비스에 체크아이디를 넣어주고 자바빈 객체를 뽑아낸다.  
  
//check joined user  
if(loginCheckResult == null) { // 꺼내온 자바빈 정보가 없다면(null이면)  
mav.addObject("userId", userId);  
mav.addObject("errCode", 1); //에러코드 1번을 띄우고(넣고)  
mav.setViewName("/board/login");//(로그인창으로)  
return mav; //리턴(포워딩)  
}  
  
//check password 꺼내온 자바빈 정보 있다면 null이 아니라면  
if(loginCheckResult.getUserPw().equals(userPw)) {// 자바빈으로 꺼내온 비밀번호와 입력된 비밀번호를 비교하고 일치하면  
session.setAttribute("userId", userId); // 세션에 아이디와 , 이름을 저장하고  
session.setAttribute("userName", loginCheckResult.getUserName());  
mav.setViewName("redirect:/board/list.do"); // list.do로  
return mav; // 리턴한다.  
} else { // 만일 일치하지않으면  
mav.addObject("userId", userId);  
mav.addObject("errCode", 2); // 에러코드 2번을 띄우고  
mav.setViewName("/board/login"); // 로그인창으로  
return mav; //리턴한다  
}  
}  
  
@RequestMapping("/logout.do") // logout.do 요청이오면  
public String logout(HttpSession session) { // session정보를 불러와 logout에 대입하고  
session.invalidate(); // 로그아웃을 위해 session.invalidate()로 (세션을 초기화)후  
return "redirect:login.do"; //login.do로 리다리렉트 시킨다.  
}  
}
반응형