jsp 게시판

작성자

jsp 게시판 만들기 도전

공부를 하던 중 한번 만들어 보는게 이해하는데 도움이 된다는 이야기를 듣게 되었다.
일단 만들어 보기 위해 자료를 찾던 중에 Spring boot을 사용해서 만드는 것을 찾아 보았지만 이해하기 힘들어서 도움을 요청 했더니 jsp를 사용해서 일단 간단한 원리를 이해하는게 좋다는 이야기를 시작으로 구상하게 되었다.
사용해볼 기술로는 mariadb, jsp, tomcat, apache를 생각했다.
개발툴로는 eclipse를 선택했다. 요즘 많이 사용하는 jetbrain의 intellij를 선택하지 않은것은 편의 기능이 너무 좋아서 오히려 이해하는데 안좋다는 생각이 들었기 때문에 eclipse를 선택하였다.

dynamic web project

파일구조

webapp부분의 경우 버전에 따라서 부르는 명칭이 차이가 생긴다.
먼저 게시판에 들어갈 기능을 구상하였다.

기능

유저

1.
회원가입
2.
로그인
3.
관리자 구분

게시판

1.
게시글 작성
2.
게시글 삭제
3.
게시글 수정
4.
게시글 확인
기능 부분은 이해를 하는 것이 목표이기 때문에 간단하게 구상하였다.

디자인 패턴

디자인 패턴으로 MVC 디자인 패턴을 지정하고 만들기로 했다. 이유로는 MVC패턴을 많이 사용하기 때문이다.
→ 디자인 패턴을 찾았을때 글이 가장 많이 찾아지기도 했다.
찾아본 결과 MVC가 무조건 정답인것은 아니다. MVC의 개발 기간이 길어지기 때문에 간단하게 구성해야 할 경우 MVC를 고집하는 것이 단점이 될수도 있다.

MVC 디자인 패턴이란?

MVC 디자인 패턴은 Model, View, Controller의 약자이다. 프로젝트를 구상하는 과정에서 각 역할에 따라서 세가지로 구분하여 나누는 것이라고 할 수 도 있다. 각 역할에는 규칙이 존재하는데 각 규칙을 알아보고 넘어가는 것이 좋을것 같다.

Model

애플리케이션의 정보 또는 데이터라고 할 수 있다.
1.
편집이 가능한 사용자의 데이터를 전부 가지고 있어야 한다.
2.
Model은 View와 Controller에 대한 정보를 가지고 있어서는 안된다.
3.
Model은 재사용이 가능해야하고 다른 인터페이스에서 변경이 일어나면 안된다.

View

사용자 인터페이스 요소라고 할 수 있다.
1.
Model이 가지는 정보를 따로 저장해서는 안된다.
2.
다른 구성요소로 무엇이 존재하는지 몰라야 한다.

Controller

데이터와 사용자 인터페이스 요소를 연결하는 역할을 수행한다.
1.
Model이나 View에 대하여 알고있어야 한다.
2.
Model이나 View에서 일어나는 변경사항에 대하여 인지하고 있어야 한다.

MVC의 장점

위에서 언급하였듯이 MVC가 정답이 되는 것은 아니지만 MVC만의 장점을 알아보고 다른 디자인 패턴과 비교해 보면서 자세하게 알아보도록 하자
1.
사용자에게 보이는 페이지, 데이터 처리, 제어를 따로 개발하면서 각각의 역할에만 집중하는 것이 가능하다.
2.
코드의 중복을 최소화 하여 코드에 대한 확장성, 유연성이 증가한다.
유연성 : 클라이언트의 요구에 빠르게 반응하여 처리하는 것이 가능하다.

MVC Model1과 Model2

MVC에도 종류가 구분되는 것을 알았기 때문에 공부 해보도록 하겠다.
Model1과 Model2의 차이가 크게 발생하지 않을 것이라고 생각했지만 공부를 해보니 생각보다 차이가 많이 발생한다. 일단 차이를 정리하기 전에 각각을 알아보고 넘어가도록하겠다.

MVC Model1

MVC Model1은 View와 Controller를 jsp에서 모두 구현하는 구조를 가지고 있다.
클라이언트의 요청을 jsp페이지는 java beans나 별도의 service class를 이용하여 작업을 처리하고 결과를 클라이언트에 반환하는 형식이다.

장점

1.
구조가 단순하고 직관적이다.
2.
개발 시간이 비교적 짧아 개발 비용이 감소한다.

단점

1.
view에서 로직 처리를 위한 java코드가 섞여있기 때문에 jsp에서 보이는 코드가 복잡하다.
2.
뷰에서 back-end와 front-end를 같이 처리하기 때문에 분업이 힘들다.
3.
확장성이 나쁘고 유지보수가 어렵다.

MVC Model2

Model2 구조는 MVC 패턴을 웹 개발에 도입한 구조이다.
클라이언트 요청에 대한 처리는 Servlet이 담당하고 로직 처리는 java class(Service, DAO, java Beans)가 담당한다. 클라이언트에게 출력되던 부분만을 jsp에서 담당하게 된다.

장점

1.
뷰 코드와 로직을 처리하는 코드가 분리되어 jsp가 model1에 비해서 복잡하지 않게 된다.
2.
백엔드와 프론트엔드의 분리로 분업에 용이해졌다.
3.
유지보수가 쉬워졌다.(기능에 따라 코드가 분리되어)
4.
확장성이 뛰어나다.

단점

1.
구조가 복잡하기때문에 초기에 진입이 어렵다.
2.
개발 시간이 증가하여 개발 비용이 증가했다.

개발

기본적으로 구조가 간단한 MVC Model1을 만들어 보고 model1을 model2로 바꾸면서 직접적인 비교가 가능하도록 만들어볼 생각이다.

프론트엔드

프론트엔드로는 jsp에서 로직 처리와 동시에 view에서 처리할 작업도 진행할 것이다.
디자인 적인 요소를 위해서 BootStrap을 사용해서 도움을 받을 것이다.
jsp에서는 기본적으로 html형식으로 프론트를 작성하고 후에 로직 처리를 할것이다. 만들 게시판의 기능으로 다음과 같이 선택하였다.
회원가입
로그인
메인화면
네비게이션바
게시글 작성
게시글 확인
연습용이기 때문에 가장 기본적인 기능만을 선택하였다.
먼저 회원가입 화면을 구성하도록 하겠다.

백엔드

서버