본문 바로가기

java 코딩

혼자 공부 정리

main.jsp

32번째 줄 

로그인 

<li><h5>로그인</h5></li>
<form action="LoginService" method ="post"> 

 

<li><input type="text" name="email" placeholder="Email을 입력하세요"></li>
<li><input type="password" name="pw" placeholder="PW를 입력하세요"></li>
<li><input type="submit" value="LogIn" class="button fit"></li>

 

name="email"

name="pw"

값 넣어줌


 

controller 에다가 new 해서 LoginService 으로 서블릿 하나 만들어줌

 

로그인서비스에 왔다 알려줌 System.out.println("[JoinService]");

 

뭐해야되냐 ? 로그인서비스에서 --> 입력받은 패스워드 아이디 가져와야함 ---> 포스트 방식으로 보냈음

혹시 포스트 방식으로 보냈는데 한글 껴있으면 인코딩 해줘야함

--->request.setCharacterEncoding("UTF-8");

 

항상 어떤객체? 리퀘스트 객체에서 값 가져온다

String email =request.getParameter("email");
String pw =request.getParameter("pw");

 

데이터 값이 잘넘어왔는지 확인하기위해서 콘솔창에 출력
System.out.println("email : "+email);
System.out.println("pw : "+pw);  

 

이제 뭐해야되? 데이터 받아왔어  로그인은 내가 받아온 이메일과 비번이 db에 있는지 비교확인해야함?

결국 데이터베이스 연결해야함 ---> MemberDAO

 


MemberDAO에서 로그인 메소드 만들꺼임

 

public void login(){

 

아직 어떤 형태인지 모르니깐 void

1.우선 try catch문 부터씀

try{

    2.  DB열어줘야함 --->  DBconn(); / DB연결 메소드 호출

 

    3. SQL문작성 (입력받은 이메일과 패스워드로 뭘할것인가? 조건을 걸꺼임 이메일과 패스워드가 내가 입력한 값과 같은지  )

 

    String sql = "select * from web_member where email=? and pw=?";

 

     4. SQL문 전달(prepareStatement 사용하면 sql문 전달할 수 있음)

     psmt = conn.prepareStatement(sql); 

     ---> 전역변수로 위에 선언에 놨기때문에 PreparedStatement psmt = null; / psmt 사용가능

 

     5. ? 에 값 채워줘야함

    (dto는 데이터를 전달하는 객체/ 데이터를 저장하는 가방 ) ---->위에 public void login("MemberDTO dto") 입력해줘야함

    psmt.setString(1, dto.getEmail());        dto에서 해당된값 꺼내옴
    psmt.setString(2, dto.getPw());

 

    6. 실행  (쿼리는 resultset로 반환)     

    rs = psmt.executeQuery();

 

---> 실행을하면 여기 형태는 어떤형태?? 테이블형태로 들어가있음 그 값에 하나하나 꺼내서 dto 값으로 받아올거다!

 

7. 조건을 걸거다 rs.next 해서 커서를 한칸내렸을때 해당하는 값이 있는지 없는지 확인?!

우리는 id(email)에 pk를 걸어놨기때문에 내가 지정한 값은 무조건 하나만 나옴 ---> 반복문 사용안하고 if 사용

 

7-1. rs.next() : 커스를 내렸을 때 값이 있는지 없는지 확인하는 메소드
있으면 true / 없으면 false
true일때, 즉 해당하는 값이 있을 때만 if문 실행

7-2. if(rs.next()){

       

        해당하는 값이 있을때

        String email=rs.getString(1);
        String pw=rs.getString(2);
        String tel=rs.getString(3);
        String address=rs.getString(4);

} ----> 이 4가지 값을 반환해줘야한다 메소드이기 때문에

 

뭘로 묶냐

8.dto = new MemberDTO(email, pw, tel, address);  ---> 아까 5번 보시면 위에서 MemberDTO 선언해줬기 때문에        MemberDTO dto 말고 dto만 적어줌

원래 있던 email pw말고 덮어쓰기 한다 / 내가 새로 받아옴 email, pw, tel , address

 

 

} catch (Exception e) {

  e.printStackTrace();

} 9.finally{

     DBclose(); / 문닫아줌

} 10. return  dto; / 뭘 리턴해줄거냐??? dto ---> 이렇게 써줌 오류남 왜? void --->MemberDTO (dto의 데이터 타입이 멤버 dto기 때문에)

 

}


LoginService

로그인 메소드 만들었으면 사용해야함  ----> 메소드 호출 해줘야함

 

먼저 메소드 login메소드가 있는 MemberDAO 호출

System.out.println("pw : "+pw);  이어서 밑에다가

1. MemberDAO dao=new MemberDAO();

 

입력 받아온 email, pw를 dto로 만들어주기

3.MemberDTO dto = new MemberDTO(email, pw) --> 오류남!! 이렇게 만들려면 멤버  dto에서 생성자 만들어줘야함 

왜냐하면 MemberDTO에 있는 생성자 email, pw, tel, address만 있기때문에 email,pw 두개만 있는 생성자를 만들어줘야함

 

실행 dao안에있는 login 메소드 실행 --> 매개변수로 dto 받는다고함 

2.dao.login(dto) --> 이메일과 패스워드만 담음 dto 실행

---> 실행하면 결과값 어캐 뭘로 반환?? -->dto로 반환 (위의 10번의 dto 근데 위의 dto는 이메일,pw,tel,address받아드림 그래서 dto를 하나 더 만들어줌

 

4. info =email, pw, tel, address 4개를 받는 dto생성
MemberDTO info = dao.login(dto); 

---> dao에서 로그인이라는 메소드를 실행하면 dto로 받아감(이메일, pw)

---> 실행되고 반환되면 MemberDTO로 받아감 근데 이 MemberDTO는 이메일, pw, tel, address받아감

 

 

 

 

 

 

 

 

 

 

'java 코딩' 카테고리의 다른 글

dowhile 홀수 짝수 판별  (0) 2021.12.14
switch문 사계절 입력  (0) 2021.12.14
다중 if문 계절입력  (0) 2021.12.02
java if 조건문 예제  (0) 2021.11.22
삼항연산자 예제 (상자의 개수구하기)  (0) 2021.11.21