반응형
스프링 게시판 만들기에 수업 시간에 배운 내용을 복습하는 것보다
새로운 코드를 참고하는 게 좋을 것 같아서 아래 블로그를 참고했습니다.
언제나 좋은 글,,좋은 정리로 공부에 도움 주는 많은 분들 항상 감사합니다...😍
참고 블로그 : https://tychejin.tistory.com/24?category=765216
- 0. 패키지 구조 잡기
MVC 패턴
- Controller : DispatcherServlet에 의해 호출되어 사용자의 요청(Request)을 전달받고 처리 결과, 결과 화면 정보를 반환. @Controller, @RequestMapping, @Autowired 서비스 처리 결과를 Model에 담으면 RequestMapping 값 기준으로 DispatcherServlet이 ViewResolver를 통해 화면 URL 생성.
- Service : Controller에 의해 호출되어 비즈니스 로직, 트랜잭션 처리. 데이터베이스 CRUD를 담당하는 DAO 객체를 주입 받아 CRUD 처리 위임하고 처리 결과를 Controller에 반환. @Service , @Transactional, @Autowired 비즈니스 로직, 트랜잭선 처리
- DAO : Service에 의해 호출되어 CRUD 쿼리를 담당하는 SqlMapClientTemplate 객체를 주입받아서 쿼리 수행을 위임, 처리 결과를 Service에게 반환. @Repository, @Autowired SqlMapClientTemplate 통해 쿼리 수행 후 결과 반환.
- 1. 스키마 & 테이블 생성
- 2. BoardController.java / BoardService.java / BoardDAO.java / BoardDTO.java 작성
수업시간에는 interface - implements 형태로 작성했는데 이번에는 블로그를 참고해 다른 방식으로 작성했다.
- 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 net.spring.study.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 net.spring.study.board.dto.BoardDTO;
import net.spring.study.board.form.BoardForm;
import net.spring.study.board.service.BoardService;
@Controller
@RequestMapping(value = "/board")
public class BoardController {
@Autowired
private BoardService boardService;
@RequestMapping(value = "/boardList")
public String getBoardList2(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
23
24
|
package net.spring.study.board.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import net.spring.study.board.dao.BoardDAO;
import net.spring.study.board.dto.BoardDTO;
import net.spring.study.board.form.BoardForm;
@Service("boardService")
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
26
27
|
package net.spring.study.board.dao;
import java.util.List;
import javax.annotation.Resource;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
import net.spring.study.board.dto.BoardDTO;
import net.spring.study.board.form.BoardForm;
@Repository("boardDAO")
public class BoardDAO {
@Resource(name = "sqlSession")
private SqlSession sqlSession;
private static final String NAMESPACE = "mapper.board";
public List<BoardDTO> getBoardList(BoardForm boardForm) {
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
|
package net.spring.study.board.dto;
import java.sql.Date;
import java.sql.Time;
/*
* BOARD_SEQ INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '게시글 번호',
BOARD_RE_REF INT COMMENT '글의 그룹 번호',
BOARD_RE_LEV INT COMMENT '답변 글의 깊이',
BOARD_RE_SEQ INT COMMENT '답변 글의 순서',
BOARD_WRITER VARCHAR(20) COMMENT '게시글의 작성자',
BOARD_SUBJECT VARCHAR(50) COMMENT '게시글의 제목',
BOARD_CONTENT VARCHAR(2000) COMMENT '게시글의 내용',
BOARD_HITS INT UNSIGNED NOT NULL DEFAULT '0' COMMENT '게시글의 조회수',
DEL_YN VARCHAR(1) NOT NULL DEFAULT 'N' COMMENT '삭제유무',
INS_USER_ID VARCHAR(20) COMMENT '입력자ID',
INS_DATE DATETIME COMMENT '입력일시',
UPD_USER_ID VARCHAR(20) COMMENT '수정자ID',
UPD_DATE DATETIME COMMENT '수정일시'
*/
public class BoardDTO {
private int board_seq;
private int board_re_ref;
private int board_re_lev;
private int board_re_seq;
private String board_writer;
private String board_subject;
private String board_content;
private int board_hits;
private String del_yn;
private String ins_user_id;
private Date ins_date;
private String upd_user_id;
private 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
- 블로그를 참고해 보니 BoardDTO, BoardForm을 나누신 것은 [BoardDTO : mapper에서 조회한 내용] 때문이라고 하셨다.
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
|
package net.spring.study.board.form;
import java.sql.Date;
public class BoardForm {
private int board_seq;
private int board_re_ref;
private int board_re_lev;
private int board_re_seq;
private String board_writer;
private String board_subject;
private String board_content;
private int board_hits;
private String del_yn;
private String ins_user_id;
private Date ins_date;
private String upd_user_id;
private 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 |
분명히 블로그 참고해서 똑같이 했음에도...온갖 에러를 만난 나...ㅎ 한 2시간동안
삽질해서 겨우겨우
여기까지는 띄웠는데.....
다음과 같은 에러가 나오며 DB값을 불러오질 못한다...역시 쉽지 않군....
**해결 완료**
원인 : 스키마 생성 새로 했었는데 xml 파일에 데이터소스 입력할 때 다른 스키마 이름으로 해서 그런 거였...ㅠㅋㅋㅋ
수정했더니 잘 나온다....삽질은 제발 그만..
반응형
'💻 my code archive > 🎨게시판 만들기' 카테고리의 다른 글
[스프링부트 게시판 만들기] IntelliJ 프로젝트 생성, MySQL 연동 (0) | 2022.03.13 |
---|---|
[STS Spring] 게시판 만들기 -- 05. 글 등록(INSERT), 글 수정(UPDATE), 글 삭제(DELETE), 글 상세 조회(SELECT) (0) | 2022.01.17 |
[STS Spring] 게시판 만들기 -- 03. Mybatis 연동 (0) | 2022.01.16 |
[STS Spring] 게시판 만들기 -- 02. MySQL 연동 (0) | 2022.01.16 |
[STS Spring] 게시판 만들기 -- 01. Spring MVC Project 생성 (0) | 2022.01.16 |