오늘이라도
[Web] 9. JSP ③ : jsp06.jsp ~ jsp08jsp : 삭제 기능 추가, 회원 정보 수정 화면 구성 본문
취업성공패키지 SW 개발자 교육/Web
[Web] 9. JSP ③ : jsp06.jsp ~ jsp08jsp : 삭제 기능 추가, 회원 정보 수정 화면 구성
upcake_ 2020. 5. 19. 09:34반응형
▼MemberDAO.java
package com.hanul.study;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
public class MemberDAO {
private Connection conn; //연결 객체
private PreparedStatement ps; //전송 객체
private ResultSet rs; //결과 객체
//DB 접속
public Connection getConn() {
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
String user = "hanul";
String password = "0000";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
System.out.println("getConn() Exception!!!");
}
return conn;
} //getConn()
//회원가입
public int memberInsert(MemberDTO dto) {
conn = getConn();
String sql = "INSERT INTO member VALUES(?, ?, ?, ?, ?, ?)";
int succ = 0;
try {
ps = conn.prepareStatement(sql);
ps.setString(1, dto.getIrum());
ps.setString(2, dto.getId());
ps.setString(3, dto.getPw());
ps.setInt(4, dto.getAge());
ps.setString(5, dto.getAddr());
ps.setString(6, dto.getTel());
succ = ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
System.out.println("memberInsert() Exception!!!");
} finally {
dbClose();
}
return succ;
} //memberInsert()
// 전체 목록 검색
public ArrayList<MemberDTO> memberSearchAll() {
conn = getConn();
String sql = "SELECT * FROM member";
ArrayList<MemberDTO> list = new ArrayList<>();
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
String irum = rs.getString("irum");
String id = rs.getString("id");
String pw = rs.getString("pw");
int age = rs.getInt("age");
String addr = rs.getString("addr");
String tel = rs.getString("tel");
MemberDTO dto = new MemberDTO(irum, id, pw, age, addr, tel);
list.add(dto);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("memberSearchAll() Exception!!!");
} finally {
dbClose();
}
return list;
} // memberSearchAll()
//회원 정보 삭제
public int memberDelete(String id) {
conn = getConn();
String sql = "DELETE FROM member WHERE id = ?";
int succ = 0;
try {
ps = conn.prepareStatement(sql);
ps.setString(1, id);
succ = ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
System.out.println("memberDelete() Exception!!!");
} finally {
dbClose();
}
return succ;
}// memberDelete()
//회원 ID 검색
public MemberDTO getById(String id) {
conn = getConn();
String sql = "SELECT * FROM member WHERE id = ?";
MemberDTO dto = null;
try {
ps = conn.prepareStatement(sql);
ps.setString(1, id);
rs = ps.executeQuery();
if (rs.next()) {
String irum = rs.getString("irum");
id = rs.getString("id");
String pw = rs.getString("pw");
int age = rs.getInt("age");
String addr = rs.getString("addr");
String tel = rs.getString("tel");
dto = new MemberDTO(irum, id, pw, age, addr, tel);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("getById() Exception!!!");
} finally {
dbClose();
}
return dto;
} //getById()
//DB 접속 해제
public void dbClose() {
try {
if(rs != null) rs.close();
if(ps != null) ps.close();
if(conn != null) conn.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println("dbClose() Exception!!!");
}
} //dbClose()
}// class
▼jsp06.jsp : 회원 정보 조회 화면
<%@page import="com.hanul.study.MemberDTO"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.hanul.study.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- <jsp:useBean id="dao" class="com.hanul.study.MemberDAO" /> --%>
<%
MemberDAO dao = new MemberDAO();
ArrayList<MemberDTO> list = dao.memberSearchAll();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP06</title>
<script type="text/javascript">
function fnDel(id) {
// alert("id : " + id); // 함수가 제대로 작동하는지 확인
if(confirm("정말 삭제하시겠습니까?")) {
location.href = "jsp07.jsp?id=" + id;
}
return false;
}
</script>
</head>
<body>
<div align="center">
[전체 회원 목록 조회]<br />
<table border="1">
<tr>
<th>이름</th>
<th>아이디</th>
<th>비밀번호</th>
<th>나이</th>
<th>주소</th>
<th>전화번호</th>
<th colspan="4">삭제</th>
<!-- 삭제 방법 -->
<!-- 1 : 앵커 -->
<!-- 2 : 버튼 -->
<!-- 3 : 함수 -->
<!-- 4 : input type 버튼 + 함수 -->
<th>수정</th>
</tr>
<%for (MemberDTO dto : list) { %>
<tr align="center">
<td><%=dto.getIrum() %></td>
<td><%=dto.getId() %></td>
<td><%=dto.getPw() %></td>
<td><%=dto.getAge() %></td>
<td><%=dto.getAddr() %></td>
<td><%=dto.getTel() %></td>
<td><a href="jsp07.jsp?id=<%=dto.getId() %>">삭제1</a></td>
<td><button onclick="location.href='jsp07.jsp?id=<%=dto.getId() %>'">삭제2</button></td>
<!-- 삭제1과 삭제2는 확인창 없이 삭제가 바로 되므로 실수로 삭제할 수도 있다는 단점이 있다. -->
<td><button onclick="fnDel('<%=dto.getId() %>')">삭제3</button></td>
<!-- fnDel() 매개 변수를 반드시 작은 따옴표나 큰 따옴표로 묶어준다.-->
<!-- 묶지 않으면 문자로 된 id는 작동이 안된다. -->
<!-- button 태그는 form 내에서 submit 역할을 한다는 단점이 있다. -->
<td><input type="button" value="삭제4" onclick="fnDel('<%=dto.getId() %>')" /></td>
<td><input type="button" value="수정" onclick="location.href='jsp08.jsp?id=<%=dto.getId() %>'" /></td>
</tr>
<%} %>
<tr align="center">
<td colspan="11">
<input type="button" value="회원가입" onclick="location.href='jsp05Main.html'" />
</td>
</tr>
</table>
</div>
</body>
</html>
▼jsp07.jsp : 회원 정보 삭제
<%@page import="com.hanul.study.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
MemberDAO dao = new MemberDAO();
int succ = dao.memberDelete(id);
if(succ > 0) {
out.println("<script> alert('삭제 성공!');");
out.println("location.href = 'jsp06.jsp'; </script>");
} else {
out.println("<script> alert('삭제 실패!');");
out.println("location.href = 'jsp06.jsp'; </script>");
}
%>
- 수정 기능을 담당하는 jsp09.jsp를 작성하지 않아서 404 오류가 나온다.
▼jsp08.jsp : 회원 정보 수정 화면
<%@page import="com.hanul.study.MemberDTO"%>
<%@page import="com.hanul.study.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
MemberDAO dao = new MemberDAO();
MemberDTO dto = dao.getById(id);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP08</title>
<style type="text/css">
.in {
background-color: yellow;
}
</style>
<script type="text/javascript">
function fnUpdate() {
if(confirm("정말 수정하시겠습니까?")) {
return true;
}
return false;
}
function fnReset() {
if(confirm("정말 초기화하시겠습니까?")) {
return true;
}
return false;
}
</script>
</head>
<body>
<div align="center">
[회원 정보 수정 화면]<br />
<form action="jsp09.jsp" method="post" onsubmit="return fnUpdate()" onreset="return fnReset()">
<input type="hidden" name="id" value="<%=dto.getId() %>"/>
<!-- action으로 넘어갈때 name 속성을 가지고 넘어가는데 td의 아이디는 name이 없으므로 넘어가지 않는다. -->
<!-- id 전송을 위해 hidden 속성의 input 태그를 하나 만든다. -->
<table border="1">
<tr>
<th>이름</th>
<td><input type="text" name="irum" value="<%=dto.getIrum() %>" class="in"/></td>
</tr>
<tr>
<th>아이디</th>
<td><%=dto.getId() %></td>
</tr>
<tr>
<th>비밀번호</th>
<td><input type="password" name="pw" value="<%=dto.getPw() %>" class="in" /></td>
</tr>
<tr>
<th>나이</th>
<td><input type="number" name="age" value="<%=dto.getAge() %>" class="in"/></td>
</tr>
<tr>
<th>주소</th>
<td><input type="text" name="addr" value="<%=dto.getAddr() %>" class="in" /></td>
</tr>
<tr>
<th>전화번호</th>
<td><input type="text" name="tel" value="<%=dto.getTel() %>" class="in" /></td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="수정하기" />
<input type="reset" value="초기화하기" />
<input type="button" value="목록보기" onclick="location.href='jsp06.jsp'" />
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
반응형
'취업성공패키지 SW 개발자 교육 > Web' 카테고리의 다른 글
[Web] 11. Action Tag : param, include / 시간 출력 : Date, SimpleDateFormat / Scope : 객체 범위 (0) | 2020.05.21 |
---|---|
[Web] 10. JSP ④ : jsp09 ~ 12 : 수정 기능 추가 / JSP, Action Tag, EL 문법 출력 비교 (0) | 2020.05.20 |
[Web] 8. JSP ② : jsp03.jsp ~ jsp05.jsp (0) | 2020.05.18 |
[Web] 7. JSP (0) | 2020.05.15 |
[Web] 6. NCS 평가 프로젝트 : 작성 조건, 도서 정보 입력, 조회, 삭제 구현 (0) | 2020.05.13 |