[ITWILL : JSP]JDBC활용 - TIMESTAMP주의점, JDBC에서 데이터처리

ITWILL학원 : 20강 JSP기초 BY 정규태강사

JDBC

  1. JDBC활용 - import쓰는 이유, form페이지로 받은 데이터를 DB에 insert하는 방법
  2. JDBC활용 - JAVA에서 DB 정보 지우기 2가지방법
  3. JDBC활용 - DB에서 고객정보를 불러와서 HTML테이블에 담기
  4. JDBC활용 - TIMESTAMP주의점, JDBC에서 데이터처리
  5. JDBC활용 - 회원정보수정페이지만들기
  6. JDBC활용 - 회원목록출력하는데 관리자는 빼고 출력하기, 자바 에러 두종류

1. MySQL Workbench에서 Timestamp 추가시 주의점

MySQL Workbench에서 row추가시 Timestamp 데이터타입을 쓰고싶다면 TIMESTAMP라고 직접 작성하거나 드롭다운리스트에서 TIMESTAMP()을 찾은 뒤 꼭 괄호를 삭제하고 TIMESTAMP로 apply해야 에러가 발생하지 않는다.

타임스탬프는 사용자가 입력하는 데이터가 아니라 컴퓨터시간에서 가져오는 데이터이다.
따라서 JDBC의 3단계인 sql구문 & DB저장에서 객체생성을 통해 진행할 수 있다.

아래 코드는 JDBC에서 itwill_member테이블에 사용자가 입력한 id, pw와 컴퓨터현재시간을 차례대로 sql구문에 넣는 코드이다.

1
2
3
4
5
6
//3. sql구문 & DB저장 진행시 
String sql = "insert into itwill_member value(?,?,?)";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pw);
pstmt.setTimestamp(3, new Timestamp(System.currentTimeMillis()));

2. JDBC에서 데이터처리

JDBC 3단계인 SQL작성 & pstmt 객체생성 & 데이터처리를 중점으로 로그인페이지를 작성해보자.

  • 아이디 일치 + 비번일치 => 로그인, main페이지이동, id값 세션객체 생성
  • 아이디 일치 + 비번불일치 => 에러(“비밀번호오류”), 뒤로가기
  • 아이디 불일치 => 에러(“비회원입니다”), 뒤로가기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//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("비밀번호오류"); //비번불일치
%>
<script type="text/javascript">
alert("비밀번호가 일치하지 않습니다")
//페이지이동 3가지의 차이점
history.back(); //=>작성한 아이디나 데이터가 살아있다
//location.href="loginForm.jsp" //=>작성한 아이디나 데이터가 없다
//location.reload();//=>새로고침으로 alert창이 반복된다
</script>
<%
}
}else{ //false이므로 id가 없다는 소리임. 즉, 비회원인 경우.
System.out.println("아이디오류-비회원입니다");
%>
<script type="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코드를 쓰는것이
실행순서상 좋다.

  1. js코드를 이용한 페이지이동
1
2
3
<script type="text/javascript">
location.href="main.jsp"
</script> -->
  1. java코드를 이용한 페이지이동
1
response.sendRedirect("main.jsp");

2-2. 페이지새로고침 3가지의 차이점.

  • history.back(); : 작성한 아이디나 데이터가 살아있다
  • location.href="loginForm.jsp"; : 작성한 아이디나 데이터가 없다
  • location.reload(); : 새로고침으로 alert창이 반복된다