Kim VamPa

[Spring][쇼핑몰 프로젝트][0] 프로젝트 생성 및 환경설정 본문

스프링 프레임워크/쇼핑몰 프로젝트

[Spring][쇼핑몰 프로젝트][0] 프로젝트 생성 및 환경설정

Kim VamPa 2020. 4. 16. 10:30
728x90
반응형
프로젝트 Github : https://github.com/sjinjin7/Blog_Project
프로젝트 포스팅 색인(index) : https://kimvampa.tistory.com/188

※ 스프링 MVC 프로젝트 기본설정을 새롭게 정리하였습니다. 

 

[STS][스프링 게시판][0] MVC 프로젝트 생성 및 기본설정 - 1

[STS][스프링 게시판][0] MVC 프로젝트 생성 및 기본설정 - 2

[STS][스프링 게시판][0] MVC 프로젝트 생성 및 기본설정 - 3

 

 설정내용은 현재의 포스팅과 새롭게 작성한 포스팅 동일합니다. 단지 차이점은 새롭게 작성한 포스팅은 설명을 많이 덜고 진행위주로 작성하였습니다.

 더불어 실행환경이 조금다릅니다. 현재의 포스팅 경우 STS3, JAVA8, Oracle11이지만 새로운 포스팅에선 STS4, JAVA11, Oracle19 환경에서 작성하였습니다. (환경이 달라졌다해서 설정 방법이 다르진 않습니다.)

 

기획의도

스프링 프레임워크를 기반으로 한 쇼핑몰 프로젝트를 만들고자 합니다.

 

 전 6개월간의 국비지원 과정을 이수하였습니다. 해당 과정에서 개인 프로젝트(책 쇼핑몰)를 진행하였습니다. 프로젝트를 진행하면서 제대로 이해를 하지 못하고 넘어간 것들이 많았고, 다른 프로그램, 기술을 사용해보고 싶었지만 부족한 시간으로 인해 사용해보지 못했던 아쉬움이 들이 있었습니다. 앞으로 포스팅할 글들을 통해 이런 아쉬움을 채우고자 합니다.

 

 쇼핑몰 만들기 프로젝트 포스팅을 통해 개인적으로 2가지를 목표가 있습니다. 첫 번째로 국비지원 프로젝트에서 제가 사용했던 것들에 대해 정확이 이해해보고, 사용해보지 못했던 기술(RestfulAPI) 혹은 프로그램(OracleDB)을 사용해보는 것입니다. 두 번째는 제가 프로젝트를 진행하며 다른 분의 블로그 글 들을 통해 배우고 힌트를 얻었던 것처럼 처음 스프링을 시작하시는 분들에게 조금이나마 도움이 되는 글을 쓰는 것입니다. 

 

 진행할 프로젝트는 쇼핑몰이 가지고 있는 핵심적인 기능들을 추가해보고자 합니다. 목록은 다음과 같습니다. (필요 혹은 상황에 따라 줄어들 수도 있고 늘어날 수도 있습니다. )

 


1. 회원가입(주소 API 연동, 이메일 인증, ajax 통한 아이디 중복검사)
2. 관리자 페이지(인터셉터 적용, 상품관리, 회원관리)
3. 업로드(이미지 등록, 수정, 삭제)
4. 검색(&페이징)
5. 구매(장바구니, 포인트 사용)
6. 댓글(등록, 수정, 삭제)

 

프로젝트에 사용될 환경은 다음과 같습니다. 

  • STS 3.9.9
  • Java SE 8 U21
  • Apache Tomcat 8.5
  • Oracle DB & MySQL
  • MyBatis

 

프로젝트 생성 및 기본 환경설정

 

* 새로운 워크 페이스 사용 시에 아파치 톰캣 연동을 해야 합니다. 연동방법은 다음의 글을 참고해주세요. 아파치 톰캣 이클립스 연동 방법

 

1) 새로운 MVC 프로젝트를 생성하고 스프링/자바 버전을 변경해줍니다.

- [Spring][01]MVC 프로젝트 생성 및 기본환경 설정(생성 및 구동 테스트)글을 참고 부탁드립니다.

- 저는 VamPa, VamPa_MySQL 두 개의 DB 프로그램을 사용하기 위해 두 개의 프로젝트를 생성하겠습니다. VamPa는 OralceDB와 연결된 프로젝트이고, VamPa_MySQL는 MySQLDB와 연결된 프로젝트입니다. 

 

그림 2-1

 

그림 2-2

 

 

 

2) 테스트/로그 라이브러리를 추가, Junit라이브러리 버전을 변경해줍니다.

- [Spring][02]MVC 프로젝트 생성 및 기본환경 설정(의존성 주입 테스트) 글을 참고 부탁드립니다.

- Lombok 라이브러리 사용을 원할 시 설치해줍니다.([Spring]Lombok 개념 및 설치방법)

 

그림 2-3

 

3) JDBC 라이브러리 추가 및 JDBC 연결 테스트

- Oralce을 사용 시 [Spring][03-01]JDBC 연결 테스트 (Oracle DB 연결) 참고.

- MySQL을 사용 시 [Spring][03-02]JDBC 연결 테스트 (MySQL DB 연결) 참고.

 

그림 2-4

 

4) 커넥션 풀 & DataSource 설정

- [Spring][04]커넥션 풀 설정(HikariCP) 참고

 

그림 2-5

 

5) My Batis 라이브러리 추가, SQLSessionFactory 설정.

- [Spring][05-1]MyBatis 라이브러리 추가, SQLSessionFactory 설정 참고.

