2024-12-13

====================================== main.jsp ======================================
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<hr width="30%" color="blue">
<h3>MEMBER10 테이블 메인 페이지</h3>
<hr width="30%" color="blue">
<br> <br>
<%-- request.getContextPath() : 현재 프로젝트명을 문자열로 반환해 주는 메서드. url에서 확인 가능 --%>
<a href="<%= request.getContextPath() %>/select.go">[전체 회원 목록]</a>
</div>
</body>
</html>
==================== MemberDTO.java ====================
package model;
public class MemberDTO {
private int num;
private String memid;
private String memname;
private String pwd;
private int age;
private int mileage;
private String job;
private String addr;
private String regdate;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getMemid() {
return memid;
}
public void setMemid(String memid) {
this.memid = memid;
}
public String getMemname() {
return memname;
}
public void setMemname(String memname) {
this.memname = memname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getMileage() {
return mileage;
}
public void setMileage(int mileage) {
this.mileage = mileage;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getRegdate() {
return regdate;
}
public void setRegdate(String regdate) {
this.regdate = regdate;
}
}
==================== MemberDAO.java ====================
package model;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/*
* DAO(Data Access Object)
* - 데이터 접근 객체 ==> DB에 접속(연동)하는 객체.
* - DAO란 데이터베이스에 접속해서 데이터를 추가, 수정,
* 삭제, 조회 등의 작업을 하는 클래스
* - 일반적으로 JSP또는 Servlet 에서 위의 작업들을
* 같이 사용할 수도 있지만, 중복 코드 발생 및 유지보수,
* 코드의 모듈화 등을 위해서 일반적으로 DAO 클래스를
* 따로 만들어서 사용을 함.
*/
public class MemberDAO {
// DB와 연동하는 객체
Connection con = null;
// DB에 SQL문을 전송하는 객체
PreparedStatement pstmt = null;
// SQL문을 실행한 후에 결과 값을 가지고 있는 객체
ResultSet rs = null;
// SQL문을 저장할 문자열 변수.
String sql = null;
public MemberDAO() { // 기본 생성자
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "basic";
String password = "1234";
try {
// 1단계 : 오라클 드라이버를 메모리로 로딩.
Class.forName(driver);
// 2단계 : 오라클 데이터베이스와 연동 작업 진행
con = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// member10 테이블에서 회원 전체 목록을 조회하는 메서드
public List<MemberDTO> getMemberList() {
List<MemberDTO> list = new ArrayList<MemberDTO>();
try {
// 3단계 : 데이터베이스에 전송할 SQL문 작성
sql = "select * from member10 order by num desc";
pstmt = con.prepareStatement(sql);
// 4단계 : SQL문을 데이터베이스에 전송 및 실행.
rs = pstmt.executeQuery();
while (rs.next()) {
MemberDTO dto = new MemberDTO();
dto.setNum(rs.getInt("num")); // 여기서 "num"은 컬럼명
dto.setMemid(rs.getString("memid"));
dto.setMemname(rs.getString("memname"));
dto.setPwd(rs.getString("pwd"));
dto.setAge(rs.getInt("age"));
dto.setMileage(rs.getInt("mileage"));
dto.setJob(rs.getString("job"));
dto.setAddr(rs.getString("addr"));
dto.setRegdate(rs.getString("regdate"));
list.add(dto);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
// 5단계 : 데이터베이스와 연결되어 있던 자원 종료하기.
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (con != null) con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return list;
} // getMemberList() 메서드 end
// member10 테이블에 회원을 추가해 주는 메서드.
public int insertMember(MemberDTO dto) {
int result = 0, count = 0;
try {
// 3단계 : 데이터베이스에 전송할 SQL문 작성
sql = "select max(num) from member10";
pstmt = con.prepareStatement(sql);
// 4단계 : SQL문을 데이터베이스에 전송 및 실행.
rs = pstmt.executeQuery();
if (rs.next()) { // 값이 1개이기 때문에 while 이 아닌 if 사용
count = rs.getInt(1);
}
// 3단계 : 데이터베이스에 전송할 SQL문 작성
sql = "insert into member10 values(?, ?, ?, ?, ?, ?, ?, ?, sysdate)";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, count + 1);
pstmt.setString(2, dto.getMemid());
pstmt.setString(3, dto.getMemname());
pstmt.setString(4, dto.getPwd());
pstmt.setInt(5, dto.getAge());
pstmt.setInt(6, dto.getMileage());
pstmt.setString(7, dto.getJob());
pstmt.setString(8, dto.getAddr());
// 4단계 : SQL문을 데이터베이스에 전송 및 실행.
result = pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
// 5단계 : 데이타베이스와 연결되어 있던 자원 종료하기.
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (con != null) con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
} // insertMember() 메서드 end
// 회원 번호에 해당하는 회원의 정보를 조회하는 메서드.
public MemberDTO getMember(int no) {
MemberDTO dto = null;
try {
// 3단계 : 데이터베이스에 전송할 SQL문 작성.
sql = "select * from member10 where num = ?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, no);
// 4단계 : SQL문을 데이터베이스에 전송 및 실행
rs = pstmt.executeQuery();
if (rs.next()) { // 출력할 레코드가 한 줄이기에 if문 사용
dto = new MemberDTO();
dto.setNum(rs.getInt("num")); // 여기서 "num"은 컬럼명
dto.setMemid(rs.getString("memid"));
dto.setMemname(rs.getString("memname"));
dto.setPwd(rs.getString("pwd"));
dto.setAge(rs.getInt("age"));
dto.setMileage(rs.getInt("mileage"));
dto.setJob(rs.getString("job"));
dto.setAddr(rs.getString("addr"));
dto.setRegdate(rs.getString("regdate"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
// 5단계 : 데이타베이스와 연결되어 있던 자원 종료하기.
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
//if (con != null) con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return dto;
} // getMember() 메서드 end
// 회원 번호에 해당하는 회원의 정보를 수정하는 메서드.
public int updateMember(MemberDTO dto) {
int result = 0;
try {
// 3단계 : 데이터베이스에 전송할 SQL문 작성.
sql = "update member10 set age = ?, mileage = ?, job = ?, addr = ? where num = ?";
// 4단계 : SQL문을 데이터베이스 전송 객체의 인자로 전달.
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, dto.getAge());
pstmt.setInt(2, dto.getMileage());
pstmt.setString(3, dto.getJob());
pstmt.setString(4, dto.getAddr());
pstmt.setInt(5, dto.getNum());
// 5단계 : SQL문을 데이터베이스에 전송 및 실행.
result = pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
// 6단계 : 데이타베이스와 연결되어 있던 자원 종료하기.
if (pstmt != null) pstmt.close();
if (con != null) con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
} // updateMember() 메서드 end
// 회원 번호에 해당하는 회원을 테이블에서 삭제하는 메서드
public int deleteMember(int no) {
int result = 0;
try {
// 3단계 : 데이터베이스에 전송할 SQL문 작성
sql = "delete from member10 where num = ?";
// 4단계 : SQL문을 데이터베이스 전송 객체에 인자로 전달
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, no);
// 5단계 : SQL문을 데이터베니스에 전송 및 실행.
result = pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
// 6단계 : 데이타베이스와 연결되어 있던 자원 종료하기.
if (pstmt != null) pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
} // deleteMember() 메서드 end
// 회원 번호를 재작업 해 주는 메서드.
public void updateSequence(int no) {
try {
// 3단계 : 데이터베이스에 전송할 SQL 문 작성
sql = "update member10 set num = num -1 where num > ?";
// 4단계 : SQL문을 데이터베이스 전송 객체에 인자로 전달.
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, no);
// 5단계 : SQL문을 데이터베이스에 전송 및 실행.
pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
// 6단계 : 데이타베이스와 연결되어 있던 자원 종료하기.
if (pstmt != null) pstmt.close();
if (con != null) con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} // updateSequence() 메서드 end
// 검색어에 해당하는 회원을 조회하는 메서드.
public List<MemberDTO> searchMemberList(String field, String keyword) {
List<MemberDTO> searchList = new ArrayList<MemberDTO>();
try {
// 3단계 : 데이터베이스에 전송할 SQL문 작성
sql = "select * from member10";
if (field.equals("id")) {
sql += " where memid like ?";
} else if (field.equals("name")) {
sql += " where memname like ?";
} else if (field.equals("job")) {
sql += " where job like ?";
} else {
sql += " where addr like ?";
}
sql += " order by num desc";
// 4단계 : SQL문을 데이터베이스 전송 객체의 인자로 전달.
pstmt = con.prepareStatement(sql);
pstmt.setString(1, "%" + keyword + "%");
// 5단계 : SQL문을 데이터베이스에 전송 및 실행.
rs = pstmt.executeQuery();
while (rs.next()) {
MemberDTO dto = new MemberDTO();
dto.setNum(rs.getInt("num")); // 여기서 "num"은 컬럼명
dto.setMemid(rs.getString("memid"));
dto.setMemname(rs.getString("memname"));
dto.setPwd(rs.getString("pwd"));
dto.setAge(rs.getInt("age"));
dto.setMileage(rs.getInt("mileage"));
dto.setJob(rs.getString("job"));
dto.setAddr(rs.getString("addr"));
dto.setRegdate(rs.getString("regdate"));
searchList.add(dto);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
// 6단계 : 데이터베이스와 연결되어 있던 자원 종료하기.
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (con != null) con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return searchList;
} // searchMemberList() 메서드 end
}
==================== SelectServlet.java ====================
package controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.MemberDAO;
import model.MemberDTO;
@WebServlet("/select.go")
public class SelectServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public SelectServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 요청 : 전체 회원 목록을 화면에 보여달라고 클라이언트가 요청.
// 응답 : DB에서 member10 테이블의 회원 전체 리스르를 조회하여 전체 회원을 view page로 이동시키는 비지니스 로직.
// 1단계 : DB와 연동 작업 진행.
MemberDAO dao = new MemberDAO();
// 2단계 : member10 테이블의 회원 전체 목록 조회.
List<MemberDTO> memberList = dao.getMemberList();
// 3단계 : DB에서 가져온 회원 전체 목록을 view page로 이동시켜주면 됨.
// 바인딩 작업이 필요함
request.setAttribute("List", memberList);
// 4단계 : 페이지 이동 경로 및 페이지 이동 작업 진행
request.getRequestDispatcher("view/member_list.jsp").forward(request, response);
}
}
==================== member_list.jsp ====================
<%@page import="model.MemberDTO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
List<MemberDTO> members = (List<MemberDTO>)request.getAttribute("List");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<hr width="30%" color="red">
<h3>MEMBER10 테이블 전체 회원 목록 페이지</h3>
<hr width="30%" color="red">
<br> <br>
<table border="1" width="450">
<tr>
<th>회원 No.</th> <th>회원 이름</th>
<th>회원 직업</th> <th>회원 등록일</th> <th>상세 정보</th>
</tr>
<%
if (members.size() != 0) {
for (int i = 0; i < members.size(); i++) {
MemberDTO member = members.get(i);
%> <tr>
<td><%= member.getNum() %></td>
<td><%= member.getMemname() %></td>
<td><%= member.getJob() %></td>
<td><%= member.getRegdate().substring(0, 10) %></td>
<td> <input type="button" value="상세정보"
onclick="location.href='content.go?no=<%=member.getNum()%>'"> </td>
</tr>
<% } // for 문 end
} else {
// 회원 리스트가 없는 경우
%>
<tr>
<td colspan="5" align="center">
<h3>회원 전체 목록이 없습니다...</h3>
</td>
</tr>
<% }
%>
</table>
<br>
<input type="button" value="회원추가"
onclick="location.href='view/member_insert.jsp'">
<br> <br>
<%-- 검색 처리 --%>
<form method="post" action="<%=request.getContextPath()%>/search.go">
<%-- 검색 조건 : 이름, 아아디, 직업, 주소 --%>
<select name="field">
<option value="id">아이디</option>
<option value="name">이름</option>
<option value="job">직업</option>
<option value="addr">주소</option>
</select>
<input type="text" name="keyword">
<input type="submit" value="검색">
</form>
</div>
</body>
</html>
==================== ContentServlet.java ====================
package controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.MemberDAO;
import model.MemberDTO;
@WebServlet("/content.go")
public class ContentServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ContentServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 요청 : 회원 번호에 해당하는 회원의 상세정보를 보여달라고 요청.
// 응답 : 회원 번호에 해당하는 회원의 상세정보를 DB에서 조회하여 조회된 정보를 view page로 이동시키는 비지니스 로직.
int member_no = Integer.parseInt(request.getParameter("no"));
// 1단계 : 데이터베이스와 연동 진행
MemberDAO dao = new MemberDAO();
// 2단계 : 회원번호에 해당하는 회원의 상세정보를 조회하는 메서드 호출.
MemberDTO cont = dao.getMember(member_no);
request.setAttribute("Content", cont);
// 3단계 : 회원정보를 view page로 이동.
request.getRequestDispatcher("view/member_content.jsp").forward(request, response);
}
}
==================== member_content.jsp ====================
<%@page import="model.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
MemberDTO cont = (MemberDTO)request.getAttribute("Content");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<hr width="30%" color="maroon">
<h3>MEMBER10 테이블 상세 정보 페이지</h3>
<hr width="30%" color="maroon">
<br> <br>
<table border="1" width="400">
<%
if (cont == null) {
%> <tr colspan="2" align="center">
<td>
<h3>조회된 회원의 정보가 없습니다...</h3>
</td>
</tr>
<% } else {
// 회원 정보가 있는 경우
%>
<tr>
<th>회원 No.</th>
<td><%=cont.getNum() %></td>
</tr>
<tr>
<th>회원 아이디</th>
<td><%=cont.getMemid() %></td>
</tr>
<tr>
<th>회원 이름</th>
<td><%=cont.getMemname() %></td>
</tr>
<tr>
<th>회원 비밀번호</th>
<td>
<%
if (cont.getPwd().length() != 0) {
for (int i = 1; i < cont.getPwd().length(); i++) {
%> *
<% }
}
%>
</td>
</tr>
<tr>
<th>회원 나이</th>
<td><%=cont.getAge() %></td>
</tr>
<tr>
<th>회원 마일리지</th>
<td><%=cont.getMileage() %></td>
</tr>
<tr>
<th>회원 직업</th>
<td><%=cont.getJob() %></td>
</tr>
<tr>
<th>회원 주소</th>
<td><%=cont.getAddr() %></td>
</tr>
<tr>
<th>회원 등록일</th>
<td><%=cont.getRegdate() %></td>
</tr>
<%}
%>
</table>
<br>
<input type="button" value="회원수정"
onclick="location.href='update.go?no=<%=cont.getNum()%>'">
<input type="button" value="회원삭제"
onclick="if (confirm('정말로 회원을 삭제하시겠습니까?')) {
location.href='delete.go?no=<%=cont.getNum()%>'
} else {return;}">
<input type="button" value="회원목록"
onclick="location.href='select.go'">
</div>
</body>
</html>
==================== UpdateServlet.java ====================
package controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.MemberDAO;
import model.MemberDTO;
@WebServlet("/update.go")
public class UpdateServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public UpdateServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// get 방식으로 넘어온 회원 번호에 해당하는 회원의 정보를 DB에서 조회하여 수정
// 폼 페이지(view page)로 이동시키는 비지니스 로직.
int member_no = Integer.parseInt(request.getParameter("no"));
// 1단계 : 데이터베이스와 연동 작업
MemberDAO dao = new MemberDAO();
// 2단계 : 회원 번호에 해당하는 회원의 상세정보를 조회.
MemberDTO content = dao.getMember(member_no);
request.setAttribute("Modify", content);
request.getRequestDispatcher("view/member_modify.jsp").forward(request, response);
}
}
==================== member-modify.jsp ====================
<%@page import="model.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
MemberDTO content = (MemberDTO)request.getAttribute("Modify");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<hr width="30%" color="gray">
<h3><%=content.getMemname()%> 회원 수정 폼 페이지</h3>
<hr width="30%" color="gray">
<br> <br>
<form method="post" action="<%= request.getContextPath() %>/modify_ok.go">
<table border="1" width="350">
<tr>
<th>회원 No.</th>
<td> <input type="text" name="mem_num"
readonly value="<%=content.getNum()%>"> </td>
</tr>
<tr>
<th>회원 아이디</th>
<td> <input type="text" name="mem_id"
readonly value="<%=content.getMemid()%>"> </td>
</tr>
<tr>
<th>회원 이름</th>
<td> <input type="text" name="mem_name"
readonly value="<%=content.getMemname()%>"> </td>
</tr>
<tr>
<th>회원 비밀번호</th>
<td> <input type="text" name="mem_pwd"> </td>
</tr>
<tr>
<th>회원 나이</th>
<td> <input type="text" name="mem_age"
value=<%=content.getAge() %>> </td>
</tr>
<tr>
<th>회원 마일리지</th>
<td> <input type="text" name="mem_mileage"
value=<%=content.getMileage() %>> </td>
</tr>
<tr>
<th>회원 직업</th>
<td> <input type="text" name="mem_job"
value=<%=content.getJob() %>> </td>
</tr>
<tr>
<th>회원 주소</th>
<td> <input type="text" name="mem_addr"
value=<%=content.getAddr() %>> </td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="회원수정">
<input type="reset" value="다시작성">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
==================== UpdateOkServlet.java ====================
package controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.MemberDAO;
import model.MemberDTO;
@WebServlet("/modify_ok.go")
public class UpdateOkServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public UpdateOkServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 수정 폼 페이지에서 넘어온 글번호에 해당하는 데이터들을 DB에 수정시키는 비지니스 로직.
// 한글 깨짐 방지 설정 작업.
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
// 1단계 : 수정 폼 페이지에서 넘어온 데이터들을 받아 주어야 한다.
int member_num = Integer.parseInt(request.getParameter("mem_num").trim());
String member_id = request.getParameter("mem_id").trim();
String member_name = request.getParameter("mem_name").trim();
String member_pwd = request.getParameter("mem_pwd").trim();
int member_age = Integer.parseInt(request.getParameter("mem_age").trim());
int member_mileage = Integer.parseInt(request.getParameter("mem_mileage").trim());
String member_job = request.getParameter("mem_job").trim();
String member_addr = request.getParameter("mem_addr").trim();
// 2단계 : 1단계에서 넘어온 데이터들을 DTO 객체에 저장을 하자.
MemberDTO dto = new MemberDTO();
dto.setNum(member_num);
dto.setMemid(member_id);
dto.setMemname(member_name);
dto.setPwd(member_pwd);
dto.setAge(member_age);
dto.setMileage(member_mileage);
dto.setJob(member_job);
dto.setAddr(member_addr);
// 3단계 : 데이터베이스에 저장하는 메서드 호출.
MemberDAO dao = new MemberDAO();
MemberDTO cont = dao.getMember(member_num);
PrintWriter out = response.getWriter();
if (member_pwd.equals(cont.getPwd())) {
int check = dao.updateMember(dto);
if (check > 0) {
out.println("<script>");
out.println("alert('회원정보 수정 성공!!!')");
out.println("location.href='content.go?no=" + dto.getNum() + "'");
out.println("</script>");
} else {
out.println("<script>");
out.println("alert('회원정보 수정 실패~~~')");
out.println("history.back()");
out.println("</script>");
}
} else {
// 비밀번호가 틀린 경우
out.println("<script>");
out.println("alert('비밀번호가 틀립니다!!!')");
out.println("history.back()");
out.println("</script>");
}
}
}
==================== DeleteServlet.java ====================
package controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.MemberDAO;
@WebServlet("/delete.go")
public class DeleteServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public DeleteServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// get 방식으로 넘어온 회원 번호에 해당하는 회원을 member10 테이블에서 삭제하는 비지니스 로직.
int member_no = Integer.parseInt(request.getParameter("no").trim());
MemberDAO dao = new MemberDAO();
int check = dao.deleteMember(member_no);
// 한글 깨짐 방지 설정 작업.
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
if (check > 0) {
dao.updateSequence(member_no);
out.println("<script>");
out.println("alert('회원 삭제 성공!!!')");
out.println("location.href='select.go'");
out.println("</script>");
} else {
out.println("<script>");
out.println("alert('회원 삭제 실패~~~')");
out.println("history.back()");
out.println("</script>");
}
}
}
==================== member_insert.jsp ====================
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<hr width="30%" color="maroon">
<h3>MEMBER10 테이블 회원 등록 폼 페이지</h3>
<hr width="30%" color="maroon">
<br> <br>
<form method="post" action="<%= request.getContextPath() %>/insert_ok.go">
<table border="1" width="350">
<tr>
<th>회원 아이디</th>
<td> <input type="text" name="id"> </td>
</tr>
<tr>
<th>회원 이름</th>
<td> <input type="text" name="name"> </td>
</tr>
<tr>
<th>회원 비밀번호</th>
<td> <input type="text" name="pwd"> </td>
</tr>
<tr>
<th>회원 나이</th>
<td> <input type="text" name="age"> </td>
</tr>
<tr>
<th>회원 마일리지</th>
<td> <input type="text" name="mileage"> </td>
</tr>
<tr>
<th>회원 직업</th>
<td> <input type="text" name="job"> </td>
</tr>
<tr>
<th>회원 주소</th>
<td> <input type="text" name="addr"> </td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="회원추가">
<input type="reset" value="다시작성">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
==================== InsertServlet.java ====================
package controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.MemberDAO;
import model.MemberDTO;
@WebServlet("/insert_ok.go")
public class InsertServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public InsertServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 요청 : member10 테이블에 입력 폼 페이지에서 넘어온 데이터들을 저장하는 요청.
// 응답 : 입력 폼 페이지에서 넘어온 데이터들을 DB에 저장하는 비즈니스 로직.
// 한글 깨짐 방지 작업 설정
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
// 1단계 : 회원 등록 폼 페이지에서 넘어온 데이터들을 받아 주어야 한다.
String member_id = request.getParameter("id").trim();
String member_name = request.getParameter("name").trim();
String member_pwd = request.getParameter("pwd").trim();
int member_age = Integer.parseInt(request.getParameter("age").trim());
int member_mileage = Integer.parseInt(request.getParameter("mileage").trim());
String member_job = request.getParameter("job").trim();
String member_addr = request.getParameter("addr").trim();
// 2단계 : DB에 전송할 DTO 객체의 setter() 메서드의 인자로 파라미터로 넘어온 데이터들을 저장해 준다.
MemberDTO dto = new MemberDTO();
dto.setMemid(member_id);
dto.setMemname(member_name);
dto.setPwd(member_pwd);
dto.setAge(member_age);
dto.setMileage(member_mileage);
dto.setJob(member_job);
dto.setAddr(member_addr);
// 3단계 : DAO 객체를 생성하여 DB와 연결 작업을 진행한다.
MemberDAO dao = new MemberDAO();
// 4단계 : DAO 객체의 메서드 호출 시 인자로 DTO 객체를 넘겨준다.
int check = dao.insertMember(dto);
PrintWriter out = response.getWriter();
if (check > 0) {
out.println("<script>");
out.println("alert('회원 등록 성공!!!')");
out.println("location.href='select.go'");
out.println("</script>");
} else {
out.println("<script>");
out.println("alert('회원 등록 실패~~~')");
out.println("history.back()");
out.println("</script>");
}
}
}
==================== SearchServlet.java ====================
package controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.MemberDAO;
import model.MemberDTO;
@WebServlet("/search.go")
public class SearchServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public SearchServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 검색어를 입력받아서 검색어에 해당하는 회원의 리스트를 member20 테이블에서
// 조회하여 view page로 이동시키는 비즈니스 로직.
// 한글 깨짐 방지 설정 작업.
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
String search_field = request.getParameter("field").trim();
String search_keyword = request.getParameter("keyword").trim();
MemberDAO dao = new MemberDAO();
List<MemberDTO> searchList = dao.searchMemberList(search_field, search_keyword);
request.setAttribute("Search", searchList);
request.getRequestDispatcher("view/member_searchList.jsp").forward(request, response);
}
}
==================== member_searchList.jsp ====================
<%@page import="model.MemberDTO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
List<MemberDTO> searches = (List<MemberDTO>)request.getAttribute("Search");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<hr width="30%" color="red">
<h3>MEMBER10 테이블 검색 목록 페이지</h3>
<hr width="30%" color="red">
<br> <br>
<table border="1" width="800">
<tr>
<th>회원 No.</th> <th>회원 id</th> <th>회원 이름</th>
<th>회원 나이</th> <th>회원 마일리지</th> <th>회원 직업</th>
<th>회원 주소</th> <th>회원 등록일</th>
</tr>
<%
if (searches.size() != 0) {
for (int i = 0; i < searches.size(); i++) {
MemberDTO member = searches.get(i);
%>
<tr>
<td><%= member.getNum() %></td>
<td><%= member.getMemid() %></td>
<td><%= member.getMemname() %></td>
<td><%= member.getAge() %></td>
<td><%= member.getMileage() %></td>
<td><%= member.getJob() %></td>
<td><%= member.getAddr() %></td>
<td><%= member.getRegdate().substring(0, 10) %></td>
</tr>
<% } // for 문 end
} else {
// 검색된 데이터가 없는 경우
%>
<tr>
<td colspan="8" align="center">
<h3>검색된 회원 목록이 없습니다.....</h3>
</td>
</tr>
<% } // if 문 end
%>
</table>
<br>
<input type="button" value="회원목록"
onclick="location.href='select.go'">
</div>
</body>
</html>







'JSP > 기초 내용 정리' 카테고리의 다른 글
| JSP(DBCP)_00 (1) | 2024.12.19 |
|---|---|
| JSP(Example)_EMP (0) | 2024.12.17 |
| JSP(Session)_01 (0) | 2024.12.12 |
| JSP(Session)_00 (0) | 2024.12.12 |
| JSP(JSP)_09 (0) | 2024.12.12 |