[목차]
01. DTO(Date Transfer Object)
➡️ 유저가 자신의 브라우저에서 데이터를 입력하여 form 에 있는 데이터를 DTO에 넣어서 전송합니다.
➡️ 해당 DTO를 받은 서버가 DAO를 이용하여 데이터베이스로 데이터를 저장한다.
02. java Bean 액션태그
useBean
👉🏻<jsp:useBean id=”bean이름" class="java bean 파일의 패키지.클래스명" scope="유효범위" />➡️ 특정한 자바빈 파일을 사용한다고 명시할 때 사용
➡️ 클래스 빈이름 = new 클래스(); 와 동일한 의미
setProperty
👉🏻<jsp:setProperty name=”bean이름" property="필드명" value=”값”/><jsp:setProperty name="bean이름" property="*"/>
➡️ 자바빈 파일의 setter 메서드를 사용하기 위해, 즉 데이터의 값을 설정할 때 사용된다.
➡️ useBean 액션태그로 생성한 자바빈 객체에 대해서 프로퍼티(필드)에 값을 설정하는 역할을 한다.
➡️ property 속성에 * 를 사용하면 프로퍼티와 동일한 이름의 파라미터를 이용하여 setter 메서드를 생성한 모든 프로퍼티(필드)에 대해 값을 설정할 수 있다.
getProperty
👉🏻<jsp:getProperty name=”bean이름" property="필드명"/>➡️ 자바빈 파일의 getter 메서드를 사용하기 위해, 즉 저장된 데이터의 값을 읽어올 때 사용된다.
03. DTO(bean) insert 처리
2️⃣ 입력 자료를 받아서 DTO 객체 내에 셋팅한다.
3️⃣ insert 쿼리 준비 후 DTO 객체 내에서 겟팅한다.
4️⃣ 쿼리 실행
5️⃣ 쿼리 사용 결과 생략
6️⃣ 데이터베이스 테이블 내에 insert 처리 완료 확인
[코드예제]User.java(DTO)
package kr.or.dto; public class User { // 데이터 영역 private String u_id; private String u_pw; private String u_level; private String u_name; private String u_email; private String u_phone; private String u_addr; // 메서드 영역(getter&setter) public String getU_id() { return u_id; } public void setU_id(String u_id) { this.u_id = u_id; } public String getU_pw() { return u_pw; } public void setU_pw(String u_pw) { this.u_pw = u_pw; } public String getU_level() { return u_level; } public void setU_level(String u_level) { this.u_level = u_level; } public String getU_name() { return u_name; } public void setU_name(String u_name) { this.u_name = u_name; } public String getU_email() { return u_email; } public void setU_email(String u_email) { this.u_email = u_email; } public String getU_phone() { return u_phone; } public void setU_phone(String u_phone) { this.u_phone = u_phone; } public String getU_addr() { return u_addr; } public void setU_addr(String u_addr) { this.u_addr = u_addr; } }
[코드예제] user_insert_form.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> <link rel="stylesheet" type="text/css" href="<%= request.getContextPath() %>/css/main.css" /> </head> <body> <%@ include file="/module/top.jsp" %> <%@ include file="/module/left.jsp" %> /***** form으로 입력자료를 post방식으로 전달 *****/ <form action="<%= request.getContextPath() %>/uinsert/user_insert_action.jsp" method="post"> <table border="1"> <tr> <td>아이디</td> <td><input type="text" name="u_id"></td> </tr> <tr> <td>비밀번호</td> <td><input type="text" name="u_pw"></td> </tr> <tr> <td>권한</td> <td><input type="text" name="u_level"></td> </tr> <tr> <td>이름</td> <td><input type="text" name="u_name"></td> </tr> <tr> <td>이메일</td> <td><input type="text" name="u_email"></td> </tr> <tr> <td>전화번호</td> <td><input type="text" name="u_phone"></td> </tr> <tr> <td>주소</td> <td><input type="text" name="u_addr"></td> </tr> <tr> <td colspan="2"><input type="submit" value="회원가입"></td> </tr> </table> </form> <%@ include file="/module/hadan.jsp" %> </body> </html>
[코드예제] user_insert_action.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <%@ page import="java.sql.Connection" %> <%@ page import="java.sql.PreparedStatement" %> <%@ page import="java.sql.SQLException" %> <%@ page import="kr.or.driverdb.DriverDB" %> <% request.setCharacterEncoding("euc-kr"); %> // post 한글처리 /***** java Bean 액션태그 사용 *****/ <jsp:useBean id="u" class="kr.or.dto.User"/> <jsp:setProperty name="u" property="*"/> <% Connection conn = null; PreparedStatement pstmt = null; try { // 1_2단계 드라이버실행, DB연결 분리 DriverDB db = new DriverDB(); conn = db.driverDbcon(); System.out.println(conn + "<- conn user_insert_action.jsp"); // 3단계: 쿼리 실행을 위한 객체 생성 pstmt = conn.prepareStatement("INSERT INTO tb_user VALUES(?, ?, ?, ?, ?, ?, ?)"); System.out.println(pstmt + "<- pstmt 1"); // 쿼리 실행준비 단계에서 겟팅 pstmt.setString(1, u.getU_id()); pstmt.setString(2, u.getU_pw()); pstmt.setString(3, u.getU_level()); pstmt.setString(4, u.getU_name()); pstmt.setString(5, u.getU_email()); pstmt.setString(6, u.getU_phone()); pstmt.setString(7, u.getU_addr()); System.out.println(pstmt + "<- pstmt 2"); // 4단계: 쿼리 실행 int result = pstmt.executeUpdate(); System.out.println(result + "<-result"); // 5단계: 쿼리 실행결과 사용(insert 생략 가능) }finally{ // 6단계: statement 또는 prepareStatement객체 종료(close()) if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {} // 7단계: Connection 객체 종료(close()) if (conn != null) try { conn.close(); } catch(SQLException ex) {} } // user_list.jsp 로 리다이렉트 // response.sendRedirect(request.getContextPath() + "/ulist/user_list.jsp"); // user_search_list.jsp로 리다이렉트 response.sendRedirect(request.getContextPath() + "/usersearch/user_search_list.jsp"); %>
04. DTO(bean) update 처리
2️⃣ 입력 자료를 받아서 DTO 객체 내에 셋팅한다.
3️⃣ update 쿼리 준비 후 DTO 객체 내에서 겟팅한다.
4️⃣ 쿼리 실행
5️⃣ 쿼리 사용 결과 생략
6️⃣ 데이터베이스 테이블 내에 update 처리 완료 확인
[코드예제]User.java(DTO)
package kr.or.dto; public class User { private String u_id; private String u_pw; private String u_level; private String u_name; private String u_email; private String u_phone; private String u_addr; public String getU_id() { return u_id; } public void setU_id(String u_id) { System.out.println(u_id + "<- u_id setU_id User.class"); this.u_id = u_id; } public String getU_pw() { return u_pw; } public void setU_pw(String u_pw) { System.out.println(u_pw + "<- u_pw setU_pw User.class"); this.u_pw = u_pw; } public String getU_level() { return u_level; } public void setU_level(String u_level) { System.out.println(u_level + "<- u_level setU_level User.class"); this.u_level = u_level; } public String getU_name() { return u_name; } public void setU_name(String u_name) { System.out.println(u_name + "<- u_name setU_name User.class"); this.u_name = u_name; } public String getU_email() { return u_email; } public void setU_email(String u_email) { System.out.println(u_email + "<- u_email setU_email User.class"); this.u_email = u_email; } public String getU_phone() { return u_phone; } public void setU_phone(String u_phone) { System.out.println(u_phone + "<- u_phone setU_phone User.class"); this.u_phone = u_phone; } public String getU_addr() { return u_addr; } public void setU_addr(String u_addr) { System.out.println(u_addr + "<- u_addr setU_addr User.class"); this.u_addr = u_addr; } }
[코드예제] user_update_form.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> <link rel="stylesheet" type="text/css" href="<%= request.getContextPath() %>/css/main.css" /> </head> <body> <%@ include file="/module/top.jsp" %> <%@ include file="/module/left.jsp" %> <%@ page import = "java.sql.Connection" %> <%@ page import = "java.sql.PreparedStatement" %> <%@ page import = "java.sql.ResultSet" %> <%@ page import = "java.sql.SQLException" %> <%@ page import="kr.or.driverdb.DriverDB" %> <% // 리스트 화면에서 수정버튼 클릭 시 get방식으로 id값을 받는다. String send_id = request.getParameter("send_id"); String dbid = null; String dbpw = null; String dblevel = null; String dbname = null; String dbemail = null; String dbphone = null; String dbaddr = null; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { // 1_2단계 드라이버실행, DB연결 분리 DriverDB db = new DriverDB(); conn = db.driverDbcon(); System.out.println(conn + "<- conn user_update_form.jsp"); // 3단계 : 쿼리 실행을 위한 객체 생성 pstmt = conn.prepareStatement("SELECT * FROM tb_user WHERE u_id=?"); pstmt.setString(1, send_id); // 4단계 : 쿼리 실행 rs = pstmt.executeQuery(); // 5단계 : 쿼리 실행결과 사용 while(rs.next()) { dbid = rs.getString("u_id"); dbpw = rs.getString("u_pw"); dblevel = rs.getString("u_level"); dbname = rs.getString("u_name"); dbemail = rs.getString("u_email"); dbphone = rs.getString("u_phone"); dbaddr = rs.getString("u_addr"); } } catch(SQLException ex) { out.println(ex.getMessage()); ex.printStackTrace(); } finally { // 6. 사용한 Statement 종료 if (rs != null) try { rs.close(); } catch(SQLException ex) {} if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {} // 7. 커넥션 종료 if (conn != null) try { conn.close(); } catch(SQLException ex) {} } %> <h2>수정화면</h2> <form action="<%= request.getContextPath() %>/userupdate/user_update_action.jsp" method="post"> <table border="1"> <tr> <td>아이디</td> <td><input type="text" name="u_id" value="<%= dbid %>" readonly></td> </tr> <tr> <td>비밀번호</td> <td><input type="text" name="u_pw" value="<%= dbpw %>"></td> </tr> <tr> <td>권한</td> <td><input type="text" name="u_level" value="<%= dblevel %>"></td> </tr> <tr> <td>이름</td> <td><input type="text" name="u_name" value="<%= dbname %>"></td> </tr> <tr> <td>이메일</td> <td><input type="text" name="u_email" value="<%= dbemail %>"></td> </tr> <tr> <td>전화번호</td> <td><input type="text" name="u_phone" value="<%= dbphone %>"></td> </tr> <tr> <td>주소</td> <td><input type="text" name="u_addr" value="<%= dbaddr %>"></td> </tr> <tr> <td colspan="2"><input type="submit" value="수정버튼"></td> </tr> </table> </form> <%@ include file="/module/hadan.jsp" %> </body> </html>
[코드예제] user_update_action.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <%@ page import = "java.sql.Connection" %> <%@ page import = "java.sql.PreparedStatement" %> <%@ page import = "java.sql.SQLException" %> <%@ page import="kr.or.driverdb.DriverDB" %> <% request.setCharacterEncoding("euc-kr"); %> // post 한글처리 /***** java Bean 액션태그 사용 *****/ <jsp:useBean id="u" class="kr.or.dto.User"/> <jsp:setProperty name="u" property="*"/> <% Connection conn = null; PreparedStatement pstmt = null; try { // 1_2단계 드라이버실행, DB연결 분리 DriverDB db = new DriverDB(); conn = db.driverDbcon(); System.out.println(conn + "<- conn user_insert_action.jsp"); // 3단계 : 쿼리 실행을 위한 객체 생성(겟팅) pstmt = conn.prepareStatement("UPDATE tb_user SET u_pw=?, u_level=?, u_name=?, u_email=?, u_phone=?, u_addr=? WHERE u_id=?"); pstmt.setString(1, u.getU_pw()); pstmt.setString(2, u.getU_level()); pstmt.setString(3, u.getU_name()); pstmt.setString(4, u.getU_email()); pstmt.setString(5, u.getU_phone()); pstmt.setString(6, u.getU_addr()); pstmt.setString(7, u.getU_id()); System.out.println(pstmt); // 4단계 : 쿼리 실행 (1이 출력되면 정상) int result = pstmt.executeUpdate(); System.out.println(result); // 5단계 : 쿼리 실행 결과 사용(생략가능) } catch(SQLException ex) { out.println(ex.getMessage()); ex.printStackTrace(); } finally { // 6. 사용한 Statement 종료 if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {} // 7. 커넥션 종료 if (conn != null) try { conn.close(); } catch(SQLException ex) {} } // user_list.jsp 로 리다이렉트 //response.sendRedirect(request.getContextPath() + "/ulist/user_list.jsp"); // user_search_list.jsp로 리다이렉트 response.sendRedirect(request.getContextPath() + "/usersearch/user_search_list.jsp"); %>
tag : #DB #DTO #bean #useBean #setProperty #getProperty #insert #update
Uploaded by N2T