본문 바로가기

Programming/국비학원

221027 - MVC - 회원정보 수정, 삭제 / 문의게시판 (미완)

회원가입
  • 회원정보 수정
  • listMembers.jsp 수정
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="contextPath" value="${pageContext.request.contextPath}"/>
<%
	request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원정보 출력</title>
<c:choose>
	<c:when test="${msg=='addMember'}"> ////
		<script>
			alert("회원을 등록했습니다");
		</script>
	</c:when>
	<c:when test="${msg=='modified'}"> ////
		<script>
			alert("정보가 수정됐습니다");
		</script>
	</c:when>	
	<c:when test="${msg=='deleted'}"> ////
		<script>
			alert("정보가 삭제됐습니다");
		</script>
	</c:when>		
</c:choose>
</head>
<body>
	<h2 align="center">회원정보</h2>
	<table align="center" border="1">
		<tr align="center" bgcolor="beige">
			<th>아이디</th><th>비밀번호</th><th>이름</th><th>이메일</th><th>가입일</th><th>수정</th><th>삭제</th>
		</tr>
		<c:choose>
			<c:when test="${empty memberList}">
				<tr>
					<td colspan="7" align="center">등록된 회원이 없습니다.</td>
				</tr>
			</c:when>
			<c:when test="${not empty memberList}">
				<c:forEach var="member" items="${memberList}">
					<tr align="center">
						<td>${member.id }</td>
						<td>${member.pwd }</td>
						<td>${member.name }</td>
						<td>${member.email }</td>
						<td>${member.joinDate }</td>
						<td><a href="${contextPath}/member/modMemberForm.do?id=${member.id}">수정</a></td> ////
						<td><a href="${contextPath}/member/delMember.do?id=${member.id}">삭제</a></td> ////
					</tr>
				</c:forEach>
			</c:when>
		</c:choose>
	</table>
	<p align="center"><a href="${contextPath}/member/memberForm.do">회원가입</a></p>
</body>
</html>

 

 

 

  • MemberController
package jspMVC.ex01;

import java.io.IOException;

import java.io.PrintWriter;
import java.util.List;

import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@WebServlet("/member/*")
public class MemberController extends HttpServlet {

	MemberDAO memberDAO;

	public void init(ServletConfig config) throws ServletException {
		memberDAO=new MemberDAO(); //모델 객체 생성
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doHandle(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doHandle(request, response);
	}

	private void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		String nextPage=null;
		String action = request.getPathInfo(); //URL 확장이 있는 리소스에 대한 추가 경로 정보
		System.out.println("요청명 : " + action);
		if (action==null||action.equals("/listMembers.do")) {
			List<MemberVO> memberList = memberDAO.listMembers();
			request.setAttribute("memberList", memberList);
			
			nextPage = "/listMembers.jsp";
		} else if (action.equals("/memberForm.do")) {
			nextPage="/memberForm.jsp";
		} else if (action.equals("/addMember.do")){
			String id = request.getParameter("id");
			String pwd = request.getParameter("pwd");
			String name = request.getParameter("name");
			String email = request.getParameter("email");
			
			MemberVO memberVO = new MemberVO(id,pwd,name,email);
			memberDAO.addMember(memberVO);
			
			request.setAttribute("msg", "addMember");
			
			nextPage="/member/listMembers.do";
            
		} else if (action.equals("/modMemberForm.do")) { //회원정보 수정 폼
        
			String id = request.getParameter("id");
			MemberVO memberVO = memberDAO.findMember(id); //id에 해당하는 회원 객체 가져옴
			request.setAttribute("memberInfo", memberVO);
			
			nextPage="/modMemberForm.jsp"; //포워드
            
		} else if (action.equals("/modMember.do")) { //submit, db 회원정보 수정
        
			String id = request.getParameter("id");
			String pwd = request.getParameter("pwd");
			String name = request.getParameter("name");
			String email = request.getParameter("email");
			MemberVO memberVO = new MemberVO(id,pwd,name,email);
			
			memberDAO.modMember(memberVO);
			request.setAttribute("msg", "modified");
			
			nextPage="/member/listMembers.do"; //포워드
            
		}
		
		RequestDispatcher rd = request.getRequestDispatcher(nextPage);
		rd.forward(request, response);
        
	}
	
}

 

 

 

  • MemberDAO
