실무에서 가장 많이 사용하는 방식은 아래 방식이다 ClassNotFoundException과 SQLException은 여러 Exception종류 중에 임의로 작성한 것이고 제외한 나머지 코드들은 통으로 함께 쓰이는 코드이다. 생각할 수 있는 구체적인 Exception을 찾아서 작성한 뒤 그 외에 발생할 수있는 예외를 대비해 catch(Exception e)로 추가 예외처리를 해준다.
catch(Exception e)로 한번에 다 예외처리가 가능한데 왜 따로따로(ClassNotFoundException와 SQLException등등) 먼저 예외처리를 할까? 예외마다 처리방법이 각기 다르다. 따라서 각각 예외처리를 해주고 혹시 모를 또다른 예외를 위해 catch(Exception e)구문으로 예외처리를 해주는 것이다.
//전체데이터를 효율적으로 한번에 표시하기위해 toString은 필수다 //toString은 자동 단축키로 만들어서 쓰는 거임 : alt+shift+s에서 `Generate toString()`클릭 @Override public String toString(){ return"Javabean2 [id=" + id + ", pw=" + pw + ", num=" + num + "]"; } }
3-3. 자바빈 객체 사용
자바빈 객체를 사용하여 Form페이지에서 입력받은 값을 화면에 출력하는 코드이다.
javabean타입의 객체생성 -> import생성
변수 Jb는 private이므로 get메서드와 set메서드로 접근해야함
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
//1. javabean타입의 객체생성 -> import생성 Javabean2 jb = new Javabean2();
//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);
변수지정없이 바로 while반복문실행 SQL구문작성시 select * from itwill_member이라서 while반복문을 사용했다. 만약 SQL구문이 select * from itwill_member where id=?로 where조건절을 추가하면 반복문이 아닌 if문으로 사용가능하다.
//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코드를 쓰는것이 실행순서상 좋다.