ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CRUD 웹애플리케이션 프로젝트
    Servlet 2019. 3. 11. 13:13

    웹애플리케이션의 구조

    프런트 컨트롤러설정 

    - 뷰에서 들어오는 모든 요청을 하나의 대표 컨트롤러가 우선적으로 실행되는 구조이다.


    com.dev.controller.FrontController 클래스가 담당 

    모든 요청에대하여 URL 끝부분이 .do 요청이 들어 올때 마다 프런트 컨트롤러가 실행되게 설정할 것이므로 URL이 .do로 요청되도록 개발해야한다.


    [1] web.xml 설정 

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        version="3.0">
        <display-name>CURD Test</display-name>
     
        <servlet>
            <servlet-name>front</servlet-name>
            <servlet-class>com.dev.controller.FrontController</servlet-class>
            <init-param>
                <param-name>charset</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
        </servlet>
     
        <servlet-mapping>
            <servlet-name>front</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>
     
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
     
    </web-app>
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    package com.dev.controller;
     
    import java.io.IOException;
    import java.util.HashMap;
     
    import javax.security.auth.message.callback.PrivateKeyCallback.Request;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    public class FrontController extends HttpServlet{
     
        private static final long serialVersionUID = 1L;
        String charset = null;
        HashMap<String, Controller> list =null;
        
        @Override
        public void init(ServletConfig config) throws ServletException {
            String charset = config.getInitParameter("charset");
            list = new HashMap<>();
            list.put("/memberInsert.do"new MemberInsertController());
            list.put("/memberSearch.do"new MemberSearchController());
            list.put("/memberUpdate.do"new MemberUpdateController());
            list.put("/memberDelete.do"new MemberDeleteController());
            list.put("/memberList.do"new MemberListController());
        }
     
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        
            req.setCharacterEncoding(charset);
            String url = req.getRequestURI();
            String contextPath = req.getContextPath();
            String path = url.substring(contextPath.length());
            Controller subController = list.get(path);
            subController.execute(req,res);
        }
     
    }
     
    cs



    public void init(ServletConfig config) throws ServletException {

    String charset = config.getInitParameter("charset");

    list = new HashMap<>();

    list.put("/memberInsert.do", new MemberInsertController());

    list.put("/memberSearch.do", new MemberSearchController());

    list.put("/memberUpdate.do", new MemberUpdateController());

    list.put("/memberDelete.do", new MemberDeleteController());

    list.put("/memberList.do", new MemberListController());

    }

    현재 서블릿은 프런트 컨트롤러 로서 동작하는 객체 프런트 컨트롤러가 가져야 할 기능중에 하나는 클라이언트 요청에대하여 실제로 

    처리하는 컨트롤러 (서브 컨트롤러)를 실행하는 기능이다.

    list는 클라이언트 요청에 대하여 서브컨트롤러에 대한 정보를 가지는 HashMap 객체이다.

    HashMap은 정보가 key 와 value 형태로 저장


    키값은 요청해오는 URL에서 Contex path (웹애플리케이션 이름) 다음 값으로 지정한다.


    http://localhost:9090/dev/memberInsert.do 로 요청이 들어오면 일반적으로 key는 /memberInsert.do 이며

    아까 리스트에 해당하는 value값을 new MemberInsertContller()로 지정하였으므로 memberInsert.do 

    요청은  서브 컨트롤러는 MemberController객체이다.


    @Override

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    req.setCharacterEncoding(charset);

    String url = req.getRequestURI();

    String contextPath = req.getContextPath();

    String path = url.substring(contextPath.length());

    Controller subController = list.get(path);

    subController.execute(req,res);

    }


    service는 요청이 있을때마다 수행됨


    String url = req.getRequestURI();

    String contextPath = req.getContextPath();

    String path = url.substring(contextPath.length());


    이 부분은 클라이언트 요청URL에서 Key를 추출하는 코드. 만일 요청된 URL이 http://localhost:9090/dev/memberInsert.do 이면 

    각 메소드 결괏값은 다음과 같다.

    request.getRequestURI -> /dev/memberInser.do

    request.getContextPath -> /dev

    contextPath.length -> 4

    url.substring(4) -> /memeberInsert.do


    이렇게 잘라낸 키값을 넣는다 . 

    그리고 Controller 객체를 실행시킴 


    [3]Controller 객체

    Controller 인터페이스는 Controller 객체에서 컨트롤러 기능을 구현하는 메소드를 통일하기 위해 만든 객체이다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    package com.dev.controller;
     
    import java.io.IOException;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    public interface Controller {
        public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException; 
    }
     
    cs

    [4] VO 객체

    클래스 회원들의 정보를 저장 목적으로 만든 VO (Value Object) 객체이다.
    VO 객체는 회원정보를 생성할때 입력한 값을 MemberVO 객체에 담아 데이터 베이스까지 전달하며 , 
    회원정보를 검색할때에도 데이터 베이스 member 테이블에 있는 회원 정보를 MemberVO 객체에 담아 출력 뷰페이지에 전달할 목적으로 사용한다.
    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
    package com.dev.vo;
     
    public class MemberVO {
        private String id;
        private String passwd;
        private String name;
        private String mail;
     
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getPasswd() {
            return passwd;
        }
        public void setPasswd(String passwd) {
            this.passwd = passwd;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getMail() {
            return mail;
        }
        public void setMail(String mail) {
            this.mail = mail;
        }
        
        
        
    }
     
    cs


    [5] 출력 뷰 처리 객체


    MVC 디자인 패턴으로 개발 할 때 컨트롤러에서 처리해야 하는 기능 중 마지막은 처리 결과(Output View) 페이지로 이동해야햐는 작업이다.

    HttpUtil이라는 클래스 파일을 생성하고 다음과 같이 작성한다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    package com.dev.controller;
     
    import java.io.IOException;
     
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    public class HttpUtil {
        public static void forward(HttpServletRequest request, HttpServletResponse response,String path) {
            try {
                RequestDispatcher dispatcher = request.getRequestDispatcher(path);
                dispatcher.forward(request, response);
            } catch (ServletException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
     
    cs


    [6] 공통 페이지


    서비스가 완료되면 MVC Model2를 따르기 때문에 하나의 서비스 완료되면, 출력 뷰 페이지로 이동한다.
    모든 페이지마다 중복된 작업을 하지 않도록 home.jsp 파일에서 /index.jsp파일로 이동하는 링크를 처리하고
    이 작업이 필요한 페이지에서는 home.jsp를 include 처리한다.


    회원 정보 생성 


    컨트롤러 : com.dev.controller.MemberInsertController.java


    입력 뷰 : WebContent/memberInsert.jsp


    출력 뷰 : WebContent/result/memberOutput.jsp



    [1] memberInsert.jsp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>생성</title>
    </head>
    <body>
        <h3>회원 가입</h3>
        
        ${error }
        <form action="memberInsert.do" method="post">
            ID: <input type="text" name="id"><br>
            비밀번호 : <input type="password" name="passwd"><br>
            이름 : <input type="text" name="name"><br>
            E-Mail :<input type="text" name="mail"><br>
            
            <input type="submit" value="가입">
        </form
    </body>
    </html>
    cs

     


    ${error }
    이 코드는 request.getAttribute("error")와 동일한 실행문이다. 회원정보를 하나라도 입력하지 않은 상태에서 요청했을때 현재
    페잊로 돌아올때 오류 메시지를 저장해서 보낼것 

    [2] MemberInsertController.java

    /memberInset.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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    package com.dev.controller;
     
    import java.io.IOException;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import com.dev.service.MemberService;
    import com.dev.vo.MemberVO;
     
    public class MemberInsertController implements Controller{
     
        @Override
        public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                
            //파라미터 추출 
            String id = req.getParameter("id");
            String passwd = req.getParameter("passwd");
            String name = req.getParameter("name");
            String mail = req.getParameter("mail");
            
            //유효성 체크
            if(id.isEmpty() || passwd.isEmpty() || name.isEmpty() || mail.isEmpty()) {
                req.setAttribute("error","모든 항목을 빠집없이 입력해 주세요");
                HttpUtil.forward(req, resp, "/memberInsert.jsp");
                return;
            }
            
            //VO 객체에 데이터 바인딩;
            
            MemberVO member = new MemberVO();
            member.setId(id);
            member.setPasswd(passwd);
            member.setName(name);
            member.setMail(mail);
            
            //Service 객체의 메소드 호출
            MemberService service = MemberService.getInstance();
            service.memberInsert(member);
            
            //output 뷰 페이지로 이동
            req.setAttribute("id",id);
            HttpUtil.forward(req, resp, "/result/memberInsertOutput.jsp");
        }
        
     
    }
     
    cs

    [3] MemberService.java  

    memberService 클래스는 회원에 관한 모든 서비스 기능을 처리하는 모델 객체이다.
    com.dev.service 패키지 아래 "MemberService"라는 이름의 클래스파일을 생성하고 다음과 같이 작성한다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    package com.dev.service;
     
    import com.dev.dao.MemberDAO;
    import com.dev.vo.MemberVO;
     
    public class MemberService {
        
        private static MemberService  service= new MemberService();
        
        public MemberDAO dao = MemberDAO.getInstance();
        
        private MemberService(){}
        
        public static MemberService getInstance() {
            return service;
        }
        
        public void memberInsert(MemberVO member) {
            dao.memberInsert(member);
        }
        
    }
     
    cs

    private static MemberService  service= new MemberService();

    서비스 객체를 생성해서 service 멤버변수에 저장한다. service 변수의 접근자는 private

    따라서 현재 클래스 내에서만 접근할 수 있고 , 외부에서 접근할 수 없다. 

    외부에서 값을 수정하는 것을 막기위해 private로 선언함 

    private MemerService (){}

    생성자도 private로 선언 외부에서 생성자에 접근할 수 없다는 것은 객체를 생성 할 수 없다는 것을 의미


    public static MemberService getInstance(){

    return service;

    }

    MeberService 객체를 외부에서 사용하기 위해 선언한 메소드이다. getInstance() 메소드는 public static으로 선언했으므로

    외부에서 MemberService.getInstance() 형식으로 바로 사용할 수있다.

    MemberService 객체가 필요할 때는 getInstance() 메소드를 사용하여 이미 만들어진 객체를 사용한다.

    public MemberDAO dao = MemberDAO.getInstance();

    데이터에 접근하는 객체를 하나 생성

    public void memberInsert(MemberVO member) {

    dao.memberInsert(member);

    }

    MemberVO에 저장된 데이터를 member테이블에 삽입 

    [4]MemberDAO.java

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    package com.dev.dao;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
     
    import com.dev.vo.MemberVO;
     
    public class MemberDAO {
        public static MemberDAO dao = new MemberDAO();
        
        private MemberDAO() {};
        
        //memeberDAO를 하나만 사용하기 위해 사용하는 코드
        public static MemberDAO getInstance() {
            return dao;
        }
        
        //DB와 연결하고  Connection 객체를 얻어내기 위한 코드 
        public Connection connect() {
            Connection conn =null;
            
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver");
                conn= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe""scott""tiger");
     
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                System.out.println("오류발생 : "+e);
            } catch (SQLException e) {
                e.printStackTrace();
                System.out.println("오류발생 : "+e);
            }
            
            return conn;
            
        }
        //자원 해제작업
        public void close(Connection conn, PreparedStatement ps, ResultSet rs) {
            if(rs!=null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    System.out.println("오류발생"+e);
                }
            }
            close(conn,ps);
        }
        //자원 해제작업
        public void close(Connection conn, PreparedStatement ps) {
            if(ps!=null) {
                try {
                    ps.close();
                } catch (SQLException e) {
                    System.out.println("오류발생"+e);
                }
            }
            
            if(conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    System.out.println("오류발생"+e);
                }
            }
        }
        //MemberVO를 객체로 받아 member테이블에 삽입하는 메소드 
        public void memberInsert(MemberVO memeber) {
            Connection conn = null;
            PreparedStatement pstmt = null;
            
            conn=connect();
            try {
                pstmt = conn.prepareStatement("insert into member values(?,?,?,?)");
                pstmt.setString(1, memeber.getId());
                pstmt.setString(2, memeber.getPasswd());
                pstmt.setString(3, memeber.getName());
                pstmt.setString(4, memeber.getMail());
                pstmt.executeUpdate();
            } catch (SQLException e) {
                System.out.println("오류발생"+e);
            }finally {
                close(conn, pstmt);
            }
            
                    
        }
     
    }
     
    cs

    [5]memberInsertOutput.jsp


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <%@ 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>
    <h3>${id }님이 가입이 완료되 었습니다.</h3>
    <%@ include file="home.jsp"%>
     
    </body>
    </html>
    cs



    회원 정보 검색 


    memberSearch.jsp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>조회</title>
    </head>
    <body>
        <h3>회원 정보 검색</h3>
        ${error }
        <form action="memberSearch.do" method="post">
            ID: <input type="text" name="id">
            <input type="hidden" name ="job" value="search">
            <input type="submit" value="검색">
        </form>
    </body>
    </html>
    cs

    MemberSearchController.java

    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
    package com.dev.controller;
     
    import java.io.IOException;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import com.dev.service.MemberService;
    import com.dev.vo.MemberVO;
     
    public class MemberSearchController implements Controller{
     
        @Override
        public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("멤버 컨트롤러 시작");
            //parameter를 추출
            String id = req.getParameter("id");
            String job = req.getParameter("job");
            
            String path =null;
            if(job.equals("search")) {
                path="/memberSearch.jsp";
            }else if(job.equals("update")) {
                path="/memberUpdate.jsp";
            }else if(job.equals("delete")) {
                path="/memberDelete.jsp";
            }
            //유효성 체크
            if(id.isEmpty()) {
                req.setAttribute("error","ID를 입력해 주세요");
                HttpUtil.forward(req, resp, path);
                return;
            }
            //Service 객체의 메소드 호출
            MemberService service = MemberService.getInstance();
            MemberVO member = service.memberSearch(id);
            //Output View 페이지로 이동
            if(member == null) req.setAttribute("result","검색된 정보가 없습니다.");
            
            req.setAttribute("member",member);
            
            if(job.equals("search")) path="/result/memberSearchOutput.jsp";
            System.out.println("멤버 컨트롤러 끝 :"+path);
            
            HttpUtil.forward(req, resp, path);
            
            
        }
     
    }
     
    cs


    memberService.java

    1
    2
    3
    4
    5
        public MemberVO memberSearch(String id) {
            System.out.println("memberSearchService");
            MemberVO member = dao.memberSearch(id);
            return member;
        }
    cs

    추가



    MemberDAO.java


    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
    // id를 받아 Member 정보를 검색하는 메소드
        public MemberVO memberSearch(String id) {
            System.out.println("memberSearchDAO 시작");
            Connection conn = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;
     
            MemberVO member = null;
            try {
                conn = connect();
                pstmt = conn.prepareStatement("select * from member where id = ?");
                pstmt.setString(1, id);
                rs = pstmt.executeQuery();
                if (rs.next()) {
                    member = new MemberVO();
                    member.setId(rs.getString(1));
                    member.setPasswd(rs.getString(2));
                    member.setName(rs.getString(3));
                    member.setMail(rs.getString(4));
                }
     
            } catch (SQLException e) {
                System.out.println("오류발생"+ e);
                e.printStackTrace();
            }finally {
                close(conn,pstmt,rs);
            }
     
            System.out.println("memberSearchDAO 끝");
            return member;
        }
    cs

    이걸 추가 

    memberSearchOutput.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
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>검색 결과</title>
    </head>
    <body>
        <h3>검색 결과</h3>
        <%
            String result = (String)request.getAttribute("result");
            if(result!=null){
                out.print(result+"<P>");
            }else{
        %>
        <h3>
            ${member.id} / ${member.passwd} / ${member.name }/${member.mail }
            
        </h3>
        <%} %>
        <%@ include file="home.jsp" %>
     
    </body>
    </html>s
    cs


    회원정보 수정

    memberUpdate.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
    <%@page import="com.dev.vo.MemberVO"%>
    <%@ 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>
        <h3>수정정보 검색</h3>
        ${error }
        <form action="memberSearch.do" method="post">
            ID: <input type="text" name="id">
            <input type="hidden" name ="job" value="update">
            <input type="submit" value="검색">
        </form>
        <% MemberVO member =(MemberVO)request.getAttribute("member");
            if (member!=null){%>
            <form action="memberUpdate.do" method="post">
                <input type="text" name ="id" readonly="readonly" value="${member.id}"><br>
                <input type="password" name ="passwd" value="${member.passwd}"><br>
                <input type="text" name ="name" value="${member.name}"><br>
                <input type="text" name ="mail" value="${member.mail}"><br>
            <input type="submit" value="수정">
            </form>
            <%}else%>
                <p>${result}</p>
            <%%>
            
    </body>
    </html>
    cs

    memberUpdateController.java

    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
    package com.dev.controller;
     
    import java.io.IOException;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import com.dev.service.MemberService;
    import com.dev.vo.MemberVO;
     
    public class MemberUpdateController implements Controller{
     
        @Override
        public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            
            //Parameter 추출
            String id = req.getParameter("id");
            String passwd= req.getParameter("passwd");
            String name = req.getParameter("name");
            String mail = req.getParameter("mail");
            
            //유효성 체크
            if(id.isEmpty() || passwd.isEmpty() || name.isEmpty() || mail.isEmpty()) {
                req.setAttribute("error","모든 항목을 빠짐없이 입력해 주세요");
                HttpUtil.forward(req, resp, "/memberUpdate.jsp");
                return;
            }
            //VO객체에 데이타 바인딩
            MemberVO member = new MemberVO();
            member.setId(id);
            member.setPasswd(passwd);
            member.setName(name);
            member.setMail(mail);
            
            //Service 객체의 메소드 호춣
            MemberService service = MemberService.getInstance();
            service.memberUpdate(member);
            //Output View 페이지로 이동
            req.setAttribute("id",id);
            HttpUtil.forward(req, resp, "/result/memberUpdateOutput.jsp");
            
        }
     
    }
     
    cs

    MemberService.java

    1
    2
    3
    public void memberUpdate(MemberVO member) {
            dao.memberUpdate(member);
        }
    cs

    추가 


    MemeberDAO.java

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //멤버정보를 수정
        public void memberUpdate(MemberVO member) {
            Connection conn = null;
            PreparedStatement pstmt = null;
            
            try {
                conn=connect();
                pstmt = conn.prepareStatement("update member set passwd=?, name=?, mail=? where id=?");
                pstmt.setString(1,member.getPasswd());
                pstmt.setString(2,member.getName());
                pstmt.setString(3,member.getMail());
                pstmt.setString(4,member.getId());
                pstmt.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
                System.out.println("오류 발생 : " + e);
            }finally {
                close(conn, pstmt);
            }
            
        }
    cs

    추가

    memberUpdateOutput.jsp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <%@page import="com.dev.vo.MemberVO"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>수정 결과</title>
    </head>
    <body>
        <h3>${id} 님 정보 수정이 완료되었습니다.</h3>
        <%@ include file="home.jsp" %>
            
    </body>
    </html>
    cs

    회원 정보 삭제

    memberDelete.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
    <%@page import="com.dev.vo.MemberVO"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>삭제</title>
    </head>
    <body>
    <h3>삭제 정보 검색</h3>
    ${error }
    <form action="memberSearch.do" method="post">
        ID : <input type="text" name="id">
        <input type="hidden" name="job" value="delete">
        <input type="submit" value="검색">
    </form>
     
        <% MemberVO member = (MemberVO)request.getAttribute("member"); 
        if(member!=null){%>
            <h3>검색 정보 결과</h3>
            ${member.id} / ${member.passwd} / ${member.name }/${member.mail}<p>
            
            <form action="memberDelete.do" method="post">
                <input type="hidden" value="${member.id}"/>
                <input type="submit" value="삭제">
            </form>
        <%}else{%>
            ${result}
        <%%>
     
    </body>
    </html>
    cs

    MemberDeleteController.java

    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
    package com.dev.controller;
     
    import java.io.IOException;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import com.dev.service.MemberService;
     
    public class MemberDeleteController implements Controller {
     
        @Override
        public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //파라미터 추출
            String id = req.getParameter("id");
            //Service 객체의 메소드 호출
            MemberService service = MemberService.getInstance()
            service.memberDelete(id);
            //OutputView로 이동
            HttpUtil.forward(req, resp, "/result/memberDeleteOutput.jsp");
        }
     
    }
     
    cs

    MemberService.java

    1
    2
    3
    public void memberDelete(String id) { dao.memberDelete(id); }Colored by Color Scripter
    cs

    추가


    MemberDAO.java


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    //멤버 정보 삭제
        public void memberDelete(String id) {
            Connection conn = null;
            PreparedStatement pstmt = null;
            
            conn= connect();
            try {
                pstmt = conn.prepareStatement("delete from member where id =?");
                pstmt.setString(1, id);
                pstmt.executeUpdate();
            } catch (SQLException e) {
                System.out.println("오류 발생 : "+e);
                e.printStackTrace();
            }finally {
                close(conn,pstmt);
            }
        }
    cs

    memberDeleteOutput.jsp


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>삭제 결과</title>
    </head>
    <body>
        <h3>회원정보 삭제가 완료되었습니다!</h3>
        <%@ include file="home.jsp" %>
    </body>
    </html>
    cs


    모든 회원정보 보기


    MemberListController.java

    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
    package com.dev.controller;
     
    import java.io.IOException;
    import java.util.ArrayList;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import com.dev.service.MemberService;
    import com.dev.vo.MemberVO;
     
    public class MemberListController implements Controller {
     
        @Override
        public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            MemberService service = MemberService.getInstance();
            ArrayList<MemberVO> list = service.memberList();
            
            req.setAttribute("list", list);
            HttpUtil.forward(req, resp, "/result/memberListOutput.jsp");
        }
     
    }
     
    cs


    MemberDAO.java

    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
        //멤버 리스트
        public ArrayList<MemberVO> memberList(){
            ArrayList<MemberVO> list = new ArrayList<>();
            Connection conn = null;
            PreparedStatement pstmt =null;
            ResultSet rs = null;
            MemberVO member = null;
            
            try {
                conn=connect();
                pstmt =conn.prepareStatement("select * from member");
                rs= pstmt.executeQuery();
                while(rs.next()) {
                    member = new MemberVO();
                    member.setId(rs.getString(1));
                    member.setPasswd(rs.getString(2));
                    member.setName(rs.getString(3));
                    member.setMail(rs.getString(4));
                    list.add(member);
                }
            } catch (SQLException e) {
                System.out.println("오류 발생  : "+e);
            }finally {
                close(conn,pstmt,rs);
            }
            return list;
            
            
        }
    cs

    추가


    memberListOutput.jsp

    1
    2
    3
    4
    5
        public ArrayList<MemberVO> memberList() {
            ArrayList<MemberVO> list = dao.memberList();
            return list;
            
        }
    cs


    memberListOutput.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
    <%@page import="com.dev.vo.MemberVO"%>
    <%@page import="java.util.ArrayList"%>
    <%@ 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>
    <%ArrayList<MemberVO> list = (ArrayList<MemberVO>)request.getAttribute("list"); 
        if(!list.isEmpty()){ %>
        <table border="1">
            <tr>
                <th>ID</th><th>비밀번호</th><th>이름</th><th>이메일</th>
            </tr>
            <%    for(MemberVO member : list){%>
                <tr>
                    <td><%=member.getId()%></td>
                    <td><%=member.getPasswd() %></td>
                    <td><%=member.getName() %></td>
                    <td><%=member.getMail() %></td>
                </tr>
            <%%>
                
            
            <%}elseout.print("<h3>등록된 회원정보가 없습니다.</h3>");} %>
        </table>
        <%@ include file="home.jsp" %>
    </body>
    </html>
    cs

    Index.jsp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <%@ 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>
        <h1>인덱스페이지</h1>
        <a href="memberInsert.jsp">회원 가입</a>
        <a href="memberDelete.jsp">회원 탈퇴</a>
        <a href="memberSearch.jsp">회원 검색</a>
        <a href="memberUpdate.jsp">회원 수정</a>
        <a href="memberList.do">회원 리스트</a>
    </body>
    </html>
    cs


    'Servlet' 카테고리의 다른 글

    JSTL 사용시 주의점  (0) 2019.05.09
    JSTL  (0) 2019.03.07
    EL 요약 정리  (0) 2019.03.07
    EL(Expression Language)  (0) 2019.03.06
    데이터베이스요약  (0) 2019.03.06
Designed by Tistory.