[MVC2 게시판] 3. 회원관리
2016. 11. 25. 17:25ㆍProgramming/JSP
<배운 것>
1) C태그와 EL태그로 객체 배열 출력
<c:forEach items="${memList}" var="mem">
<tr>
<td>${mem.num}</td>
2) DB 정보를 객체 배열에 담기
List<Member> list = dao.selectAllMember();//컨트롤러에서
while(rs.next()){ //DAO에서
Member mem = new Member();
mem.setNum(rs.getInt("num"));
list.add(mem);
return list;
req.setAttribute("memList", list);//컨트롤러에서
3) request 객체로 현재 URL 경로 찾기
request.getContextPath() => 프로젝트명 출력
request.getRequestURI() => 프로젝트명/파일명
request.getRequestURL() => http://localhost:8886/프로젝트명/파일명
request.ServletPath() => 파일명
request.getRealPath("") => 파일의 절대 경로
<1. 회원 리스트>
<회원 리스트.do>
1 2 3 4 5 6 7 8 9 10 | @WebServlet("/memList.do") public class MemberListController extends HttpServlet{ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { MemberDao dao = MemberDao.getInstance(); List<Member> list = dao.selectAllMember(); req.setAttribute("memList", list); RequestDispatcher dispatcher = req.getRequestDispatcher("./member/MemberList.jsp"); dispatcher.forward(req, resp); } } | cs |
MemberDao.멤버 DB값 출력
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public List<Member> selectAllMember(){ String sql="SELECT * FROM member"; List<Member> list = new ArrayList<Member>(); try { System.out.println("DB에 접근하였습니다"); conn = DBManager.getConnection(); stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while(rs.next()){ Member mem = new Member(); mem.setNum(rs.getInt("num")); mem.setId(rs.getString("id")); mem.setPwd(rs.getString("pwd")); mem.setName(rs.getString("name")); mem.setEmail(rs.getString("email")); mem.setPhone(rs.getString("phone")); mem.setAdmin(rs.getString("admin").charAt(0)); mem.setIndate(rs.getString("indate")); System.out.println(mem.toString()); list.add(mem); } } catch (Exception e) {e.printStackTrace(); }finally{ DBManager.close(rs, stmt, conn); } return list; } | cs |
<회원 리스트.jsp>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <jsp:include page="./../layout/header.jsp"/> <table border="3"> <tr> <td>num</td><td>id</td><td>pwd</td><td>name</td> <td>email</td><td>phone</td><td>indate</td><td>admin</td> <td>삭제</td><td>수정</td> </tr> <c:forEach items="${memList}" var="mem"> <tr> <td>${mem.num}</td> <td>${mem.id}</td> <td>${mem.pwd}</td> <td>${mem.name}</td> <td>${mem.email}</td> <td>${mem.phone}</td> <td>${mem.indate}</td> <td>${mem.admin}</td> <td><a href="memDelete.do?num=${mem.num}">삭제</a></td> <td><a href="memUpdateForm.do?num=${mem.num}">수정</a></td> </tr> </c:forEach> </table> </body> </html> | cs |
<2. 회원 정보 삭제>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | @WebServlet("/memDelete.do") public class MemberDeleteController extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String context = req.getContextPath(); int num = (req.getParameter("num")!=null)?Integer.parseInt(req.getParameter("num")):-1; if(num<0){ System.out.println("잘못된 접근"); resp.sendRedirect(context+"/index.jsp"); }else{ MemberDao dao = MemberDao.getInstance(); //싱글턴 패턴: 객체 생성 DAO에서 담당, 스프링 프레임워크로도 구현 가능 int delete = dao.deleteMember(num); if(delete>0){ System.out.println("삭제 성공"); resp.sendRedirect(context+"/memList.do"); }else{ System.out.println("삭제 실패"); resp.sendRedirect(context+"/index.jsp"); } } } } | cs |
<MemberDao.회원 삭제>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public int deleteMember(int num){ String sql="DELETE FROM member where num=?"; int delete = 0; try { conn = DBManager.getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setInt(1, num); delete = pstmt.executeUpdate(); }catch(SQLException e){e.printStackTrace(); }finally{ DBManager.close(rs, pstmt, conn); } return delete; } | cs |
<3.회원 가입폼>
<회원가입폼.do>
1 2 3 4 5 6 7 8 9 10 11 12 | @WebServlet("/memAddForm.do") public class MemberAddFormController extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("컨트롤러 내부"); MemberDao dao = MemberDao.getInstance(); int maxNum = 0; maxNum = dao.selectMaxNum(); request.setAttribute("maxNum", maxNum); RequestDispatcher dispatcher = request.getRequestDispatcher("./member/MemberAddForm.jsp"); dispatcher.forward(request, response); } } | cs |
<회원가입폼.jsp>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.sql.*"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>회원가입 form</title> </head> <body> <h1>회원가입</h1> <form action="memInsert.do" method="post"> <p> <label for="uNum">num : ${maxNum+1}</label> <input type="hidden" name="num" value="${maxNum+1}"> </p> <p> <label for="uId">ID :</label> <input type="text" name="id" value=""> </p> <p> <label for="uPwd">pass :</label> <input type="password" id="uPwd" name="pwd" size="20" value=""> </p> <p> <label for="uName">이름 :</label> <input type="text" id="uName" name="name" size="20" value=""> </p> <p> <label for="uEmail">E-mail :</label> <input type="email" id="uEmail" name="email" size="20" value=""> </p> <p> <label for="uPhone">Phone :</label> <input type="text" id="uPhone" name="phone" size="20" value=""> </p> <p> <label for="admin">관리자</label> <input type="radio" id="admin" name="admin" value="0" checked> <label for="normal">일반</label> <input type="radio" id="normal" name="admin" value="1"> </p> <input type ="submit" value="제출"> </form> </body> </html> | cs |
<회원 가입.do>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | @WebServlet("/memInsert.do") public class MemberInsertController extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); MemberDao dao = MemberDao.getInstance(); Member mem = new Member(); String context=request.getContextPath(); int num = dao.selectMaxNum(); boolean idFlag = dao.selectId(request.getParameter("id")); int insert = 0; if(!idFlag){ mem.setNum(num+1); mem.setId(request.getParameter("id")); mem.setPwd(request.getParameter("pwd")); mem.setName(request.getParameter("name")); mem.setEmail(request.getParameter("email")); mem.setPhone(request.getParameter("phone")); mem.setAdmin(request.getParameter("admin").charAt(0)); mem.setIndate(request.getParameter("indate")); insert = dao.insertMember(mem); if(insert>0){ System.out.println("저장 성공"); response.sendRedirect(context+"/memList.do"); }else{ System.out.println("저장 실패"); response.sendRedirect(context+"/memAddForm.do"); } }else{ System.out.println("존재하는 id입니다."); } } } | cs |
<4. 회원 정보 수정폼>
<회원정보 수정폼.do>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @WebServlet("/memUpdateForm.do") public class MemberUpdateFormController extends HttpServlet{ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String num = req.getParameter("num"); Member mem = new Member(); if(num!=null){ MemberDao dao = MemberDao.getInstance(); mem = dao.detailMember(Integer.parseInt(num)); req.setAttribute("mem", mem); RequestDispatcher dispatcher = req.getRequestDispatcher("./member/MemberUpdateForm.jsp"); dispatcher.forward(req, resp); } } } | cs |
<회원정보 수정폼.jsp>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>회원정보수정</h1> <form action="memUpdate.do" method="get"> <p> <label for="uNum">num : ${mem.num}</label> <input type="hidden" name="num" value="${mem.num}"> </p> <p> <label for="uId">I D : ${mem.id}</label> <input type="hidden" name="id" value="${mem.id}"> </p> <p> <label for="uPwd">pwd :</label> <input type="text" id="uPwd" name="pwd" size="20" value="${mem.pwd}"> </p> <p> <label for="uName">name :</label> <input type="text" id="uName" name="name" size="20" value="${mem.name}"> </p> <p> <label for="uEmail">email :</label> <input type="text" id="uEmail" name="email" size="20" value="${mem.email}"> </p> <p> <label for="uPhone">phone :</label> <input type="text" id="uPhone" name="phone" size="20" value="${mem.phone}"> </p> <p> <c:choose> <c:when test="${mem.admin=='0'}"> <label for="admin">관리자</label> <input type="radio" id="admin" name="admin" value="0" checked> <label for="normal">일반</label> <input type="radio" id="normal" name="admin" value="1"> </c:when> <c:otherwise> <label for="admin">관리자</label> <input type="radio" id="admin" name="admin" value="0"> <label for="normal">일반</label> <input type="radio" id="normal" name="admin" value="1" checked> </c:otherwise> </c:choose> </p> <input type ="submit" value="제출"> </form> </body> </html> | cs |
<회원정보 수정.do>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | @WebServlet("/memUpdate.do") public class MemberUpdateController extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { MemberDao dao = MemberDao.getInstance(); Member mem = new Member(); String context=request.getContextPath(); int num = Integer.parseInt(request.getParameter("num")); mem.setNum(num); mem.setId(request.getParameter("id")); mem.setPwd(request.getParameter("pwd")); mem.setName(request.getParameter("name")); mem.setEmail(request.getParameter("email")); mem.setPhone(request.getParameter("phone")); mem.setAdmin(request.getParameter("admin").charAt(0)); mem.setIndate(request.getParameter("indate")); int update = dao.updateMember(mem); if(update>0){ System.out.println("수정 성공"); response.sendRedirect(context+"/memList.do"); //주의!! post 방식으로 이동했거나 forward로 이동해서 왔을 경우 //연속해서 forward 불가능하기에 sendRedirect 사용해야 }else{ System.out.println("수정 실패"); response.sendRedirect(context+"/memUpdateForm.do?num="+num); } } } | cs |
'Programming > JSP' 카테고리의 다른 글
[MVC2 게시판] 5. 파일 업로드 (0) | 2016.12.01 |
---|---|
[MVC2 게시판] 4. 페이징(Paging) (0) | 2016.11.28 |
[MVC2 게시판] 2. 로그인 (0) | 2016.11.25 |
[MVC2 게시판] 1. 개요 (0) | 2016.11.21 |
JSTL 태그 part2 (0) | 2016.11.09 |