- [Spring][05-2]MyBatis 사용(Mapper 인터페이스, Mapper XML) 참고.

 

그림 2-6

 

6) Log4jdbc-log4j2 추가 및 설정.

- [Spring][06] Log4jdbc-log4j2 추가 및 설정방법 참고.

 

 

7) 패키지  추가 및 설정

 

가. src/main/java 패키지 3개를 추가해줍니다.

  • com.vam.model : VO(Value Object) 패키지입니다. 데이터 타입을 저장합니다.
  • com.vam.mapper : DAO(Data Access Object) 역할을 하는 패키지입니다. 데이터베이스 접속하는 역할을 합니다.
  • com.vam.service : Service 패키지 입니다. mapper와 Controller 사이를 연결해주는 역할입니다. 

그림 2-7

 

 

나. Mapper XML 저장 위치 폴더 생성

- src/main/resources 위치에 mapper 패키지명(com.vam.mapper)을 폴더 경로로 만들어줍니다.

- 해당 경로에 mapper로 사용할 xml파일을 저장시킵니다.

 

그림 2-8

 

다. 생성한 패키지가 스프링에서 인식이 되도록 root-context.xml 파일을 수정합니다.

- mapper 패키지는 MyBatis가 인식할 수 있도록 <mybatis-spring:scan>태그를 추가 해줍니다.

- model, service 패키지는 스프링이 인식할 수 있도록 <context:component-scan>태그를 추가해줍니다.

 

 

그림 2-9

 

 

8) Servlet 버전 변경

- Java 설정 등을 이용하기 위해선 servlet 3.0 이상 버전을 사용해야 합니다. 

- pom.xml 에서 기존 servlet 2.5 버전을 주석 처리 혹은 삭제 후 3.1.0 버전을 추가합니다.

		<!-- <dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency> -->
		<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
		<dependency>
		    <groupId>javax.servlet</groupId>
		    <artifactId>javax.servlet-api</artifactId>
		    <version>3.1.0</version>
		    <scope>provided</scope>
		</dependency>

 

그림 2-10

 

9) 프로젝트가 "절대 경로"를 이용하도록 구조를 변경합니다.

 

가. Servers 창에 있는 Tomcat v8.5 Server at localhostd을 더블클릭하여 Tomcat v8.5 Server at localhost 설정 창을 뛰웁니다. 

 

그림 2-11

 

나. Tomcat v8.5 Server at localhost창 아래 네비 중 [Modules]을 클릭합니다. 

 

 

그림 2-12

 

다. 자신이 경로를 변경할 프로젝트를 선택 후, [Edit] 버튼을 클릭합니다. 

 

그림 2-13

 

라. [Path] 란에 "/controller"을 "/"로 변경 후 [OK] 버튼을 클릭합니다.

 

그림 2-14

 

그림 2-15

 

마. ctrl + s를 눌러서 저장하여 경로가 적용되도록 합니다.

 

 

 

10) 한글 환경설정을 합니다.

 

(1) 이클립스에 대한 기본 환경설정을 해줍니다. 다음 글을 참고 부탁드립니다.

이클립스(Eclipse) UTF-8 인코딩 변경[한글깨짐방지]

 

이클립스 환경을 UTF-8 설정을 하였음에도 불구하고 다음과 같은 화면이 뜰 수 있습니다. 

그림 2-16

 

"?"뜨는 이유는 인코딩이 깨져서입니다. 해당 부분이 "년/월/일"이 떠야 합니다. "프로젝트 properties'와 프로젝트의 "web.xml" 2개를 추가적으로 변경해주어야 합니다. 

 

 

(2) 프로젝트 properties 설정 변경

 

가. 자신의 프로젝트를 선택 후 오른쪽 마우스를 클릭합니다. 목록 중 제일 아래에 있는 [properties]를 클릭합니다.

그림 2-17

 

나. 좌측 목록중 resources를 선택합니다. Test file encoding에 [Other]를 체크 후 UTF-8을 선택합니다. [Apply and Close]를 클릭하면 설정이 완료됩니다. 

그림 2-18

 

(3) "src -> main -> webapp -> WEB-INF" 경로에 있는 web.xml에 아래의 코드를 추가합니다.

 

    <filter>
        <filter-name>encodingFilter</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>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

그림 2-19

 

 

 

위의 (1)~(3) 설정을 완료하시면 [2-20]과 같이 기존 "?"로 표시되었던 글자들이 "년/월/일"로 변경되었음을 알 수 있습니다. 

그림 2-20

 

 

 

 

 

 

 이상 프로젝트를 본격적으로 시작하기 전 기본환경 설정 입니다. 저같은 경우 처음 프로젝트를 시작하기전 기본 환경설정이 매우 어렵게 다가왔습니다. 하면서 가장 중요하다고 느낀 점은 어떤 라이브러리 혹은 기능이 추가했을 시 그때그때 test클래스를 통해 정상적으로 작동이 되었는지 그때그때 확인해야 한다는 점이었습니다. 번거롭고 시간이 좀 더 걸리기는 하지만 이러한 방식이 결과적으로는 시간을 줄이는 방법이었습니다. 그 이유는 모든 기능을 추가 후 마지막에 테스트하여 에러가 났을 경우 에러가 난 부분을 찾기가 여간 어려운 게 아니었기 대문입니다.

 

 기본 설정 이후 추가적으로 필요한 라이브러리, 데이터베이스 테이블들은 기능 구현에 필요할 때 추가하며 진행하겠습니다.

 

 

Reference

  • 코드로 배우는 스프링 웹 프로젝트(남가람북스)

 

DATE

  • 2020-04-16
728x90
반응형
Comments