일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바
- nico
- springboot
- 一日一つメソッド
- 연습문제
- Python
- javascript
- rails7
- vscode
- C로 시작하는 컴퓨터 프로그래밍4판
- 반다이몰
- 건담
- 디지몬
- 비즈니스일본어
- 건담베이스
- java
- html
- rails
- 인프런
- メソッド
- Web
- Flutter
- 日本語
- DART
- Spring
- ruby
- 単語
- jsp
- 일본어
- CSS
- Today
- Total
AR삽질러
Spring게시판실습 본문
Spring으로 간단한 게시판을 만들어보는 과정입니다. 사용자가 글을 작성하고 다른 사용자들과 공유할 수 있는 기능을 가지고 있고 스프링의 기본 개념과 사용방법에 대해 학습합니다.
https://arang95.tistory.com/93
1. 개발환경
- JDK11, SpringFramework, Maven, Eclipse2020.06
2. DB
- Oracle11
table
num(pk), 제목, 내용, 날짜, 조회 : pk시퀀스
create table "MYBOARD"(
"NUM" number primary key,
"TITLE" varchar2(100) not null,
"CONTENT" varchar2(4000) not null,
"REGDATE" timestamp,
"READCNT" number not null
);
create sequence "MYBOARD_SEQ" nocache;
3. 모델
Board, BoardDao, BoardDaoImpl
1) board
게시판을 구현하는데 필요한 Model클래스
- Board클래스 : 글번호, 제목, 내용, 등록날짜, 조회수 필드를 가지고있다.
- 게시글이 생성될때 생성자를 통해 해당 필드 값을 초기화하고 게시글조회에서 필드 값을 가져올때 getter메소드를사용 하고 필드값을 변경할때는 setter메소드를 사용할 수 있다.
- 마지막 toString메소드를 오버라이딩하여 Board객체를 문자열로 반환해 [필드명 = 값]형태로 출력되게 구현
2) BoardDao Interface
- BoardDao는 게시판 CRUD기능을 추상화하고 게시판 데이터를 관리하는 방법을 제공한다.
- selectAll() : 모든 게시글 정보를 반환
- selectOne(long num) : 특정 num에 해당하는 게시글 정보를 반환
- insert(Board board) : 새로운 게시글 정보를 등록한다.(board)
- update(Board board) : 게시글의 정보를 수정한다.
- update(long num) : 특정 board.getNum()에 해당하는 조회수를 증가시간다.
- delete(long num) : 특정 num에 해당하는 게시글 정보를 삭제한다.
3) BoardDaoImpl : SpringFramework 데이터접근계층인 DAO(Data Access Object)를 구현한 클래스
- @Repository 에노테이션 선언으로 데이터베이스와 상호작용을 담당한다.
- BoardDaoImpl클래스는 BoardDao인터페이스를 구현하고 SqlSessionTempleate 객체를 이용해 MyBatis를 통해 SQL쿼리를 실행한다.
- mapperNamespace 상수는 MyBatis 매퍼파일에서 사용되는 네임스페이스를 나타내며 selectAll, selectOne, insert, update, delete, updateCnt는 MyBatis매퍼 파일에서 실행될 SQL쿼리 ID를 나타낸다.
4. 컨트롤러
BoardCommand, BoardController
1) BoardCommand
- @Controller : 해당 클래스가 Controller임을 나타낸다.
- @RequestMapping : 요청 URL과 Controller의 매핑을 설정하고 /board/로 시작하는 모든 요청을 이 Controller에서 처리된다.
- @Autowired : BoardService객체를 자동으로 의존성 주입을 받는다.
- @RequsetMapping(value="list", method=RequestMethod.GET)은 /board/list로 GET요청일때 list메서드를 호출한다.
- @RequsetMapping(value="detail/{num}, method=RequestMethod.GET)은 /board/list/글번호로 GET요청일때 detail메서드를 호출하고 {num}에 Path Variable로 글번호가 들어가게된다.
- @ModelAttribute : Model에 객체를 바인딩한다.
- @RequsetMapping(value="regist", method=RequestMethod.POST)는 /board/regist로 POST요청일때 regist메서드를 호출한다.
- Errors : 폼 데이터의 바인딩 결과에 대한 에러 정보를 담고 있다.
- @PathVariable : Path Variable값을 가져온다.
- redirect : URL을 다시 요청한다.
2) BoardContoller
- 게시판에서 사용하는 데이터를 저장하는 클래스로 번호, 제목, 내용을 저장하는 필드와 get/set메서드로 정의된다.
- MVC에서 바인딩 기능을 사용할때 클라이언트로부터 전송된 데이터를 자동으로 저장하는데 사용되며 입력된 제목과 내용은 BoardCommand객체의 title, content필드에 저장되어 전달된다.
5. 서비스
BoardService, BoardServiceImpl
1) BoardService
- 게시판의 비즈니스 로직을 처리하는 서비스인터페이스를 정의
- list() : 모든 글을 조회하는 메소드로 List<Board>를 반환
- detail(long num) : 글번호(num)을 기반으로 해당 글을 조회하는 메소드로 Board객체를 반환
- regist(Board board) : 새로운 글을 등록하는메소드로 파라미터로 board객체를 전달받는다.
- edit(Board board) : 기존 글을 수정하는 메소드로 파라미터로 board객체를 전달받는다.
- readCnt(long num); : 글 조회수를 증가시키는 메소드로 파라미터로 번호(num)을 전달받는다.
- remove(long num); : 글을 삭제하는 메소드로 파라미터로 번호(num)을 전달받는다.
2) BoardServiceImpl
- 게시판의 비즈니스 로직을 처리하는 서비스클래스
- @Service애노테이션은 해당 클래스가 Spring컨테이너의 Bean으로 등록되어 DI를 받아 사용할 수 있게해주는 역할을 한다.
- @Autowired애노테이션은 자동으로 BoardDao인터페이스를 구현한 BoardDaoImpl클래스의 객체를 생성하고 boardDao필드에 자동으로 주입해주는 역할을 한다.
- list(), detail(), regist(), edit(), remove(), readCnt()메소드를 구현하고 BoardDao인터페이스를 통해 BoardDaoImpl클래스의 메소드를 호출해 데이터베이스에 접근하고 처리한다.
6. 뷰
detail, edit, list, regist, remove
1) list
2)
3)
4)
5)
6)
7. 배포
https://github.com/designAR/Spring-board_Basic
추가적으로 페이징처리, 파일업로드, 댓글, Ajax등을 구현하면 좋을것같습니다.
'JAVA > Spring' 카테고리의 다른 글
Spring-등급제회원_기본예제(1) (0) | 2023.06.27 |
---|---|
Spring-객체지향이란?(용어정리) (0) | 2023.06.24 |
Spring기초 설명 (0) | 2023.04.03 |
Spring Start (0) | 2023.03.24 |
Spring 설치 Hellow word! 띄우기! (2) | 2023.01.17 |