1) 리스트(m_list.jsp)에 수정버튼을 만들어 수정화면(m_update_form.jsp)으로 이동.
folder : /mupdate
file : m_update_form.jsp
- m_list.jsp : 수정화면으로 갈 때 아이디만 넘긴다.(get방식의 키,값으로 가능)
- m_update_form.jsp :
1,2단계 : 드라이버 로딩 및 디비연결
3단계 : select 쿼리 준비 (select * from tb_member where m_id = ?)
4단계 : 쿼리 실행
5단계 : 쿼리 실행 결과 사용 (수정화면에 회원정보 출력)
6, 7단계 : 객체 종료
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>
<%
String send_id = request.getParameter("send_id");
System.out.println(send_id + "<-send_id");
String dbid = null;
String dbpw = null;
String dblevel = null;
String dbname = null;
String dbemail = null;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
Class.forName("com.mysql.jdbc.Driver");
try{
String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
"useUnicode=true&characterEncoding=euckr";
String dbUser = "dev35id";
String dbPass = "dev35pw";
conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
System.out.println(conn + "<-- conn m_update_form.jsp");
pstmt = conn.prepareStatement("select * from tb_member where m_id =?");
pstmt.setString(1, send_id);
System.out.println(pstmt +"<--pstmt");
rs = pstmt.executeQuery();
System.out.println(rs + "<-- rs");
if(rs.next()){
System.out.println("if 조건문 통과 완료");
dbid = rs.getString("m_id");
dbpw = rs.getString("m_pw");
dblevel = rs.getString("m_level");
dbname = rs.getString("m_name");
dbemail = rs.getString("m_email");
}
}catch(SQLException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>
<%------변수에 담은 값이 처리과정 바깥에서 출력되는지 확인-----------
테스트 dbid : <%= dbid %> <br/>
테스트 dbpw : <%=dbpw %> <br/>
테스트 dblevel : <%=dblevel %> <br/>
테스트 dbname : <%=dbname %> <br/>
테스트 dbemail : <%=dbemail %> <br/>
---------------------------------------------------%>
<form>
<input type="text" name="id" value= "<%= dbid %>"> <br/>
<input type="text" name="pw" value= "<%=dbpw %>"> <br/>
<input type="text" name="level" value= "<%=dblevel %>"> <br/>
<input type="text" name="name" value= "<%=dbname %>"> <br/>
<input type="text" name="email" value= "<%=dbemail %>"> <br/>
<button type="button"> 수정완료</button>
</form>
수정버튼에 m_id 값을 get 방식으로 넘기도록 a태그와 함께 추가
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>
<%= request.getRequestURI() %> <br>
회원 리스트 <br>
<table width="100%" border="1">
<tr>
<td>아이디</td><td>비번</td><td>권한</td><td>이름</td><td>이메일</td><td>수정</td>
</tr>
<%
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
Class.forName("com.mysql.jdbc.Driver");
try{
String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
"useUnicode=true&characterEncoding=euckr";
String dbUser = "dev35id";
String dbPass = "dev35pw";
conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
System.out.println(conn + "<-- conn m_list.jsp");
pstmt = conn.prepareStatement("select * from tb_member");
System.out.println(pstmt + "<-- pstmt m_list.jsp");
rs = pstmt.executeQuery();
System.out.println(rs + "<-- rs m_list.jsp");
//System.out.println(rs.next() + "<-- rs.next()");
while(rs.next()){
System.out.println("if 조건문 통과 완료");
%>
<tr>
<td> <%= rs.getString("m_id") %> </td>
<td> <%= rs.getString("m_pw") %> </td>
<td> <%= rs.getString("m_level") %> </td>
<td> <%= rs.getString("m_name") %> </td>
<td> <%= rs.getString("m_email") %> </td>
<td> <a href="<%=request.getContextPath()%>/mupdate/m_update_form.jsp?send_id=<%= rs.getString("m_id") %>"> 수정버튼</a> </td>
</tr>
<%
}
}catch(SQLException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>
</table>
m_update_from.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>
<%= request.getRequestURI() %> <br>
회원 수정<br><br>
<%
System.out.println("회원수정화면"); //화면이 이동되었음을 확인하기 위해 작성
String send_id = request.getParameter("send_id"); //변수send_id에 담긴 값을 send_id에 가져옴
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
Class.forName("com.mysql.jdbc.Driver");
try{
String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
"useUnicode=true&characterEncoding=euckr";
String dbUser = "dev35id";
String dbPass = "dev35pw";
conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
System.out.println(conn + "<-- conn m_update_form.jsp");
pstmt = conn.prepareStatement("select * from tb_member where m_id ='" + send_id + "'");
System.out.println(pstmt + "<-- pstmt m_update_form.jsp");
rs = pstmt.executeQuery();
System.out.println(rs + " <-- rs");
if(rs.next()){ //while이나 if (rs.next()) 조건문없이 rs.getString 호출시 Before start of result set 에러 발생함!
System.out.println("if 조건문 통과 완료");
%>
<form>
아이디 : <input type = "text" name = "m_id" value= "<%= send_id%>" readonly="readonly"><br>
패스워드 : <input type = "text" name = "m_pw" value = "<%= rs.getString("m_pw") %>" ><br>
권한 : <input type = "text" name = "m_level" value = "<%= rs.getString("m_level") %>"><br>
이름 : <input type = "text" name = "m_name" value = "<%= rs.getString("m_name") %>"><br>
이메일 : <input type = "text" name = "m_email" value = "<%= rs.getString("m_email") %>"><br>
<button type="button"> 수정완료 </button>
</form>
<%
}
}catch(SQLException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>
db에서 받은 값을 변수에 담아 처리과정 바깥에서 화면 출력하기
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>
<%
String send_id = request.getParameter("send_id");
System.out.println(send_id + "<-send_id");
String dbid = null;
String dbpw = null;
String dblevel = null;
String dbname = null;
String dbemail = null;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
Class.forName("com.mysql.jdbc.Driver");
try{
String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
"useUnicode=true&characterEncoding=euckr";
String dbUser = "dev35id";
String dbPass = "dev35pw";
conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
System.out.println(conn + "<-- conn m_update_form.jsp");
pstmt = conn.prepareStatement("select * from tb_member where m_id =?");
pstmt.setString(1, send_id);
System.out.println(pstmt +"<--pstmt");
rs = pstmt.executeQuery();
System.out.println(rs + "<-- rs");
if(rs.next()){
System.out.println("if 조건문 통과 완료");
dbid = rs.getString("m_id");
dbpw = rs.getString("m_pw");
dblevel = rs.getString("m_level");
dbname = rs.getString("m_name");
dbemail = rs.getString("m_email");
}
}catch(SQLException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>
<%------변수에 담은 값이 처리과정 바깥에서 출력되는지 확인-----------
테스트 dbid : <%= dbid %> <br/>
테스트 dbpw : <%=dbpw %> <br/>
테스트 dblevel : <%=dblevel %> <br/>
테스트 dbname : <%=dbname %> <br/>
테스트 dbemail : <%=dbemail %> <br/>
---------------------------------------------------%>
<form action="<%= request.getContextPath() %>/minsert/m_insert_pro.jsp" method="post">
<table border="1">
<tr>
<td>아이디</td>
<td><input type="text" name="m_id" size="20" value = "<%= dbid %>" readonly="readonly"></td>
<tr>
<tr>
<td>암호</td>
<td><input type="text" name="m_pw" size="20" value = "<%=dbpw %>"></td>
<tr>
<tr>
<td>권한</td>
<td><input type="text" name="m_level" size="20" value = "<%=dblevel %>"></td>
<tr>
<tr>
<td>이름</td>
<td><input type="text" name="m_name" size="20" value = "<%=dbname %>"></td>
<tr>
<tr>
<td>이메일</td>
<td><input type="text" name="m_email" size="20" value = "<%=dbemail %>" ></td>
<tr>
<tr>
<td colspan="4"><input type="submit" value="회원수정버튼"></td>
</tr>
</table>
</form>
'JSP' 카테고리의 다른 글
[JSP + MySQL] 검색 (0) | 2020.03.27 |
---|---|
[JSP + MySQL] PreparedStatement vs. Statement / Execute vs. ExecuteQuery vs. ExecuteUpdate (0) | 2020.03.26 |
[JSP+MySQL] list 불러오기 (0) | 2020.03.26 |
[JSP+MySQL] JSP + MySQL / JDBC (0) | 2020.03.19 |