② 데이터베이스 안에 있는 데이터와 로그인 아이디 비교한다.
비교 후 아이디가 있다면 로그인을 허용 해주고, 아니라면 회원가입을 할 수 있게 한다.
package member.controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import member.MemberService;
import member.memberVo;
/**
* Servlet implementation class login
*/
@WebServlet("/member/login")
public class login extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public login() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
RequestDispatcher dis = request.getRequestDispatcher("/member/login.jsp");
dis.forward(request,response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
MemberService service = new MemberService();
memberVo vo = service.getMember(id);
//path : 이동 경로를 갖는 변수 (왜? 로그인 실패와 로그인 성공이 다른 경로를 가지고 있으니까)
String path = "/member/login.jsp";
//디폴트로 로그인 실패 했을 때 이동할 경로를 지정해주었다
if(vo != null && pwd.equals(vo.getPwd())) { //로그인 체크
//vo가 널이 아니면 아이디가 일치하는게 있다는 뜻임 같은게 있다는 말이니까 값이 있다. 그니까 널이 아니고
//if(pwd.equals(vo.getPwd())&& vo != null ) 이거 가능?
//ㄴ> 노 안됌 service.getMember(id); 이걸로 인해 아이디로 검색 된 결과가 없으면 pwd 는 널값이 되버려서 뒤에 껄 확인 할 필요도 없이 안해버리기때문에
HttpSession session = request.getSession(); //session 획득
session.setAttribute("loginId", id); //해당 로그인 아이디는 로그아웃 할 대까지 세션에 남아 있다.
path = "/index.jsp";
//로그인 성공했을 때만 경로를 이렇게 지정 해주면 되고
} else {
request.setAttribute("msg", "로그인 실패"); //request : 단기간의 내용만 필요할때
}
RequestDispatcher dis = request.getRequestDispatcher(path); //
dis.forward(request,response);
}
}
● String path = "/member/login.jsp";
path 설정 : 이동 경로를 갖는 변수 path 를 설정 해준다. 왜냐하면 로그인 실패와 로그인 성공이 다른 경로를 가지고 있으니까 실행 시킬 때 보여줄 경로를 변수에 담는다. 디폴트로 로그인 실패 했을 때 이동할 경로를 지정해주었다
● if(vo != null && pwd.equals(vo.getPwd())) {
vo가 널이 아니면 아이디가 일치하는게 있다는 뜻이다. 즉, 같은게 있다는 말이니까 로그인 할 수 있는 아이디가 있다.
if(pwd.equals(vo.getPwd())&& vo != null ) 이거 가능한가?
답은 NO! 안된다. service.getMember(id); 이걸로 인해 아이디로 검색 된 결과가 없으면 pwd 는 null값이 되버려서 && 뒤쪽 문장을 확인 할 필요도 없이 null 로 반환 하게 된다.
● HttpSession session = request.getSession();
session을 생성해서 획득해 주고
● session.setAttribute("loginId", id);
해당 로그인 아이디는 로그아웃 할 대까지 세션에 남아 있다.
● path = "/index.jsp";
로그인 성공했을 때는 다시 index 페이지로 돌아가게 해준다.
● } else {
request.setAttribute("msg", "로그인 실패");
}
그것이 아니라면 로그인 실패 메세지를 띄운다.
로그인에 성공하게 되면 아래의 코드 (not empty) 로 인해 로그아웃, 내정보확인, 탈퇴, 게시판보러가기의 메뉴가 보여지게 되며, 로그인 아이디나 비밀번호를 잘 못 치게 되면 로그인 실패라는 문구가 보인다.
<c:if test = "${not empty sessionScope.loginId }">
<button><a href = "${pageContext.request.contextPath }/member/logout"> 로그아웃</a></button><br/>
<br/>
<button><a href = "${pageContext.request.contextPath }/member/myinfo?id=${sessionScope.loginId }"> 내 정보 확인 </a></button><br/>
<br/>
<button><a href = "${pageContext.request.contextPath }/member/out?id=${sessionScope.loginId }">탈퇴</a></button></br>
</br>
<button><a href = "${pageContext.request.contextPath }/board/boardmain"> 게시판 보러가기 </a></button><br/>
</c:if>
'MVC > MVC 모델 실습' 카테고리의 다른 글
[MVC 실습] 로그인하고 게시판 운영하기_6 (0) | 2023.04.03 |
---|---|
[MVC 실습] 로그인하고 게시판 운영하기_5 (0) | 2023.04.03 |
[MVC 실습] 로그인하고 게시판 운영하기_4 (0) | 2023.04.03 |
[MVC 실습] 로그인하고 게시판 운영하기_3 (0) | 2023.04.03 |
[MVC 실습] 로그인하고 게시판 운영하기_1 (0) | 2023.04.03 |