이제 MVC 패턴 게시판을 만들어 봅시다.
코드는 1.6에서 올린 파일을 그대로 사용하겠습니다~
필요하신분은 이전 게시글가서 가져오세요.(기능상 똑같으나 미세하게 다름 DB 계정이나 비밀번호등..)
MVC는 소스의 분업화, 코드분리입니다.
*.jsp파일들을보면은 형태가 다른 2가지로 구성이 되어 있는 것을 확인할 수 있습니다.
<% %> 구문과 아닌 구문들이 있지요. 이것을 구별하는 것이 시작입니다.
MVC에서는 스크립트릿을 src폴더안에 자바코드로 들어가게 됩니다.
그러면 .jsp에는 HTML코드와 자바스크립트 코드만 남게 됩니다.
스크립트릿은 src폴더안에 들어가게 되지요!
그럼 src폴더에 있는 스크립트릿이 어떻게 .jsp에 뿌려줄것인가? 가 문제겠죠. 뿌려주는건 JSP가 해야하니..그렇다면
JSP에서는 EL(Expression Language)라고하는 표현언어를 통해서 뿌려주게 됩니다.
이 친구를 다운받아서 WebContent ->WEB-INF -> lib 폴더에 붙여넣으면됩니다.
이제 이 라이브러리를 사용하기 위해선
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
를 선언해줍시다.
사용법은 <%= %> 대신에 ${변수이름} 입니다.
for문 대신에 <c:forEach items="" var=""> <c:forEach>
item에는 for문으로 돌릴 리스트나 맵이 들어가며 var에는 iterator될 값들이 들어갑니다.
if문 대신에 <c:if test=""></c:if>
쌍따옴표 안에는 조건문
contets.jsp를 예제로 사용할건데
jstl을 쓰려면 각 소스에 흩어져있는 스크립트릿을 모아주어야 합니다.
**request 객체에 대해서 알아보고 갑시다.
request객체의 역할은 인코딩문제와 파라미터를 받는 역할뿐만아니라 MVC에서 중요한 역할인 dispatcher와 forward를 합니다.
request.setAttribute()라는 메소드는 getParameter()와 반대로 페이지에서 해당 변수를 사용할 수 있게 하는 겁니다.
자 그럼 content.jsp파일을 고쳐봅시다. 한곳으로 모아주어야겠죠?
수정된 소스코드를 보면은 스크립트릿과 자바스크립트, HTML이 구분된것을 알 수 있습니다.
자 그럼 여기서 스크립트릿은 src폴더안에 java소스로 갈것이고, 이 java소스를 .jsp파일과 연결해야겠죠?
이 때 연결해주는 역할을 하는게 컨트롤러입니다.
컨트롤러의 역할은 해당 URL을 파악하고 해당하는 java액션(src폴더안에 java소스)파일을 찾아 매칭하고
해당 액션이 실행되면 request.setAttribute()에 의해 넘어온 값들을 jsp페이지로 포워딩시켜주는 역할입니다.
포워딩 역할을 해주기전에 먼저 index.jsp파일(블로그 설명에서는 list.jsp로 바꾼 파일)의 코드분리가 필요한데요.
content.jsp는 하나만 뿌려주면되는데 목록에서는 여러 개의 값을 가져와야합니다. 여러 개의값을 가져와야하니 어디다가
request.setAttribute()를 써야할지 애매하고.. 이때 쓰는 것이 Entity Beans라고 하는 디자인 패턴을 사용합니다.
Entity Beans를 쉽게 설명하면 DB에 가져온 데이터들을 담는 그릇이라고 생각하면 쉽습니다.(http://kimseunghyun76.tistory.com/327)
Entity Beans의 정의는 다음과 같습니다.
- DB에 저장된 데이터를 객체로 표현하기 위한 EJB Component
- Entity Bean의 내용은 DB의 내용과 일치
- Entity Bean하나의 객체는 DB테이블의 하나의 row와 mapping됨.
- DB의 하나의 행(recode,row,entity)은 여러 개의 열(column, attribute)을 가지고 있는데, 각각의 attribute는 Bean 객체의 멤버 필드에 값이 저장됨.
이제 이 Entity Bean를 만들어 볼건데요. src폴더에 패키지를 하나 생성합시다.
생성을 했다면 com.board.beans라는 패키지안에 Java파일을 만들어줍니다. New->Class로 만들면 되요.
많이 보던 변수들이죠? 이제 이것들을 한데 묶어 사용할겁니다. 사용하기전에 제대로 사용하기 위해선 겟터와 셋터를 만들어주어야 하는데
일일이 치면은 엄청 귀찮겠죠? 이런 일을 대비해서 이클립스에서는 코드제너레이터 기능이 있습니다!
완전 편하게 게터와 셋터를 다 만들어 줍니다! (다른 곳에서도 써먹으세요)
Source -> Generate Getters and Setters -> 모두 선택 -> OK하면 게터와 셋터가 다 만들어집니다!
이제 사용할 수 있는 Entity Beans가 생겼으니까 이 빈을 사용하기 위해 코드 상단에 import를 시켜주어야겠죠?
이 Beans가 쓰일 곳은 index.jsp(list.jsp) 이니까 당연히 이 파일에 import시켜주어야 합니다.
<%@ page import="com.board.beans.board"%>
그리고 이 객체를 ArrayList에 담기위해 ArrayList도 import 합니다.
<%@ page import="java.util.ArrayList" %>
그리고 표현언어인 jstl도 import해주어야죠
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
자 이제 bean와 Arraylist쓸 준비도 되었겠다. 코드 분리를 해봅시다. content.jsp와 비슷하게 먼저 스크립트릿을 분리합니다.
코드를 분리한다음 스크립트릿에서 Bean와 ArrayList를 이용하여 값을 받아옵니다. 값을 받아오고나서
뿌려줄 수 있도록 set한다음 html,javascript에서 jstl을 이용해 ${변수}로 출력하면되겠죠?
자 그럼 index.jsp(list.jsp)까지 수정되었고 잘 동작하는지 확인해봅시다. 잘 동작하기를 바라겠습니다..
'Develop > JSP-Oracle' 카테고리의 다른 글
[게시판 만들기] JSP와 Oracle을 이용해 게시판을 만들어보자 -2.4- (0) | 2017.10.09 |
---|---|
[게시판 만들기] JSP와 Oracle을 이용해 게시판을 만들어보자 -2.3- (0) | 2017.10.09 |
[게시판 만들기] JSP와 Oracle을 이용해 게시판을 만들어보자 -2.1- (0) | 2017.10.07 |
[게시판 만들기] JSP와 Oracle을 이용해 게시판을 만들어보자 -1.6- (0) | 2017.10.07 |
[게시판 만들기] JSP와 Oracle을 이용해 게시판을 만들어보자 -1.5- (3) | 2017.10.07 |
최근댓글