티스토리 뷰
모든 준비는 끝 ! 개발환경 설정도 끝났고, 깃 연결도 완료! 신나게(?) 개발만 하면 된다..
이번 프로젝트에서 첫번 째 관문이 게시판을 구현해야 된다.
그러기 위해서는 게시판에 글을 쓰고, 글을 수정하고, 글을 삭제하고, 댓글을 작성하고, 페이지를 만들고 등등 여러가지 기술을 구현해야 한다.
오늘은 그 첫번 째 단계로, 게시판에 글을 썼다고 가정한 후, 그것을 페이지에 나타나게 구현해보겠다.
먼저 생성한 Spring Project에서 WEB-INF/views에 board라는 폴더를 생성한 후, 실제로 보여질 화면 list.jsp파일을 넣어준다.
즉, WEB-INF/views/board/list.jsp 로 생성한 후에 jsp파일 헤더 부분에 jstl 사용을 위한 url과 한글 패치 페이지 언어 스크립트를 넣어준다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
그리고는 서버를 열면 첫번째로 보여지는 화면 즉, home.jsp에서 list.jsp로 넘어갈 수 있게 링크를 작성 해 준다.
<a href="/board/list">게시물 목록</a><br />
그 다음에는 borad/list에 해당하는 컨트롤러를 생성해야 한다. com.board.controller 패키지에 새로운 클래스 boardcontroller를 생성후에 컨트롤러 코드를 작성해주면 된다. @RequestMapping
여기까지 작업을 해주면, 로컬서버를 열어 확인해보면 home.jsp가 열릴 것이고 home.jsp에 작성된 링크를 통해서 들어가보면 boardcontroller를 통해서 list.jsp로 매핑되어 넘어갈 것이고, list.jsp의 페이지가 보일 것이다. list.jsp에 아무런 작업을 하지 않았기 때문에, body 태그 안쪽에 작성될 적절한 컬럼들을 작성해준다.
이제는 Mysql을 통해서 작성된 게시판의 정보들이 넘어오기만 하면 되기 때문에 Mapper에 적절한 쿼리문을 작성해준다.
그리고는 com.board.dao라는 패키지를 생성한 후, 하위 폴더에 boradDAO.java 인터페이스를 생성후, 이것을 상속받는 boradDAOImpl 클래스를 생성해준다. com.board.service에도 같은 방법으로 완성시켜준다.
boardDAO에 다음과 같은 코드를 추가합니다.
package com.board.dao;
import java.util.List;
import com.board.domain.BoardVO;
public interface BoardDAO {
public List<boardVO> list() throws Exception;
}
boradDAOImpl 파일에 sql 세션을 인젝션 할 수 있는 코드를 작성해준다.
@Repository
public class BoardDAOImpl implements BoardDAO {
@Inject private SqlSession sql;
private static String namespace = "com.board.mappers.board";
// 게시물 목록 @Override public List list() throws Exception {
return sql.selectList(namespace + ".list");
}
여기서 주의할점은 여기서의 namespace가 매퍼에 있는 namespace와 동일해야 된다는 것이다 !
같은 방법으로 service도 완성 시켜준다.
다음은 model을 통해서 컨트롤러와 뷰를 연결시켜준다.
그리고는 boradVO에서 컬럼의 형태의 맞게 각각 Setter,getter 메소드를 정의해준다.
이제는 연결은 모두 완성됐고, list.jsp로 돌아가 각 컬럼이 들어갈 수 있는 공간을 만들어준다.
이렇게 하면 완성! 이라고 생각했으나, 계속 오류가 나길래 구글링을 통해서, 해결한 결과
스프링이 BoardDAO와 BoardService를 찾을 수 없기 때문에 생기는 500에러라고 한다.
root-context.xml 파일에 다음과 같은 코드를 입력하면 오류가 해결됐다!
<context:component-scan base-package="com.board.domain" />
<context:component-scan base-package="com.board.dao" />
<context:component-scan base-package="com.board.service" />
root-context.xml 파일의 역할이 정확히 어떤 역할인지 이해는 안되지만, 느낌은 오는 그런 느낌.. 더 공부해 봐야겠다.
오늘 Spring에서 Controller, Mapper, DAO, Service, 등등을 다뤄봤는데, 아직은 완벽히 익숙하지가 않다.. 프로젝트 진행하면서, 각 개념 공부를 더 해야겠다.
'JavaProject > Spring' 카테고리의 다른 글
Spring은 무엇이며, Spring boot와 차이점은 뭘까? (1) | 2022.11.23 |
---|---|
[Eclipse] Github에서 프로젝트 가져오기 - import projects (0) | 2022.10.17 |
<Select> 유효성 검사 및 프로젝트 등록하기 게시판 구현하기. (1) | 2022.05.06 |
로그인시 오류메세지 및 중복확인 구현 (0) | 2022.04.10 |
SSO 로그인 구현하기. (0) | 2022.04.03 |