[스프링] 팀 프로젝트 - 게시판 만들기
국비지원 학원 수업을 듣고 있는데 학원 수업 이외에 나 혼자 뭔가 만들어보고싶다? 공부하고싶다? 싶어서 유튜브에 찾아보니 게시판을 만드는 내용으로 무작정 따라하면서 만들 수 있는 영상을 찾았다.
그래서 게시판을 따라서 만들어보는 내용으로 한번 천천히 만들고 있었는데 팀 프로젝트를 시작하면서 게시판 만드는걸 이어서 해보기로 하고 만들기 시작했다.
먼저 사용하기 전에 학원에서 인텔리제이를 사용하면서 배운 내용을 사용하기 위해 인텔리제이를 다운로드 해 놓은 상황이었기 때문에 start.spring.io 에서 다운받는 내용부터 따라하기 시작했다.
위에 나와있는 내용으로 다운을 받았는데 영상이랑 조금 다르게 다운 받았다.
이유는 영상에 나와있은 버전들도 그렇고 지금 현재 1년이라는 시간이 좀 차이가 나서 내가 쓰는 프로그램 버전 등 설정을 맞춰주었고, Dependencies 를 Spring Web, Spring Data JPA, MySQL Driver, Thymeleaf, Lombok 이렇게 다섯가지로 다운받았다.
여기서 학원에서 사용해본 것도 있고 아닌 것도 있지만 일단 따라 다운로드를 해주었다.
영상에서 차이점은 영상은 마리아DB 를 사용했지만 내가 쓰는 pc에는 MySQL 을 설치해서 사용하기 때문에 그거에 맞춰서 설치를 해주고 진행해주었다.
파일이 다운로드가 되면 압축파일로 다운로드가 되는데 압축을 풀고 불러와서 프로젝트 생성을 해주었다.
만들어가다가 글을 쓰게 된 내용이라 중간부터 시작된 점은 참고.
지금 현재 진행상황은 아래와 같다.
게시판에 내용을 넣어서 확인할 수 있는 리스트파일(list), 수정할 수 있는 수정파일(modify), 리스트에 있는 내용을 확인해서 클릭하여 들어가면 클릭한 내용에 맞춰서 표시되는 뷰 파일(view), 글을 작성할 수 있는 파일(write) 을 만들어서 html 을 작성한 상태이다.
여기서 확인할 게 있다면 write 는 새로운 글을 작성하게 만들어 놓은 것은 아니고, 수정할 때 수정할 내용을 작성할 수 있는 화면을 나타내 주는 것이다.
각각 코드를 먼저 확인을 해보겠다!
우선 작성한 코드들 순서를 대충 확인하자면 html -> Controller -> entity -> repository 순서대로 왔다갔다 하면서 만들려고 노력했다.
끊어서 확인을 해보자면
html 화면을 작성해주고 Controller 를 작성해 주었으니 html 코드를 위처럼 작성해주었다.
확인해보면 메인페이지, 리스트 페이지 인걸 확인 시켜주는 글이 작성되어있는데 그 밑에는 다른 곳으로 이동할 수 있는 링크를 달아주었다.
Controller 를 만들어주어 위에 @Aotowired 를 달아주었는데 자바로 생각하면 기본 생성자라고 생각하면 된다.
아래 main 페이지와 list 페이지를 get 으로 만들어서 연결해주었다.
main 과 list 페이지를 만들고, 연결을 해주었으니까 디자인은 신경쓰지 않았지만..확인해보쟝..
포트번호를 7777 로 지정해주었기 때문에 앞에 7777 로 되어있고, 그 뒤에 내가 만들어 놓은 링크로 들어가면 위의 이미지처럼 메인페이지와 리스트 페이지가 나타난다.
게시판 리스트를 만들어주었고, 다음으로 작성 페이지를 만들어주었다.
디자인이 빠진 body 부분의 코드이다.
작성자와 제목, 내용이 꼭 들어가야된다고 생각하였기 때문에 세 가지 항목을 입력해야 되게 만들어주었다.
아래 등록 버튼을 만들어 주었고, 작성페이지에서 메인페이지와 리스트인 목록 페이지로 넘어갈 수 있게 버튼을 만들어 주었다.
위 쪽에 디자인을 살짝..했는데 ㅎ.. 먼저 확인해보쟈..!!
이미지가 좀 크긴한데 디자인은 신경쓰지 않고,,넣었다 ㅎ..
html 은 이렇게 만들었으니 결과물을 보자..(민망함)
쨔잔~~~!~!~ㅋㅋ 일단 이렇게 만들어놓고 디자인은 나중에 좀 만지구~ 여기에 입력하면 데이터베이스에 연결해서 들어갈 수 있게 만들어주었다.
먼저 데이터베이스랑 연결을 하기 위해 application.properties 부분에 코드 작성해주었다.!
나는 mysql 을 사용해서 따로 계정을 만들어서 넣기엔 다른 컴퓨터로 작업할 때 번거로울 것 같아서 root 로 연동을 해주었고, CMD 로 코드를 짜주었다.
등록할 때 자동으로 번호가 들어갈 수 있게 auto_increment 설정을 해주었고,
id(작성자), title(제목), content(내용), date(작성한 날짜) 를 만들어 주었다.
작성할 작성한 날짜가 표지되지 않지만 등록된 게시물 리스트에 나오게 하기 위해 넣었고, timestamp 로 찍히게 하였다.
그리고 입력한 내용이 db 에 들어갈 수 있게 entity 페이지에 Weberp 페이지를 만들었다.
get,set 을 사용할 수 있는 lombok 기능을 할 Data 를 달아주고, ID 기본키를 가지고 올 수있게 한다음에 코드를 작성해 주었다.
strategy : 전략을 어떻게 해줄거냐? 라는 뜻으로 IDENTITY 를 가져와서 사용할 것이다 로 달아주었다.
여기서 IDENTITY 는 마리아db, MySQL 에서 사용하는 것이다.
나는 MySQL 을 사용하기 때문에 IDENTITY 를 입력해 준 것이당
아래 private 으로 입력할 때 db 에 입력해줬던 create 문이랑 동일하게 맞췄고, mysql 입력할 땐 언더바 '_' 를 사용해 주었지만 대신해서 뒤에 알파벳을 대문자로 바꿔서 입력했다.
이유는? '_' 를 인식하지 못하기 때문에! 대문자로 대신 바꿔서 camel 문으로 작성해주었다.
이제 locarhost 로 들어가서 입력을 해보았다.
이렇게 작성을 해놓고 등록 버튼을 눌러보면?
이건 미리 만들어놓은 작성한 게시물 내용이 나오는 페이지이고, cmd 에 확인을 해보았다.
쨔쟌! DB에 잘 들어가는 걸 확인했다!!
나머지 html 을 확인해보자
이게 위에 나오는 게시물을 입력했을 때 내용이 출력되는 html 이다.
여기까지 만들었고, Repository 페이지는 우리가 db 에 insert 문과 delete 등 입력해야 되는 내용을 repository 에 입력해서 우리가 페이지에서 입력했을 때 db와 연동하여 나올 수 있게 해주는 페이지이다.
아직 여기까지만 입력해 놓은 상태인데, extends 를 사용하여 상속받는 뜻으로 입력해 주고, JapRepository 를 사용해 주었는데 이걸 사용함으로써 좀 더 검색이 잘 되게끔 하게 해주는 메소드라고 생각하면 된다!
미리 검색 메소드를 정의하여 이 메소드를 호출하는 것만으로 검색이 좀 더 잘되게 해주는 것이다.
그리고 뒤에 <> 로 안에 들어가있는 값은 Weberp 는 Entity 를 가져오는 것이고, Integer 는 기본기 primarykey를 뭐로 지정해주었느냐에 따라 입력을 해주는 것이다.
Repository 페이지는 여기까지만 입력해 주었고, Service 로 넘어간다.
위에는 Controller 에 달아준 것과 동일하게 기본생성자 Autowired 를 달고 선언해 주었다.
아래 메소드를 만들어 주었다.
위에 기본생성자 만들어놓은 boardRepository 를 가져와서 save 라는 걸 작성해 주었는데 save 는 entity 값을 가져올 수 있게 해주는데, write () 안에 Weberp 타입을 선언해 주고 변수인 weberp 를 작성해준다.
그리고 save() 안에 weberp 변수를 넣어서 작성해 주었다.
이 Service 는 Controller 에서 사용한다!
이 작업을 유튜브, 구글, 수업 등을 참고하면서 작성을 해나가고 있는데,
작성하면서 모르는 내용을 찾아보고 하는 작업을 하면서 좀 더 자세하게 배워 나가는 느낌이 든다.
하지만 아직 부족한 느낌이 더 든다 ㅠ 그래도 열심히 계속 작업해보겠다!!!
저번주부터 찔끔찔끔 작업해오던건데 오늘까지 이렇게 마무리를 했고, 다음주까지 작업한 내용은 추가로 올려야겠다.