//2. 드라이브로드 & 디비연결 : 로그인한 사용자의 정보를 가져오기 final String DRIVER = "com.mysql.jdbc.Driver"; final String DBURL = "jdbc:mysql://localhost:3306/jspdb"; final String DBID = "root"; final String DBPW = "1234";
Class.forName(DRIVER); Connection con = DriverManager.getConnection(DBURL, DBID, DBPW); System.out.println("드라이브로드와 디비연결성공");
//3. SQL & PSTMT & 실행 String sql = "select * from itwill_member where id=?"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1, id);
//3-3. 데이터처리 if(rs.next()){ //true라는 건 id가 있다는 소리임 즉, 회원인 경우가 됨 if(pw.equals(rs.getString("pw"))){ //비번일치 //세션ID값생성 session.setAttribute("id", id); response.sendRedirect("main.jsp"); //js코드보다 java코드가 좋다 System.out.println(id+"로그인성공"); %> <!-- <script type="text/javascript"> location.href="main.jsp" </script> js코드보다 java코드가 더 좋다 --> <% }else{ System.out.println("비밀번호오류"); //비번불일치 %> <scripttype="text/javascript"> alert("비밀번호가 일치하지 않습니다") //페이지이동 3가지의 차이점 history.back(); //=>작성한 아이디나 데이터가 살아있다 //location.href="loginForm.jsp" //=>작성한 아이디나 데이터가 없다 //location.reload();//=>새로고침으로 alert창이 반복된다 </script> <% } }else{ //false이므로 id가 없다는 소리임. 즉, 비회원인 경우. System.out.println("아이디오류-비회원입니다"); %> <scripttype="text/javascript"> let tmp = confirm("비회원입니다. 회원가입하시겠습니까?") if(tmp){ location.href="insertForm.jsp"; }else{ history.back(); } </script> <% } %>
2-1. 페이지이동시 js코드보다 java코드가 좋은 이유
다른 페이지로 이동시 왜 js코드보다 java코드가 더 좋을까? 해당파일의 확장자는 jsp이다. jsp파일이라서 자바코드의 처리가 우선순위에 있다. js코드인 경우, java로 된 코드가 다 실행되고 난 뒤에 실행이 된다. 이때 이후에 나오는 java코드에 문제가 생기면 js코드가 실행안될 수 있기때문에 아예 java코드를 쓰는것이 실행순서상 좋다.
변수지정없이 바로 while반복문실행 SQL구문작성시 select * from itwill_member이라서 while반복문을 사용했다. 만약 SQL구문이 select * from itwill_member where id=?로 where조건절을 추가하면 반복문이 아닌 if문으로 사용가능하다.