Spring 게시판 생성 1 - 환경설정
프로젝트 명 : spring
오라클 계정 신규 생성 : spring/spring123
환경설정 파일 작성 순서
- pom.xml
- web.xml
- servlet-context.xml
- configuration.xml
- board.xml (mapper)
- root-context.xml
순서를 지켜서 환경설정을 해주어야 한다.
프로그램 구조와 경로
src > main | java > myspring | myspring | controller | BoardController.java |
service | BoardService.java | |||
dao | BoardDao.java | |||
model | Board.java | |||
resouces | configuration.xml | |||
sql | board.xml | |||
webapp > WEB-INF | index.jsp | |||
spring | appServlet | servlet-context.xml | ||
root-context.xml | ||||
views | web.xml | |||
board | boardform.jsp | |||
boardlist.jsp | ||||
boardcontent.jsp | ||||
board.updateform.jsp | ||||
boarddeleteform.jsp | ||||
insertresult.jsp | ||||
updateresult.jsp | ||||
deleteresult.jsp |
1. 새로운 DB 계정 생성
2. 새로운 프로젝트 생성
webapp 하위에 sql 폴더를 생성하고,
sql 폴더에 db 관리를 위한 myboard.sql 파일을 생성한다.
Connection URL 에서 server를 localhost로 고쳐주어야 한다.
오라클과 계정 연동이 완료 되었다.
DB 저장을 위한 테이블을 생성한다.
잘 생성되었다.
3. 환경설정
1) pom.xml
이전 mybatis2 프로젝트의 pom.xml을 복사-붙여넣기 하였다.
환경설정 파일을 모두 바꾸고 실행하면 어느 지점에서 문제가 있는지 알기 어렵다.
그래서 환경설정 파일을 하나 바꾸고 나면 index를 실행해본다.
pom.xml에서는 문제가 발생하지 않았다.
2) web.xml
(1) servlet-context.xml, root-context.xml 읽어오기 : 파일 생성 시 자동 등록
(2) servlet-mapping 설정
/ 에서 *.do 로 변경했다.
(3) post 방식 전송 시 필요한 한글 인코딩 설정
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
(2) 에서 설정한 url-pattern 값과 동일하게 (3) 의 url-pattern도 변경한다.
이렇게만 해두면 샘플 파일이 실행되지 않는다.
HomeContoller.java의 value 값을 .do 형식으로 변경한다.
webapp 폴더 하위에 index.jsp 파일을 생성한다.
이제부터 spring 프로젝트 실행시 index.jsp 파일이 자동 실행되고
index.jsp가 실행되자마자 test.do 로 이동한다.
이상이 없으면 Hello world 페이지가 잘 나타난다.
한글 인코딩 설정을 추가했기에 이제부터는 한글이 잘 나타난다.
3) servlet-context.xml
프로젝트 생성시 java 폴더 하위에 com.myhome.spring 이라는 복잡한 패키지 경로를 설정했는데,
이것을 사용하지 않고 간단히 java-myspring 으로 설정할 예정이다.
먼저 폴더를 생성한다.
base-package 경로를 수정해준다.
myspring 하위에 controller, dao, service, model 폴더를 생성하고,
기존 패키지에 생성된 샘플 HomeController.java 파일을 myspring-controller 하위로 옮긴후
com.myhome.spring 패키지는 삭제한다.
패키지가 변경되어 오류가 발생하니 내용을 수정해주면 오류가 사라진다.
다음과 같이 폴더 구조가 변경되었다.
이상이 있는지 index.jsp 파일을 실행해봤는데, 브라우저에 잘 출력된다.
각 폴더 안에 필요한 클래스들을 생성했다.
이렇게 생성한 클래스 중, 컨트롤러와 서비스에 각 클래스에 맞는 어노테이션을 추가하고, 객체를 주입한다.
컨트롤러 - @Controller, 서비스 객체 주입
서비스 - @Service, DAO 객체 주입
DAO - @Repository, SqlSession 객체 주입
index.jsp를 실행해보면, DAO 레파지토리 어노테이션 까지는 정상 실행됐는데,
SqlSession 객체 주입부터는 500번 오류가 발생한다.
아직 진행하지 않은 단계가 있어 오류가 난 것이니
session 주입만 잠시 주석 처리하여 막아놓았다.
DTO 클래스 Board.java의 내용을 생성해본다.
DB 저장 테이블의 컬럼과 동일한 이름으로 private 프로퍼티를 생성하고,
접근할 수 있도록 getter-setter 메소드를 추가한다.
뷰 파일을 저장하는 WEB-INF/views 하위에 board 폴더를 생성하고
boardform.jsp 파일을 만들었다.
이 파일은 작성자, 비밀번호, 제목, 내용을 입력받는
아주 간단한 게시판 양식이다.
그러나 아직은 이 양식을 브라우저에 출력할 수 없다.
index.jsp 파일의 location 객체의 경로를 test.do 에서 boardform.do로 수정한다.
샘플 컨트롤러인 HomeController.java는 삭제해도 된다.
BoardController.java
boardform.do 값을 받는 메소드 boardform()을 생성한다.
특별한 일이 없는 한 접근 제어자는 public, 자료형은 String 이다.
아직은 아무런 내용도 작성하지 않았지만,
테스트를 위해 return 값으로 뷰 페이지 경로를 지정하고
index.jsp를 실행해본다. 이상이 없다면 글작성 페이지가 출력된다.
각 입력 양식의 name 값은 DTO의 프로퍼티, DB의 컬럼들과 이름을 맞춰두었다.
그러면 추후 DB 연동시 따로 매핑을 하지 않아도 자동으로 매핑이 이루어진다.
유효성 검사 파일을 따로 작성해서 삽입하지는 않았으므로
입력 양식 4개에 required 속성을 모두 추가했다.
4) configuration.xml
일전에 실습해본 MyBatis2 프로젝트 파일에서 복사-붙여넣기하여 필요한 내용을 수정한다.
5) board.xml
mapper 파일이 들어갈 폴더를 resources 하위에 생성하고,
MyBatis2 프로젝터에서 mapper 파일을 하나 가져와 복사-붙여넣기 한다.
수정, 삭제하여 필요에 맞게 쓸 예정이다.
파일 이름을 board.xml로 수정하고 namespace 값을 boardns로 지정했다.
index.jsp 를 실행하면 잘 실행이 된다.
6) root-context.xml
이전 프로젝트 MyBatis2에서 root-context.xml을 복사-붙여넣기 한다.
오라클 계정에 대한 정보를 수정해준다.
이제 DAO 클래스에서 SqlSession 객체를 주입해도 오류가 나지 않고 index.jsp가 잘 실행된다.
root-context.xml에 session bean 객체를 생성하는 내용이 있어야만 DAO 클래스에서 객체 주입이 된다.
잘 실행된다.
환경설정이 완료 되었다.
이제 본격적으로 게시판을 생성해본다.