[Spring] Mac에 Spring 프로젝트 생성하기

Junseo Kim·2020년 1월 4일
0
  • ide는 intellij를 사용할 것이다.

필요사항

스프링 프로젝트 생성

intellij를 실행시키고, Creat New Project를 클릭한다.

스크린샷 2020-01-05 오전 1.42.28.png

*스프링 프로젝트 생성 시, Maven프로젝트에 spring을 추가해주는 방법과, spring프로젝트에 maven을 적용하는 방법이 있는데, 여기서는 Maven프로젝트에 spring을 추가하는 방법을 사용하겠다.

왼 편에서, maven을 클릭해주면, JDK가 설치되어있을 시, 자동으로 Project SDK가 설정되어있다. Create from archetype을 체크해제하고 Next를 누른다.

스크린샷 2020-01-05 오전 1.47.15.png

GroupId와 ArtifactId를 적어주고 Next를 누른다. 여기서 GroupId는 자신의 여러 프로젝트 간 식별자 역할을 하고, ArtifactId는 버전정보를 생략한 jar 파일의 이름이다. 둘 다 맘대로 적어주면 된다.

스크린샷 2020-01-05 오전 1.50.46.png

프로젝트 이름(기본적으로는 artifactId와 동일한 값이다)과 프로젝트를 저장할 위치를 설정해준다.

스크린샷 2020-01-05 오전 1.53.40.png

finish를 누르면 maven 프로젝트가 아래와 같이 생성된다.

스크린샷 2020-01-05 오전 1.55.26.png

왼편하단에 아래와같은 알림이 뜨면, Enable Auto-import를 눌러준다.
스크린샷 2020-01-05 오후 4.45.49.png

이제 여기에 spring을 추가할 것이다.

프로젝트 폴더에서 오른쪽 클릭을 하여 Add Framework Support...를 클릭한다.
스크린샷 2020-01-05 오전 1.56.27.png

왼 편에서, spring 하위의 Spring MVC를 선택하고 ok를 누른다.
스크린샷 2020-01-05 오전 1.57.44.png

그럼 아래와 같이 web이라는 디렉토리가 생긴다.

스크린샷 2020-01-05 오후 4.57.51.png

이 구조로 사용해도 아무런 문제가 없지만, 여기서는 구조를 조금 바꾸어주려고한다.
만들어진 web을 webapp으로 바꾸어주고, webapp 디렉토리를 src - main 으로 옮겨준다.

스크린샷 2020-01-05 오후 4.59.52.png

File - Project Structure을 눌러준다.

스크린샷 2020-01-05 오전 1.59.37.png

왼 편의 Facets(1)를 클릭 후, 옆의 Web(2)을 눌러주고, Web Resource Directory(3)를 더블 클릭해준다.

스크린샷 2020-01-05 오후 5.01.14.png

아까 webapp 디렉토리의 위치를 옮겨주었기 때문에, 여기도 그 경로로 바꿔주어야한다. 바꿔준 후, Apply를 눌러 적용시킨다.
스크린샷 2020-01-05 오후 5.03.30.png

이제 라이브러리를 추가할 것이다.

왼 편의 Artifacts를 클릭하고, WEB-INF를 우클릭하여 lib이라는 디렉토리를 생성한다. 그 후, 오른편의 spring의 하위에 있는 Spring과 Spring MVC를 더블 클릭하여 lib 디렉토리 밑으로 옮긴다.

스크린샷 2020-01-05 오전 2.01.53.png

스크린샷 2020-01-05 오전 2.02.09.png

마지막으로 tomcat을 설정해준다.

Add configuration을 눌러준다.
스크린샷 2020-01-05 오전 2.05.07.png

+를 눌러 Tomcat Server -> Local을 클릭한다.

스크린샷 2020-01-05 오전 2.06.11.png

Configure...을 누른 후, Tomcat Home 부분에 tomcat이 설치된 디렉토리를 설정해준다.
스크린샷 2020-01-05 오전 2.07.25.png

스크린샷 2020-01-05 오전 2.07.43.png

그럼, Application server가 설정되고, Name을 원하는대로 바꾼다음, 아래 그림처럼 warning이 발생하면 fix를 눌러준다.
스크린샷 2020-01-05 오전 2.08.59.png

Application context 경로를 '/' 로 바꿔준다.
스크린샷 2020-01-05 오후 5.06.13.png

그리고 나서, 실행시켜보면, 실행이 됨을 볼 수 있다.
(src - main - webapp - index.jsp 가 보여지는 화면이다.)

스크린샷 2020-01-05 오후 5.07.53.png

추가세팅

web.xml 수정

src - main - webapp - WEB-INF - web.xml의 안의 *.form을 /로 바꿔준다.

스크린샷 2020-01-05 오후 5.09.22.png

dispatcher-servlet.xml 수정

bean을 자동으로 등록시켜주기 위해 annotation을 활성화 시켜주고, 특정 annotation(@Component @Controller @Service @Repository)이 붙어있는 class들을 자동으로 스캔하여 bean으로 등록하게 해줄 것이다.

<mvc:annotation-driven></mvc:annotation-driven>로 annotation을 활성화해준다.
<context:component-scan base-package="Controller"></context:component-scan>으로 스캔할수 있게 해준다. base-package에 적어주는 디렉토리의 하위 디렉토리는 모두 스캔대상이다. 여기서는 src-main-java 하위에 Controller라는 패키지를 임의로 만들고 그 패키지를 base-package로 설정한 예제이다.
스크린샷 2020-01-05 오후 5.18.34.png

여기서는 src - main - webapp 에 새로 views 디렉토리를 만들어 관리해보려고한다. src - main - webapp 하위에 새로 views 디렉토리를 만들고, dispatcher-servlet.xml에 아래 코드를 추가해준다.

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/views/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

여기서 prefix의 value가 /views/이므로 src - main - webapp - views에서 view파일을 탐색하겠다는 뜻이다.
suffix의 value가 .jsp이므로 예를들어 controller에서 "home"이라는 string이 return 되면, .jsp를 붙여 home.jsp를 src - main - webapp - views에서 탐색하여 화면에 띄워준다는 의미이다.

스크린샷 2020-01-05 오후 5.29.07.png

변경된 dispatcher-servlet.xml은 아래와 같다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    <mvc:annotation-driven></mvc:annotation-driven> <!-- Annotation 활성화 -->
    <context:component-scan base-package="Controller"></context:component-scan> <!-- Component 패키지 지정 -->

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/views/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

</beans>

연습해보기

임의로 하나의 Controller와 View 페이지를 만들어서 띄워보려고 한다.

먼저 위에서 만들어놓은 src - main - java - controller 안에 homeController.java 클래스를 만들어보겠다.

@RequestMapping이라는 annotation으로 "/" 요청이 오면, home이라는 String을 return하도록 만들었다.
스크린샷 2020-01-05 오후 5.35.11.png

src - main - webapp - views에 home.jsp를 만들어준다.

스크린샷 2020-01-05 오후 5.37.41.png

그 후 실행시켜준다.

스크린샷 2020-01-05 오후 7.03.31.png

에러 해결

만약 실행 시 아래와같은 오류가 발생하면
스크린샷 2020-01-05 오후 5.38.48.png

pom.xml에 아래의 구문을 추가해준다.

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

스크린샷 2020-01-05 오후 5.42.33.png

0개의 댓글