회원가입을 했으면 로그인을 해봐야 한다.
로그인 기능 구현을 해보자. 로그인을 하기위해
사용자의 아이디와 비밀번호를 조회해야 한다.
<!-- 이메일 -->
<form accept-charset="UTF-8" method="post" action="/TEST/Login.do">
<input type="text" id="userid" name="email" placeholder="E-mail을 입력하세요" />
<!-- 비밀번호 -->
<input type="password" id="password" name="pw" placeholder="비밀번호를 입력하세요" />
<!--제출 -->
<button type="submit"/>로그인</button>
</form>
회원가입 페이지를 만들어 준다.
아이디 또는 이메일로 하고 text 타입으로 input태그를 만든다.
비밀번호는 password 타입으로 만든다. submit 버튼을 만들고
action 속성으로 Controller 에 form을 보낸다.
@Controller
public class MemberController {
@Autowired
private MemberService memberService;
// 회원 로그인
@PostMapping("/Login")
public String Login(MemberVO vo, HttpSession session) {
MemberVO Login = memberService.Login(vo);
if(Login!=null) {
session.setAttribute("LoginVo", Login);
}
return "redirect:/boardList";
}
}
Controller -> Service 로 갔다가 돌아온다.
memberService에서 전달 받은 값이 있을 때 만 LoginVo 세션에 Login 값을 넣어준다.
public interface MemberService {
//로그인
public MemberVO Login(MemberVO vo);
}
@Service
public class MemberServiceImple implements MemberService {
@Autowired
private MemberMapper mapper;
//로그인 mapper 접근
@Override
public MemberVO Login(MemberVO vo) {
MemberVO VO = mapper.MemberLogin(vo);
return VO;
}
}
mapper 에서 조회를 하고 값이 존재하면 VO에 담아서 반환을 한다.
public interface MemberMapper {
//@Select("Select * from T_MEMBER where email=#{email} and pw=#{pw}")
public MemberVO MemberLogin(MemberVO vo);
}
<!-- 로그인 -->
<select id="MemberLogin" resultType="kr.smhrd.domain.MemberVO">
Select * from T_MEMBER where email=#{email} and pw=#{pw}
</select>
Mapper.xml 에 쿼리를 작성해서 사용자가 입력한 이메일과 패스워드가 일치하는 회원정보가 있는지 조회한다. xml을 작성 안해서 주석 처리한 @Select 어노테이션을 사용해서 조회해도 결과는 같다. 오히려 이게 더 간편한것 같다.