ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] 게시판 만들기(14) - 게시글 조회(SELECT)
    Spring/4.3.x - 게시판 만들기 2018. 12. 17. 12:50
    반응형

    모델2 방식에 MVC(Model, View, Controller) 패턴과 관련된 파일을 추가한 후 목록을 구현하는 작업을 진행하도록 하겠습니다.

     

     

    Model 영역

     애플리케이션에 비즈니스 로직과 사용되는 데이터를 다루는 영역입니다. 일반적으로 비즈니스 데이터는 DBMS에 의해 관리되고, 그 데이터를 다루는 연산은 SQL문을 통해 구현됩니다.

     

    View 영역

     최종 사용자에게 보여줄 프리젠테이션 로직을 담당하는 영역입니다. 일반적으로 자바 웹 애플리케이션에서는 JSP를 통해서 구현됩니다.

     

    Controller 영역

     컨트롤러는 흐름을 관리하는 역할을 하며, 모델과 뷰 영역간의 조정 역할을 합니다. 사용자의 요청을 받아 이를 수행하기 위한 비즈니스 로직을 선택하고 호출하며, 수행한 비즈니스 로직의 결과를 뷰를 통해 보여줍니다.

     

    1. 모델2 방식 MVC 패턴 파일 추가

    1_1. com.spring.board 패키지 밑에 controller, service, dao, dto, form 패키지를 생성한 후 java 파일을 추가하세요.

     

    Controller 역할 

     - DispatcherServlet에 의해 호출되어 사용자의 Request를 전달받고, 해당 요청의 비즈니스 처리를 담당하는 서비스 객체를 Spring으로부터 주입(Dependency Injection)받아서, 그 서비스 객체에 처리를 위임하고, 처리 결과와 결과 화면에 대한 정보를 DispatcherServlet에게 반환합니다.

     - Controller @Controller, @RequestMapping, @Autowired 서비스 처리 결과를 Model에 담으면, 컨트롤러 클래스의 RequestMapping값을 기준으로, DispatcherServlet이 ViewResolver를 통해 화면 URL 생성합니다.

     

    Service 역할

     - Controller에 의해 호출되어 실제 비즈니스 로직과 트랜잭션을 처리하고, DB CRUD(Persistence)를 담당하는 DAO 객체를 Spring 으로부터 주입 받아서, DAO에 DB CRUD 처리를 위임하고, 처리 결과를 Controller에게 반환합니다.

     - Service @Service, @Transactional, @Autowired 비즈니스 로직과 트랜잭션 처리합니다.

     

    DAO 역할

     - Service에 의해 호출되어 쿼리를 담당하는 SqlMapClientTemplate 객체를 Spring으로부터 주입받아서, SqlMapClientTemplate 객체에 쿼리 수행을 위임하고, 처리 결과를 Service에게 반환합니다.

     - DAO @Repository, @Autowired SqlMapClientTemplate을 통해 쿼리 수행 후 결과 반환합니다.

     

    @Contoller

     Presentation Layer에서 Contoller를 명시하기 위해서 사용됩니다.

     

    @Service

     Business(Service) Layer에서 Service를 명시하기 위해서 사용됩니다.

     

    @Repository

     Persistence Layer에서 DAO를 명시하기 위해서 사용됩니다. 

     

    BoardController.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
    package com.spring.board.controller;
     
    import java.util.List;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
     
    import com.spring.board.dto.BoardDto;
    import com.spring.board.form.BoardForm;
    import com.spring.board.service.BoardService;
     
    @Controller
    @RequestMapping(value = "/board")
    public class BoardController {
     
        @Autowired
        private BoardService boardService;
     
        @RequestMapping( value = "/boardList")
        public String getBoardList(HttpServletRequest request, HttpServletResponse response) throws Exception{
            
            return "board/boardList";
        }
     
        @RequestMapping(value = "/getBoardList")
        @ResponseBody
        public List<BoardDto> getBoardList(HttpServletRequest request, HttpServletResponse response, BoardForm boardForm) throws Exception {
     
            List<BoardDto> boardList = boardService.getBoardList(boardForm);
     
            return boardList;
        }
    }
    cs


     

    BoardService.java

    더보기
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    package com.spring.board.service;
     
    import java.util.List;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
     
    import com.spring.board.dao.BoardDao;
    import com.spring.board.dto.BoardDto;
    import com.spring.board.form.BoardForm;
     
    @Service
    public class BoardService {
     
        @Autowired
        private BoardDao boardDao;
     
        public List<BoardDto> getBoardList(BoardForm boardForm) throws Exception {
     
            return boardDao.getBoardList(boardForm);
        }
    }
    cs

     

    BoardDao.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.spring.board.dao;
     
    import java.util.List;
     
    import javax.annotation.Resource;
     
    import org.apache.ibatis.session.SqlSession;
    import org.springframework.stereotype.Repository;
     
    import com.spring.board.dto.BoardDto;
    import com.spring.board.form.BoardForm;
     
    @Repository
    public class BoardDao {
     
        @Resource(name = "sqlSession")
        private SqlSession sqlSession;
     
        private static final String NAMESPACE = "com.spring.board.boardMapper";
     
        public List<BoardDto> getBoardList(BoardForm boardForm) throws Exception {
     
            return sqlSession.selectList(NAMESPACE + ".getBoardList");
        }
    }
    cs

     

    BoardDto.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
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    package com.spring.board.dto;
     
    import java.util.Date;
     
    public class BoardDto {
     
        int board_seq;
        int board_re_ref;
        int board_re_lev;
        int board_re_seq;
        String board_writer;
        String board_subject;
        String board_content;
        int board_hits;
        String del_yn;
        String ins_user_id;
        Date ins_date;
        String upd_user_id;
        Date upd_date;
     
        public int getBoard_seq() {
            return board_seq;
        }
     
        public void setBoard_seq(int board_seq) {
            this.board_seq = board_seq;
        }
     
        public int getBoard_re_ref() {
            return board_re_ref;
        }
     
        public void setBoard_re_ref(int board_re_ref) {
            this.board_re_ref = board_re_ref;
        }
     
        public int getBoard_re_lev() {
            return board_re_lev;
        }
     
        public void setBoard_re_lev(int board_re_lev) {
            this.board_re_lev = board_re_lev;
        }
     
        public int getBoard_re_seq() {
            return board_re_seq;
        }
     
        public void setBoard_re_seq(int board_re_seq) {
            this.board_re_seq = board_re_seq;
        }
     
        public String getBoard_writer() {
            return board_writer;
        }
     
        public void setBoard_writer(String board_writer) {
            this.board_writer = board_writer;
        }
     
        public String getBoard_subject() {
            return board_subject;
        }
     
        public void setBoard_subject(String board_subject) {
            this.board_subject = board_subject;
        }
     
        public String getBoard_content() {
            return board_content;
        }
     
        public void setBoard_content(String board_content) {
            this.board_content = board_content;
        }
     
        public int getBoard_hits() {
            return board_hits;
        }
     
        public void setBoard_hits(int board_hits) {
            this.board_hits = board_hits;
        }
     
        public String getDel_yn() {
            return del_yn;
        }
     
        public void setDel_yn(String del_yn) {
            this.del_yn = del_yn;
        }
     
        public String getIns_user_id() {
            return ins_user_id;
        }
     
        public void setIns_user_id(String ins_user_id) {
            this.ins_user_id = ins_user_id;
        }
     
        public Date getIns_date() {
            return ins_date;
        }
     
        public void setIns_date(Date ins_date) {
            this.ins_date = ins_date;
        }
     
        public String getUpd_user_id() {
            return upd_user_id;
        }
     
        public void setUpd_user_id(String upd_user_id) {
            this.upd_user_id = upd_user_id;
        }
     
        public Date getUpd_date() {
            return upd_date;
        }
     
        public void setUpd_date(Date upd_date) {
            this.upd_date = upd_date;
        }
    }
    cs

     

    BoardForm.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
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    package com.spring.board.form;
     
    import java.util.Date;
     
    public class BoardForm {
     
        int board_seq;
        int board_re_ref;
        int board_re_lev;
        int board_re_seq;
        String board_writer;
        String board_subject;
        String board_content;
        int board_hits;
        String del_yn;
        String ins_user_id;
        Date ins_date;
        String upd_user_id;
        Date upd_date;
     
        public int getBoard_seq() {
            return board_seq;
        }
     
        public void setBoard_seq(int board_seq) {
            this.board_seq = board_seq;
        }
     
        public int getBoard_re_ref() {
            return board_re_ref;
        }
     
        public void setBoard_re_ref(int board_re_ref) {
            this.board_re_ref = board_re_ref;
        }
     
        public int getBoard_re_lev() {
            return board_re_lev;
        }
     
        public void setBoard_re_lev(int board_re_lev) {
            this.board_re_lev = board_re_lev;
        }
     
        public int getBoard_re_seq() {
            return board_re_seq;
        }
     
        public void setBoard_re_seq(int board_re_seq) {
            this.board_re_seq = board_re_seq;
        }
     
        public String getBoard_writer() {
            return board_writer;
        }
     
        public void setBoard_writer(String board_writer) {
            this.board_writer = board_writer;
        }
     
        public String getBoard_subject() {
            return board_subject;
        }
     
        public void setBoard_subject(String board_subject) {
            this.board_subject = board_subject;
        }
     
        public String getBoard_content() {
            return board_content;
        }
     
        public void setBoard_content(String board_content) {
            this.board_content = board_content;
        }
     
        public int getBoard_hits() {
            return board_hits;
        }
     
        public void setBoard_hits(int board_hits) {
            this.board_hits = board_hits;
        }
     
        public String getDel_yn() {
            return del_yn;
        }
     
        public void setDel_yn(String del_yn) {
            this.del_yn = del_yn;
        }
     
        public String getIns_user_id() {
            return ins_user_id;
        }
     
        public void setIns_user_id(String ins_user_id) {
            this.ins_user_id = ins_user_id;
        }
     
        public Date getIns_date() {
            return ins_date;
        }
     
        public void setIns_date(Date ins_date) {
            this.ins_date = ins_date;
        }
     
        public String getUpd_user_id() {
            return upd_user_id;
        }
     
        public void setUpd_user_id(String upd_user_id) {
            this.upd_user_id = upd_user_id;
        }
     
        public Date getUpd_date() {
            return upd_date;
        }
     
        public void setUpd_date(Date upd_date) {
            this.upd_date = upd_date;
        }
     
    }
    cs
     

    1_2. webapp/WEB-INF/views 위치에 board 폴더를 생성한 후 Jsp 파일을 추가하세요.

     

     

    boardList.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
    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
    93
    94
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!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>게시판 목록</title>
    <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        
        $(document).ready(function(){        
            getBoardList();
        });
     
        function getBoardList(){
            
            $.ajax({            
                type:"GET",
                url:"/board/getBoardList",
                dataType:"JSON",
                success : function(obj) {
                    getBoardListCallback(obj);                
                },           
                error : function(xhr, status, error) {}
             });
        }
        
        function getBoardListCallback(obj){
            
            var list = obj;
            var listLen = obj.length;
            
            console.log(list);
            console.log(listLen);
            
            var str = "";
            
            if(listLen >  0){
                
                for(var a=0; a<listLen; a++){
                    
                    var boardSeq        = list[a].board_seq; 
                    var boardReRef         = list[a].board_re_ref; 
                    var boardReLev         = list[a].board_re_lev; 
                    var boardReSeq         = list[a].board_re_seq; 
                    var boardWriter     = list[a].board_writer; 
                    var boardSubject     = list[a].board_subject; 
                    var boardContent     = list[a].board_content; 
                    var boardHits         = list[a].board_hits;
                    var delYn             = list[a].del_yn; 
                    var insUserId         = list[a].ins_user_id;
                    var insDate         = list[a].ins_date; 
                    var updUserId         = list[a].upd_user_id;
                    var updDate         = list[a].upd_date;
                    
                    str += "<tr>";
                    str += "<td>"+ boardSeq +"</td>";
                    str += "<td>"+ boardSubject +"</td>";
                    str += "<td>"+ boardHits +"</td>";
                    str += "<td>"+ boardWriter +"</td>";                
                    str += "</tr>";
                    
                } 
                
            } else {
                
                str += "<tr colspan='4'>";
                str += "<td>등록된 글이 존재하지 않습니다.</td>";
                str += "<tr>";
            }
            
            $("#tbody").html(str);
        }
        
    </script>
    </head>
    <body>
    <table border=1 width=350>
        <thead>
            <tr>
                <td>글번호</td>
                <td>제목</td>
                <td>조회수</td>
                <td>작성자</td>
            </tr>
        </thead>
        <tbody id="tbody">
        
        </tbody>
        
    </table>
    </body>
    </html>
     
    cs

     

    2. MVC Controller (/board/boardList) 호출

    2_1. path를 /board를 /로 변경하세요.

     

    2_2. localhost:9090/board/boardList 로 호출 시에 DB가 조회되는지 확인하세요.

     

    소스 코드는 Github Repository - https://github.com/tychejin1218/board_v1 (branch : section14) 를 참조하세요.
    Github에서 프로젝트 가져오기 - https://tychejin.tistory.com/33

     

     

    반응형

    댓글

Designed by Tistory.