웹 프로그래밍 설계 및 실습 mvc1 member 이경화 ([email protected])
TRANSCRIPT
웹 프로그래밍 설계 및 실습MVC1 Member
이경화 ([email protected])
First off
http://java.sun.com/http://java.sun.com/j2se/1.4.2/docs/api/index.htmlhttp://java.sun.com/javase/6/docs/api/ [ 영문 API_1.6]http://apollo89.com/java/ko/api/ [ 한글 API_1.6]http://www.w3schools.com/TAGS/ [HTML 4.01 / XHTML 1.0 Reference]http://java.sun.com/docs/books/tutorial/javabeans/ [The JavaBeans™ Tutorial]
2
Contents
• Basic MVC Pattern• JSP Model 1 architecture - Member
3
Column Add in Table (1/2)
Column Add in Table (2/2)
##>mysql -uroot -p0000
mysql> use lkh
mysql> show tables;
mysql> alter table member add regdate date;
mysql> update member set regdate = now();
mysql> desc member;
mysql> select * from member;
프로젝트 구조
• Context_root : 이니셜 _PRJ• Java Source
– DB 연결 : demoPkg.DBConn.java
– DAO : mvc1.member.dao.MemberDAO.java
– DTO : mvc1.member.dto.MemberVO.java
• JSP Source– 입력 폼 : inputMember.jsp– 회원 목록 : listMember.jsp– 회원 상세 : readMember.jsp– 회윈 등록 처리부 : createProc.jsp– 회원 수정 처리부 : updateProc.jsp– 회원 삭제 처리부 : deleteProc.jsp
package demoPkg;
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;
public class DBConn {
DBConn.java
/** * Mysql DB 연결 * @return Connection */
public static Connection mysqlConn() { Connection conn = null; String url= "jdbc:mysql://127.0.0.1:3306/lkh";
try { Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection(url,"root","0000");} catch(Exception e) { System.out.println(e.toString());}return conn;
}
DBConn.java
/** * Mysql DB 연결 해제 * @param conn */
public static void close(Connection conn) { try { if(conn !=null) conn.close(); } catch(Throwable e) { System.out.println(e.toString()); } finally { try {
if(conn != null) conn.close();} catch ( Exception e ) {
System.out.println(e.toString());}
}}
/** * Mysql DB 연결 해제 * @param conn * @param pstmt */
public static void close(Connection conn, PreparedStatement pstmt) { try { if(pstmt !=null) pstmt.close(); if(conn !=null) conn.close(); } catch(Throwable e) { System.out.println(e.toString()); } finally { try {
if(pstmt != null) pstmt.close(); if(conn != null) conn.close();
} catch ( Exception e ) { System.out.println(e.toString());
} } }
/** * Mysql DB 연결 해제
* @param conn * @param pstmt * @param rs */
public static void close(Connection conn, PreparedStatement pstmt, ResultSet rs) { try { if(rs != null ) rs.close(); if(pstmt !=null) pstmt.close(); if(conn !=null) conn.close(); } catch(Throwable e) { System.out.println(e.toString()); } finally { try { if(rs != null ) rs.close(); if(pstmt != null) pstmt.close(); if(conn != null) conn.close(); } catch ( Exception e ) { } }}
} // end of class
package mvc1.member.dto;
public class MemberVO {private int seq = 0;private String userid = "";private String username = "";private String userpw = "";private String regdate = "";
public int getSeq() { return seq; }public String getUserid() { return userid; }public String getUsername() { return username; }public String getUserpw() { return userpw; }public String getRegdate() { return regdate; }
public void setSeq(int seq) { this.seq = seq; }public void setUserid(String userid) { this.userid = userid; }public void setUsername(String username) { this.username = username; }public void setUserpw(String userpw) { this.userpw = userpw; }public void setRegdate(String regdate) { this.regdate = regdate; }
}
MemberVO.java
package mvc1.member.dao;
import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.*;import demoPkg.DBConn;import mvc1.member.dto.MemberVO;
public class MemberDAO {
MemberDAO.java
/** * 회원 정보 생성 * @param dto * @return boolean */public boolean create (MemberVO dto) {
PreparedStatement pstmt = null;String insertSQL = "INSERT INTO member(userid, username, userpw, regdate) VALUES(?,?,?,now())";int res = 0;
try {conn = DBConn.mysqlConn();
pstmt = conn.prepareStatement(insertSQL);pstmt.setString(1, dto.getUserid());pstmt.setString(2, dto.getUsername());pstmt.setString(3, dto.getUserpw());res = pstmt.executeUpdate();
} catch (Exception e) { System.out.println(e.getMessage());
} finally {try { DBConn.close(conn, pstmt);} catch (Exception e) { e.printStackTrace();}
}
if (res > 0) return true;
else return false;
}
/** * 회원 목록 보기 * @return Vector */public Vector list() {
Vector v1 = new Vector();Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;String listSQL = "SELECT seq, userid, username, userpw, regdate from MEMBER";try { conn = DBConn.mysqlConn(); pstmt = conn.prepareStatement(listSQL);
rs = pstmt.executeQuery(); while(rs.next()) {
MemberVO dto = new MemberVO(); dto.setSeq(rs.getInt("seq")); dto.setUserid(rs.getString("userid")); dto.setUsername(rs.getString("username")); dto.setUserpw(rs.getString("userpw")); dto.setRegdate(rs.getString("regdate"));
v1.addElement(dto);}
} catch (Exception e) { System.out.println(e.getMessage()); } finally {
try { DBConn.close(conn, pstmt, rs);
} catch (Exception e) { e.printStackTrace();
}}return v1;
}
/** * 회원정보 상세보기 * @param idVal * @return MemberVO */public MemberVO read (int seqVal) {
MemberVO dto = new MemberVO();Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;String readSQL = "SELECT userid, username, userpw, regdate FROM member WHERE seq=?";try { conn = DBConn.mysqlConn();
pstmt = conn.prepareStatement(readSQL); pstmt.setInt(1, seqVal); rs = pstmt.executeQuery(); if(rs.next()) {
dto.setSeq(seqVal); dto.setUserid(rs.getString("userid")); dto.setUsername(rs.getString("username")); dto.setUserpw(rs.getString("userpw"));
dto.setRegdate(rs.getString("regdate")); }
} catch (Exception e) { System.out.println(e.getMessage());
} finally { try {
DBConn.close(conn, pstmt, rs);} catch (Exception e) {
e.printStackTrace();}
}return dto;
}
/** * 회원 정보 수정 * @param dto * @return boolean */public boolean update (MemberVO dto) {
Connection conn = null;PreparedStatement pstmt = null;String updateSQL = "UPDATE member SET userid=?, username=?, userpw=?, regdate=now() WHERE seq=?";int res = 0;try { conn = DBConn.mysqlConn();
pstmt = conn.prepareStatement(updateSQL); pstmt.setString(1, dto.getUserid()); pstmt.setString(2, dto.getUsername()); pstmt.setString(3, dto.getUserpw()); pstmt.setInt(4, dto.getSeq());
res = pstmt.executeUpdate();} catch (Exception e) {
System.out.println(e.getMessage());
} finally {try {
DBConn.close(conn, pstmt);} catch (Exception e) {
e.printStackTrace();}
}
if (res > 0) return true;
else return false;
}
/** * 회원정보 삭제 * @param dto * @return boolean */public boolean delete (int seqVal) {
Connection conn = null;PreparedStatement pstmt = null;String deleteSQL = "DELETE FROM member WHERE seq=?";int res = 0;try {
conn = DBConn.mysqlConn(); pstmt = conn.prepareStatement(deleteSQL); pstmt.setInt(1, seqVal); res = pstmt.executeUpdate();} catch (Exception e) {
System.out.println(e.getMessage());} finally {
try { DBConn.close(conn, pstmt);
} catch (Exception e) { e.printStackTrace();
} }
if (res > 0) return true;
else return false;
}
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%><html><head><title> MVC1 Member</title><script language="javascript"> function validCheck(f){ return true; } function goList(){ location.href="./listMember.jsp"; }</script></head><body><h3>Demo6 : MVC1 member > 회원 입력폼 </h3><hr><table border="1" width="400"><form method="post" action="./createProc.jsp" onSubmit="return validCheck(this)"> <tr><td> 이름 </td><td><input type="text" name="username"></td></tr> <tr><td> 아이디 </td><td><input type="text" name="userid"></td></tr> <tr><td> 비밀번호 </td><td><input type="text" name="userpw"></td></tr> <tr><td colspan="2" align="center"> <input type="submit" value=" 저장 "> <input type="button" value=" 목록 " onClick="javascript:goList()"> </td> </tr></form></table> </body> </html>
inputMember.jsp
<%@page contentType="text/html; charset=euc-kr" pageEncoding="euc-kr"%>
<% request.setCharacterEncoding("euc-kr"); %><jsp:useBean id="dao" class="mvc1.member.dao.MemberDAO"/><jsp:useBean id="dto" class="mvc1.member.dto.MemberVO"/><jsp:setProperty name="dto" property="*"/>
<%boolean flag = dao.create(dto);if(flag == true) { response.sendRedirect(“listMember.jsp”);} else { response.sendRedirect(“inputMember.jsp”);}%>
createProc.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR” %><%@page import="java.util.*, mvc1.member.dto.*"%><% request.setCharacterEncoding("euc-kr"); %><jsp:useBean id="dao" class="mvc1.member.dao.MemberDAO"/><jsp:useBean id="dto" class="mvc1.member.dto.MemberVO"/><% Vector vt = new Vector();vt = dao.list(); %><html><head><title> MVC1 Member</title></head><body><h3>Demo6 : MVC1 member > 회원 목록 </h3><hr><TABLE width="550" border="1"><tr>
<td> 번호 </td><td> 이름 </td><td> 아이디 </td><td> 비밀번호 </td><td> 등록일 </td>
</tr>
listMember.jsp
<% if(vt.isEmpty()) { %> <tr><td colspan='5'> 등록된 회원이 없습니다 </center></td></tr><% } else { int viewNum = 1; for(int i=0; i<vt.size(); i++) { dto = (MemberVO)vt.get(i);%>
<tr><td> <a href="readMember.jsp?seq=<%=dto.getSeq()%>"><%=viewNum%></a> </td> <td><%=dto.getUserid()%></td> <td><%=dto.getUsername()%></td> <td><%=dto.getUserpw()%></td> <td><%=dto.getRegdate()%></td></tr>
<% viewNum++; }}%></TABLE>
<a href="./createMember.jsp"> 회원정보 입력 </a></BODY></HTML>
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%><% request.setCharacterEncoding("euc-kr"); %><jsp:useBean id="dao" class="mvc1.member.dao.MemberDAO"/><jsp:useBean id="dto" class="mvc1.member.dto.MemberVO"/><%int seq = Integer.parseInt(request.getParameter("seq"));dto = dao.read(seq);%><html><head><title> MVC1 Member</title><script language="javascript">function goUpt(){
document.memForm.action="updateProc.jsp";document.memForm.submit();
}function goDel(idVal){
document.memForm.action="deleteProc.jsp"; document.memForm.submit();
}
readMember.jsp
function goList(){location.href="./listMember.jsp";
}</script></head><BODY><h3>Demo6 : MVC1 member > 회원정보 상세보기 </h3><hr><TABLE width="550" border="1"><form name="memForm" method="post"><input type=hidden name=seq value="<%=dto.getSeq()%>"><tr><td> 번호 </td><td><%=dto.getSeq()%></td></tr><tr> <td> 아이디 </td> <td> <input type="text" name="userid" value="<%=dto.getUserid()%>"> </td></tr>
<tr> <td> 이름 </td> <td> <input type="text“ name="username“ value="<%=dto.getUsername()%>"> </td></tr><tr> <td> 비밀번호 </td> <td> <input type="text" name="userpw“ value="<%=dto.getUserpw()%>"> </td></tr><tr><td> 등록일 </td><td><%=dto.getRegdate()%></td></tr><tr> <td colspan="2" align="center"> <input type="button" value=" 수정 " onClick="javascript:goUpt()"> <input type="button" value=" 삭제 " onClick="javascript:goDel()"> <input type="button" value=" 목록 " onClick="javascript:goList()"> </td></tr></form> </TABLE> </BODY> </HTML>
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<% request.setCharacterEncoding("euc-kr"); %><jsp:useBean id="dao" class="mvc1.member.dao.MemberDAO"/><jsp:useBean id="dto" class="mvc1.member.dto.MemberVO"/><jsp:setProperty name="dto" property="*"/>
<%boolean flag = dao.update(dto);if(flag == true) {
String url = "listMember.jsp";response.sendRedirect(url);
} else {String url = "readMember.jsp?seq="+dto.getSeq();response.sendRedirect(response.encodeRedirectURL(url));
}%>
updateProc.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<jsp:useBean id="dao" class="mvc1.member.dao.MemberDAO"/><jsp:useBean id="dto" class="mvc1.member.dto.MemberVO"/><jsp:setProperty name="dto" property="*"/>
<%boolean flag = dao.delete(dto.getSeq());if(flag == true) {
String url = "listMember.jsp";response.sendRedirect(url);
} else {String url = "readMember.jsp?seq="+dto.getSeq();response.sendRedirect(response.encodeRedirectURL(url));
}%>
deleteProc.jsp
Result
http://127.0.0.1/LKH_PRJ/Demo6/listMember.jsp
[ 보기 , 수정 , 삭제 ]
[ 리스트 ]
[ 등록 ]