본문 바로가기
슬기로운 자바 개발자 생활/스프링 및 자바웹 서비스

Intelij 스프링 프로젝트 시작하기(초기 셋팅)

by 슬기로운 동네 형 2019. 2. 10.
반응형

 정리를 해놔야지 하면서도 잊어버린다.

 인텔리J도 버전이 바뀌면서 조금씩 달라지는 것 같다.


 예전에는 스프링 프로젝트 템플릿을 사용하면 이클립스 처럼 한방에 내가 원하는 만큼의 구조가 나왔는데 요즘은 메이븐 및 web 구조 등을 만들어야 하는 것 같다.


1. New Project 에서 Maven을 선택한다.




2. 메이븐 pom에 들어갈 groupid, arifactid 등을 입력해준다.



3. 별거 없음 다음



4. 전 단계에서 Finish를 클릭하게 되면 아래 화면이 나오게 된다. Enable Auto Import로 선택한다.



5. Project Structure => Facets 메뉴로 이동해 Web 폴더 관련 패스를 잡는다.


위의 순서대로 클릭을 하게 되면 아래 처럼 폴더 패스를 잡는 화면이 곧 바로 나온다.


Deployment Descriptors 항목 설정

연필 버튼을 클릭해서 패스를 원하는데로 변경한다. [특별히 폴더 구성을 하지 않는 다면 많은 사람들이 사용하는 패스와 폴더명으로 셋팅한다]

{프로젝트명}\src\main\webapp\WEB-INF\web.xml 



Web Resource Directories 웹 리소스 디럭터리는 webapp로 잡는다. OK 버튼을 누르면 바로 다음 스크린 샷 처럼 디렉터리를 만들겠냐고 묻는 창이 보이게 된다. ok





6. pom.xml 을 열어 스프링 포함 필요한 메이븐 라이브러리 설정을 한다.



pom.xml 에 들어갈 디펜던시 내용



<dependencies>


    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-context</artifactId>

        <version>4.3.14.RELEASE</version>

    </dependency>


    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-beans</artifactId>

        <version>4.3.14.RELEASE</version>

    </dependency>


    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-core</artifactId>

        <version>4.3.14.RELEASE</version>

    </dependency>


    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-aop</artifactId>

        <version>4.3.14.RELEASE</version>

    </dependency>


    <!-- databind for json -->

    <dependency>

        <groupId>com.fasterxml.jackson.core</groupId>

        <artifactId>jackson-databind</artifactId>

        <version>2.9.3</version>

    </dependency>


    <dependency>

        <groupId>com.fasterxml.jackson.core</groupId>

        <artifactId>jackson-annotations</artifactId>

        <version>2.9.3</version>

    </dependency>


    <dependency>

        <groupId>com.fasterxml.jackson.core</groupId>

        <artifactId>jackson-core</artifactId>

        <version>2.9.3</version>

    </dependency>


    <!-- spring mvc -->

    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-webmvc</artifactId>

        <version>4.3.14.RELEASE</version>

    </dependency>


    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-web</artifactId>

        <version>4.3.14.RELEASE</version>

    </dependency>


    <dependency>

        <groupId>javax.servlet</groupId>

        <artifactId>javax.servlet-api</artifactId>

        <version>3.1.0</version>

        <scope>provided</scope>

    </dependency>


    <dependency>

        <groupId>javax.servlet.jsp.jstl</groupId>

        <artifactId>jstl</artifactId>

        <version>1.2</version>

    </dependency>


    <dependency>

        <groupId>javax.servlet.jsp</groupId>

        <artifactId>jsp-api</artifactId>

        <version>2.2</version>

        <scope>provided</scope>

    </dependency>


    <dependency>

        <groupId>junit</groupId>

        <artifactId>junit</artifactId>

        <version>4.12</version>

        <scope>test</scope>

    </dependency>

</dependencies>


7. webapp 이하 디렉터리 구성


                    


오른쪽 처럼 폴더를 구성한다.

context : 스프링 서블릿, 어플리케이션, 기타 빈 설정 xml 파일을 넣을 디렉터리.

resources : 프론트(jsp, javascript, css) 관련 라이브러리 자료를 넣을 디렉터리.

views: jsp, html 등등


8. 톰캣 붙이기




톰캣을 추가하고 나면 아래처럼 경고가 뜰것이다. fix 버튼을 눌러 배포 관련 설정을 한다.





Artifacts 설정 완료된 모습



이제 마지막 작업으로 Controller, context.xml, web.xml, index.jsp 파일을 완성한다.




web.xml


<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

         version="4.0">


    <display-name>Hello Spring MVC</display-name>


    <!-- application config -->

    <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>WEB-INF/spring/applicationContext.xml</param-value>

    </context-param>


    <listener>

        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>


    <!-- dispatcher config -->

    <servlet>

        <servlet-name>dispatcher</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <init-param>

            <param-name>contextConfigLocation</param-name>

            <param-value>WEB-INF/spring/dispatcher-servlet.xml</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>


    <servlet-mapping>

        <servlet-name>dispatcher</servlet-name>

        <url-pattern>/</url-pattern>

    </servlet-mapping>


    <!-- encoding filter -->

    <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>

    </filter>

    <filter-mapping>

        <filter-name>encodingFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>


</web-app>


index.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

    <title>Title</title>

</head>

<body>

<h1>${author}</h1>

Hello World! Spring 4 By CodingSquid

</body>

</html>



dispatcher-servlet.xml


<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:mvc="http://www.springframework.org/schema/mvc"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/mvc

        http://www.springframework.org/schema/mvc/spring-mvc.xsd

        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">


    <!-- This tag registers the DefaultAnnotationHandlerMapping and

         AnnotationMethodHandlerAdapter beans that are required for Spring MVC  -->

    <mvc:annotation-driven />

    <!-- This tag allows for mapping the DispatcherServlet to "/" -->

    <mvc:default-servlet-handler />


    <!-- Process annotations on registered beans like @Autowired... -->

    <context:annotation-config/>

    <!-- 컴포넌트 스캔 -->

    <context:component-scan base-package="com.myapp" />


    <bean id="viewResolver"

          class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="prefix" value="/WEB-INF/views/" />

        <property name="suffix" value=".jsp" />

    </bean>


</beans>


applicationContext.xml (기본 템플릿을 만들기 때문에 현재 단계에서는 내용이 없다. Data Sources 작업필요)


<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">



</beans>



프론트와 백단을 각각 컨테이너로 실행하는 환경이라면 스프링부트로 셋팅을 하고 사용하는게 정답이라고 생각한다.




주의 또는 확인 사항


* 아주 가끔 톰캣을 실행시 셋업이 꼬이는 경우가 있다.


   1. contextpath를 잘못 설정한 경우

   2. webapp 폴더를 지정하지 않은 경우

   3. Artifacts에서 war output Layoyt를 잘못 설정한 경우.


webapp 폴더에 파란색 점이 생겨있는지 확인



Modules에서 Web 구조 디렉터리 확인



톰캣 실행 환경 확인



반응형

댓글