티스토리 뷰
위 사진은 가장 처음 스프링 프로젝트를 만들면 볼 수 있는 프로젝트 구성이다.
src/main/java : 자바코드가 들어가는 곳.
( 대표적으로 Controller, DAO, VO 등등이 들어간다.)
Controller가 존재하는 이유는, Spring에서는 조금 후 소개할 WEB-INF에 직접 접근할 수 없도록 되어있다. 그런데 모든 웹페이지 정보(JSP)는 WEB-INF에 저장되어 있고, 직접 접근이 안되기 때문에 사용자 Client는 우선적으로 JAVA코드인 Controller에 접근을 하고 Controller에서 그에 해당하는 JSP로 포워딩 시켜주게 된다.
src/main/resources : 프로젝트 실행시 사용되는 자원들이 들어가는 곳.
mybatis연동시 사용되는 기본적인 설정파일들과, 기존에 사용하던
root-context.xml 와 servlet-context.xml을 관리목적상으로 옮겨서 저장하기도 한다. (이 부분은 선택사항이다.) root-context.xml이 여러가지 정보로 길어지는 것을 방지하고 파일을 분할해서 관리하므로 좀 더 관리상 수월하다.
1. config.mybatis.db.properties
: DB연동시 사용될 정보 저장
(나중에 context에서 이 파일을 import한 후에 사용한다.)
2. config.mybatis.mybatis-config.xml
: mybatis 기본 세팅정보, mapper에서 사용할 Alias, mapper정보 저장
typeAlias 태그는 이후 mapper XML에서 파라미터 및 반환값의 자료형을 간단하게 사용하고자 사용한다.
mapper 태그는 config.mybatis.mapper 패키지의 모든 xml 파일을 매핑시켜주면 된다.
3. config.mybatis.mapper
: DB연동시 사용할 모든 XML을 저장해 주면 된다.
기본적으로 XML 파일의 구성을 살펴보면 제일먼저 <mapper namespace="board"> 태그가 있는데, 이 태그를 사용하면 DAO에서 sqlSession.selectList("board.board_list"); 의 빨간색과 같이 접근할 수 있다. 파란색 board_list는 밑에 여러 쿼리 태그들 중 어느 태그를 사용할 것인지 id를 지정해 주는 것이다.
그리고 이후에 따라나오는 parameterType, resultType은 매개변수와 반환형의 자료형을 지정해 주는 것인데 여기서 b라는 것은 이전에 mybatis-config.xml에서 Alias를 해주었기 때문에 이렇게 사용이 가능한 것이다. 그리고 꼭 기억해야 할 점은 반드시 매개변수와 반환값은 1개여야 한다는 점이다.
그리고 b의 자리를 대신할 수 있는 것에는 int, java.util.Map 등등이 있다. (반드시 패키지 다 써줘야 한다.)
마지막으로 매개변수로 넘어온 데이터 접근시에는 #{ " 이름 " } 와 같은 형태를 사용한다.
그러면 이렇게 정의해 둔 데이터를 DAO에서 어떻게 사용하는지 살펴보자.
이런식으로 사용하면 된다. 사용자체는 간단한 것 같다.
한가지, sqlSession에 대해서 이야기 해보면 sqlSession은 밑에서 설명할 root-context.xml에서 정의 되어진 객체이다.
위 두 과정을 거쳐서 sqlSession이라는 객체가 생성되는 것이다. 마지막 사진과 같은 함수가 있다면 자동적으로 sqlSession 객체를 사용할 수 있다는 점 기억하자. (이 외에도 많은 것들이 이런 방식으로 사용된다.)
4. config.spring.context
: root-context.xml을 보기편하게 여러 xml파일로 분할해서 관리한다.
대신 root-context.xml을 web.xml에서 읽어들이게 되어있기 때문에, 읽어들이는 경로를 config.spring.context로 변경 해주어야 정상적으로 프로젝트 실행 시 이 파일들을 읽어올 수 있게 된다.
- context-1-datasource.xml : 제일 위에 있던 db.properties를 아래 명령어로 import 한 후 디비정보 입력.
<context:property-placeholder location="classpath:config/mybatis/db.properties" /> - context-2-mybatis.xml : mybatis와 연동. factoryBean과 sqlSessionBean 생성하기.
- context-3-dao.xml : dao에서 사용할 sqlSession 생성하기.
5. config.spring.servlet
: 기존에 servlet-context.xml 을 여기다가 옮겨서 관리한다. (한 눈에 보기위해서)
마찬가지고 web.xml을 수정해 줘야 정상적으로 읽어올 수 있다.
servlet-context.xml에서 기억해야할 내용으로는 컨트롤러 경로를 지정해주는 것이다.
여기서 ref="board_daoBean"을 해주는데 board_daoBean은 어디에 정의 되어있을까?
생각해보면 servlet-context.xml보다 먼저 읽어들이는 파일은 web.xml, root-context.xml 두 가지 밖에 없기 때문에 이중에서 찾아보면된다. 그 결과 context-3-dao.xml에서 정의해 준다는 것을 쉽게 찾을 수 있었다.
밑에 나머지를 살펴보면 webapp 이라는 폴더가 보이는데, 여기가 실질적으로 웹사이트에 해당되는 코드, 자원, 설정들이 저장되는 폴더이다.
1. resources
: 웹사이트 구성시 사용되는 자원들이 저장된다. (css, img, js 등등)
2. WEB-INF
: 실질적으로 웹사이트의 설정 및 코드가 저장된다.
반드시 기억해야 할 점은 외부에서 이 폴더에 접근이 불가능하다. 그러면 이 폴더 내부에있는 JSP 파일에는 어떻게 접근을 하게 될까? 우선 JAVA코드인 Controller에 접근을 하고 그 이후에 Controller가 해당하는 JSP파일로 포워딩 해주는 방식을 통해 접근하게 된다. WEB-INF에 직접 접근시 바로 404에러가 난다는 점 꼭 기억하자.
2-1. spring : root-context.xml, servlet-context.xml의 기존 경로이다.
2-2. views : jsp코드들이 저장되는, 즉, client에게 보여지는 코드들이 저장되는 곳이다.
2-3. web.xml : pom.xml 다음으로 읽어들이는 파일이다. 해당 프로젝트의 전반적인 설정이 저장되어 있다.
( 한글 인코딩, 읽어들일 파일 경로 등등)
3. pom.xml
: 라이브러리나 프레임워크를 Maven이 자동으로 관리해 주는데 (일일히 업데이트 할 필요 없어서 좋다.)
이 것을 관리하기위한 빌드 파일이다. 이 파일 내부에 빌드할 내용을 적어두면 프로젝트 저장시마다
자동적으로 필요 라이브러리, 프레임워크를 빌드한다.
'Web > Spring & JSP' 카테고리의 다른 글
[Spring] Controller 와 View의 연결 (0) | 2019.06.11 |
---|