AR삽질러

Spring게시판실습 본문

JAVA/Spring

Spring게시판실습

아랑팡팡 2023. 4. 3. 01:27
728x90

 Spring으로 간단한 게시판을 만들어보는 과정입니다. 사용자가 글을 작성하고 다른 사용자들과 공유할 수 있는 기능을 가지고 있고 스프링의 기본 개념과 사용방법에 대해 학습합니다.

https://arang95.tistory.com/93

 

Spring기초 설명

Spring기초 설명 다형성(Polymorphism) - 객체지향프로그램 OOP(Object Oriented Programing) - 다형성은 하나의 객체가 여러가지 형태를 가질 수 있는 것으로 객체가 다른 객체들과 호환성을 가지며 자신만의

arang95.tistory.com

 

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

 

GitHub - designAR/Spring-board_Basic: Spring-게시판만들기(기초)

Spring-게시판만들기(기초). Contribute to designAR/Spring-board_Basic development by creating an account on GitHub.

github.com

 

추가적으로 페이징처리, 파일업로드, 댓글, Ajax등을 구현하면 좋을것같습니다.

728x90
반응형
LIST

'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