JSP(Example)_Member

2024. 12. 13. 17:07·JSP/기초 내용 정리

2024-12-13

main.jsp

 

====================================== 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">&nbsp;&nbsp;
		<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()%>'">&nbsp;&nbsp;
			
		<input type="button" value="회원삭제"
			onclick="if (confirm('정말로 회원을 삭제하시겠습니까?')) {
						location.href='delete.go?no=<%=cont.getNum()%>'
					} else {return;}">&nbsp;&nbsp;
					
		<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="회원수정">&nbsp;&nbsp; 
					<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="회원추가">&nbsp;&nbsp; 
					<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
'JSP/기초 내용 정리' 카테고리의 다른 글
  • JSP(DBCP)_00
  • JSP(Example)_EMP
  • JSP(Session)_01
  • JSP(Session)_00
mw41817
mw41817
일생의 개발 기록 저장소
  • mw41817
    IT 개발 일지
    mw41817
    • Index (487)
      • HTML (36)
        • 기초 내용 정리 (36)
      • CSS (29)
        • 기초 내용 정리 (29)
      • JavaScript (60)
        • 기초 내용 정리 (60)
      • JQuery (38)
        • 기초 내용 정리 (38)
      • Java (232)
        • 기초 내용 정리 (232)
      • JSP (46)
        • 기초 내용 정리 (46)
      • Spring, Boot (31)
        • 기초 내용 정리 (31)
      • DB (5)
        • Oracle SQL (5)
      • Code WorkBook (6)
        • programmers (6)
        • Baekjoon (0)
      • 기타 (1)
        • 유용한 사이트 (3)
  • 전체
    오늘
    어제
  • 글쓰기 관리
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 카테고리
    • 주인장 GitHub
  • 공지사항

  • 인기 글

  • 태그

    html #코딩 #프로그래밍 #기초
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
mw41817
JSP(Example)_Member
상단으로

티스토리툴바