package jspMVC.ex01;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class MemberDAO {
	
	private DataSource dataFactory;
	private Connection con;
	private PreparedStatement ps;
	
	public MemberDAO() {
		try {
			Context ctx=new InitialContext();
			Context envContext=(Context)ctx.lookup("java:/comp/env");
			dataFactory=(DataSource) envContext.lookup("jdbc/oracle");
		}catch(Exception e){
			System.out.println("DB 연결 중 에러");
		}
	}
	
	//전체 회원정보 조회
	public List<MemberVO> listMembers(){
		List<MemberVO> memberList = new ArrayList();
		
		try {
			con=dataFactory.getConnection();
			String query="select * from member_list order by joindate desc";
			System.out.println(query);
			
			ps=con.prepareStatement(query);
			ResultSet rs = ps.executeQuery();
			
			while(rs.next()) {
				String id = rs.getString("id");
				String pwd = rs.getString("pwd");
				String name = rs.getString("name");
				String email = rs.getString("email");
				Date joinDate = rs.getDate("joindate");
				
				MemberVO memberVO = new MemberVO(id, pwd, name, email, joinDate);
				
				memberList.add(memberVO);
			}
			rs.close();
			ps.close();
			con.close();
		} catch(Exception e) {
			System.out.println("쿼리 작성 중 에러");
		}
		return memberList;
	}
	
	//회원가입
	public void addMember(MemberVO mem) {
		try {
			con=dataFactory.getConnection();
			
			String id = mem.getId();
			String pwd = mem.getPwd();
			String name = mem.getName();
			String email = mem.getEmail();
			
			String query="insert into member_list(id,pwd,name,email) values(?,?,?,?)";
			System.out.println(query);
			
			ps=con.prepareStatement(query);
			ps.setString(1, id);
			ps.setString(2, pwd);
			ps.setString(3, name);
			ps.setString(4, email);
			ps.executeUpdate();
			
			ps.close();
			con.close();
			
		}catch(Exception e) {
			System.out.println("DB 추가 중 에러");
		}
	}
	
	//일치하는 회원정보 찾기
	public MemberVO findMember(String _id) {
		
		MemberVO memberInfo=null;
		
		try {
			con=dataFactory.getConnection();
			String query = "select * from member_list where id=?"; ////
			ps=con.prepareStatement(query);
			ps.setString(1, _id);
			System.out.println(query);
			ResultSet rs = ps.executeQuery();
			
			rs.next();
			String id=rs.getString(1);
			String pwd = rs.getString(2);
			String name = rs.getString(3);
			String email = rs.getString(4);
			Date joinDate = rs.getDate(5);
			
			memberInfo = new MemberVO(id, pwd, name, email, joinDate); ////
			
			ps.close();
			con.close();
			rs.close();
		} catch (Exception e) {
			System.out.println("DB에서 회원정보 찾는 중 에러");
		}
		
		return memberInfo;
		
	}
	
	//회원정보 수정
	public void modMember(MemberVO mem) { ////
		
		try {
			String id = mem.getId();
			String pwd = mem.getPwd();
			String name = mem.getName();
			String email = mem.getEmail();
			
			con=dataFactory.getConnection();
			String query = "update member_list set pwd=?,name=?,email=? where id=?"; ////
			ps=con.prepareStatement(query);
			ps.setString(1, pwd);
			ps.setString(2, name);
			ps.setString(3, email);
			ps.setString(4, id);
			ps.executeUpdate();
			System.out.println(query);
			
			ps.close();
			con.close();
		} catch(Exception e) {
			System.out.println("DB에서 회원정보 수정 중 에러");
		}
				
	}

}

 

 

 

  • modMemberForm.jsp (회원정보 수정창)
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="contextPath" value="${pageContext.request.contextPath}"/>
<% request.setCharacterEncoding("utf-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입</title>
</head>
<body>
	<form action="${contextPath}/member/modMember.do?id=${memberInfo.id}" method="post"> ////
		<h2 align="center">회원정보 수정창</h2>
		<table align="center">
			<tr>
				<td width="200"><p align="right">아이디</p></td>
				<td width="400"><input type="text" name="id" value="${memberInfo.id}" disabled></td> ////
			</tr>
			<tr>
				<td width="200"><p align="right">비밀번호</td>
				<td width="400"><input type="text" name="pwd" value="${memberInfo.pwd}"></td> ////
			</tr>
			<tr>
				<td width="200"><p align="right">이름</p></td>
				<td width="400"><input type="text" name="name" value="${memberInfo.name}"></td> ////
			</tr>
			<tr>
				<td width="200"><p align="right">이메일</p></td>
				<td width="400"><input type="text" name="email" value="${memberInfo.email}"></td> ////
			</tr>		
			<tr>
				<td width="200"><p align="right">가입일</p></td>
				<td width="400"><input type="text" name="joinDate" value="${memberInfo.joinDate}" disabled></td> ////
			</tr>					
		</table>
		<input type="submit" value="수정하기"> <input type="reset" value="다시 입력">
	</form>
</body>
</html>

 

 

 

 

  • 회원정보 삭제
  • MemberController
package jspMVC.ex01;

import java.io.IOException;

import java.io.PrintWriter;
import java.util.List;

import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@WebServlet("/member/*")
public class MemberController extends HttpServlet {

	MemberDAO memberDAO;

	public void init(ServletConfig config) throws ServletException {
		memberDAO=new MemberDAO(); //모델 객체 생성
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doHandle(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doHandle(request, response);
	}

	private void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		String nextPage=null;
		String action = request.getPathInfo(); //URL 확장이 있는 리소스에 대한 추가 경로 정보
		System.out.println("요청명 : " + action);
		if (action==null||action.equals("/listMembers.do")) {
			List<MemberVO> memberList = memberDAO.listMembers();
			request.setAttribute("memberList", memberList);
			
			nextPage = "/listMembers.jsp";
		} else if (action.equals("/memberForm.do")) {
			nextPage="/memberForm.jsp";
		} else if (action.equals("/addMember.do")){
			String id = request.getParameter("id");
			String pwd = request.getParameter("pwd");
			String name = request.getParameter("name");
			String email = request.getParameter("email");
			
			MemberVO memberVO = new MemberVO(id,pwd,name,email);
			memberDAO.addMember(memberVO);
			
			request.setAttribute("msg", "addMember");
			
			nextPage="/member/listMembers.do";
		} else if (action.equals("/modMemberForm.do")) { //회원정보 수정 폼
			String id = request.getParameter("id");
			MemberVO memberVO = memberDAO.findMember(id); //id에 해당하는 회원 객체 가져옴
			request.setAttribute("memberInfo", memberVO);
			
			nextPage="/modMemberForm.jsp"; 
		} else if (action.equals("/modMember.do")) { //submit, db 회원정보 수정
			String id = request.getParameter("id");
			String pwd = request.getParameter("pwd");
			String name = request.getParameter("name");
			String email = request.getParameter("email");
			MemberVO memberVO = new MemberVO(id,pwd,name,email);
			
			memberDAO.modMember(memberVO);
			request.setAttribute("msg", "modified");
			
			nextPage="/member/listMembers.do";
            
		} else if (action.equals("/delMember.do")){ //회원정보 삭제
        
			String id = request.getParameter("id");
			memberDAO.delMember(id);
			request.setAttribute("msg", "deleted");
			nextPage="/member/listMembers.do";
            
		}
		
		RequestDispatcher rd = request.getRequestDispatcher(nextPage);
		rd.forward(request, response);
	}
	
}

 

 

 

  • MemberDAO
package jspMVC.ex01;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class MemberDAO {
	
	private DataSource dataFactory;
	private Connection con;
	private PreparedStatement ps;
	
	public MemberDAO() {
		try {
			Context ctx=new InitialContext();
			Context envContext=(Context)ctx.lookup("java:/comp/env");
			dataFactory=(DataSource) envContext.lookup("jdbc/oracle");
		}catch(Exception e){
			System.out.println("DB 연결 중 에러");
		}
	}
	
	//전체 회원정보 조회
	public List<MemberVO> listMembers(){
		List<MemberVO> memberList = new ArrayList();
		
		try {
			con=dataFactory.getConnection();
			String query="select * from member_list order by joindate desc";
			System.out.println(query);
			
			ps=con.prepareStatement(query);
			ResultSet rs = ps.executeQuery();
			
			while(rs.next()) {
				String id = rs.getString("id");
				String pwd = rs.getString("pwd");
				String name = rs.getString("name");
				String email = rs.getString("email");
				Date joinDate = rs.getDate("joindate");
				
				MemberVO memberVO = new MemberVO(id, pwd, name, email, joinDate);
				
				memberList.add(memberVO);
			}
			rs.close();
			ps.close();
			con.close();
		} catch(Exception e) {
			System.out.println("쿼리 작성 중 에러");
		}
		return memberList;
	}
	
	//회원가입
	public void addMember(MemberVO mem) {
		try {
			con=dataFactory.getConnection();
			
			String id = mem.getId();
			String pwd = mem.getPwd();
			String name = mem.getName();
			String email = mem.getEmail();
			
			String query="insert into member_list(id,pwd,name,email) values(?,?,?,?)";
			System.out.println(query);
			
			ps=con.prepareStatement(query);
			ps.setString(1, id);
			ps.setString(2, pwd);
			ps.setString(3, name);
			ps.setString(4, email);
			ps.executeUpdate();
			
			ps.close();
			con.close();
			
		}catch(Exception e) {
			System.out.println("DB 추가 중 에러");
		}
	}
	
	//일치하는 회원정보 찾기
	public MemberVO findMember(String _id) {
		
		MemberVO memberInfo=null;
		
		try {
			con=dataFactory.getConnection();
			String query = "select * from member_list where id=?";
			ps=con.prepareStatement(query);
			ps.setString(1, _id);
			System.out.println(query);
			ResultSet rs = ps.executeQuery();
			
			rs.next();
			String id=rs.getString("id");
			String pwd = rs.getString("pwd");
			String name = rs.getString("name");
			String email = rs.getString("email");
			Date joinDate = rs.getDate("joindate");
			
			memberInfo = new MemberVO(id, pwd, name, email, joinDate);
			
			ps.close();
			con.close();
			rs.close();
		} catch (Exception e) {
			System.out.println("DB에서 회원정보 찾는 중 에러");
		}
		
		return memberInfo;
		
	}
	
	//회원정보 수정
	public void modMember(MemberVO mem) {
		
		try {
			String id = mem.getId();
			String pwd = mem.getPwd();
			String name = mem.getName();
			String email = mem.getEmail();
			
			con=dataFactory.getConnection();
			String query = "update member_list set pwd=?,name=?,email=? where id=?";
			ps=con.prepareStatement(query);
			ps.setString(1, pwd);
			ps.setString(2, name);
			ps.setString(3, email);
			ps.setString(4, id);
			ps.executeUpdate();
			System.out.println(query);
			
			ps.close();
			con.close();
		} catch(Exception e) {
			System.out.println("DB에서 회원정보 수정 중 에러");
		}
				
	}
	
	//회원정보 삭제
	public void delMember(String id) { ////
		try {
			con=dataFactory.getConnection();
			String query = "delete from member_list where id=?"; ////
			ps=con.prepareStatement(query);
			ps.setString(1, id);
			ps.executeUpdate();
			System.out.println(query);
			
			ps.close();
			con.close();
		}catch(Exception e) {
			System.out.println("데이터 삭제 중 오류");
		}
	}

}

 

 

 

 

문의게시판

board_qna 테이블 생성 => 제약조건 - 외래키 추가 (fk_id)

쿼리 작성, 목록 완성해두기

insert into board_qna (articleno, parentno, title, content, imagefile, writedate, id) 
values(2,0,'상품후기','후기입니다',null,sysdate,'park');

insert into board_qna (articleno, parentno, title, content, imagefile, writedate, id) 
values(3,2,'좋아요','저도 샀는데 좋습니다',null,sysdate,'kim');

insert into board_qna (articleno, parentno, title, content, imagefile, writedate, id) 
values(4,0,'배송이 늦어요','언제 도착하나요',null,sysdate,'han');

insert into board_qna (articleno, parentno, title, content, imagefile, writedate, id) 
values(5,4,'저도 못 받았습니다','빨리 배송해주세요',null,sysdate,'hong');

insert into board_qna (articleno, parentno, title, content, imagefile, writedate, id) 
values(6,5,'빨리 배송드리겠습니다','죄송합니다',null,sysdate,'baek');

insert into board_qna (articleno, parentno, title, content, imagefile, writedate, id) 
values(7,0,'테스트글','안녕하세요',null,sysdate,'hong');


※ 톰캣9 설치

 

 

 

 

 

  • 글 목록 보기
  • BoardController
package jspMVC.ex02;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
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 jspMVC.ex01.MemberDAO;

@WebServlet("/board/*")
public class BoardController extends HttpServlet {

	BoardService bs;
	ArticleVO vo;
	
	public void init(ServletConfig config) throws ServletException {
		bs= new BoardService();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doHandle(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doHandle(request, response);
	}
	
	private void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String nextPage = "";
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		String action=request.getPathInfo(); //요청명 가져옴
		System.out.println(action);
		
		List<ArticleVO> articleList = new ArrayList<ArticleVO>();
		
		if (action==null||action.equals("/listArticles.do")) {
			articleList = bs.listArticles();
		}
		
		RequestDispatcher rd = request.getRequestDispatcher(nextPage);
		rd.forward(request, response);
	}

}

 

 

 

  • BoardService
package jspMVC.ex02;

import java.util.List;

public class BoardService {

	BoardDAO boardDAO;
	
	public BoardService() {
		boardDAO = new BoardDAO();
	}
	
	public List<ArticleVO> listArticles(){
		List<ArticleVO> articleList = boardDAO.selectAllArticles();
		return articleList;
		
	}
	
}

 

 

 

  • BoardDAO
package jspMVC.ex02;

import java.util.ArrayList;
import java.util.List;

public class BoardDAO {

	//게시판 글 목록
	public List<ArticleVO> selectAllArticles(){
		List<ArticleVO> articleList = new ArrayList<ArticleVO>();
		return articleList;
	}
	
}