[MVC2 게시판] 3. 회원관리

2016. 11. 25. 17:25Programming/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