Spring

[Spring] 인텔리제이 스프링 프로젝트 실행

colin2 2024. 9. 25. 11:14

인텔리제이를 사용하게 되어 스프링 프로젝트 실행까지를 정리해 본다.

 

우선 인텔리제이 홈페이지에서 다운로드 페이지에 들어가면 Ultimate가 나오는데 그건 유료고, 커서를 조금 내려보면 Community Edition이 있으니 이것을 다운 받으면 된다.

 

설치 후 실행하면 아래처럼 나오는데, 새 프로젝트를 선택한다.

 

좌측의 Maven 원형 클릭하고, 프로젝트 이름, 위치, JDK 버전을 확인해주고, Archetype에서 quickstart를 선택해 주고 생성 버튼 클릭.

 

프로젝트가 다 설치되고 나면 아래와 같이 폴더를 만들어 경로를 설정해준다.

 

pom.xml 파일에 추가할 의존성을 추가해 주고, 우측 상단의 Maven 변경 내용 로드 버튼( Ctrl + Shift + O ) 클릭.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>Sample</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java-version>17</java-version>
    <org.springframework-version>5.3.19</org.springframework-version>
    <org.aspectj-version>1.9.7</org.aspectj-version>
    <org.slf4j-version>1.7.25</org.slf4j-version>
  </properties>
  <dependencies>
    <!-- 기본 세팅 -->
    <!-- spring  -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${org.springframework-version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${org.springframework-version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${org.springframework-version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${org.springframework-version}</version>
    </dependency>

    <!-- spring mvc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${org.springframework-version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${org.springframework-version}</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-api</artifactId>
      <version>1.2</version>
      <type>jar</type>
    </dependency>

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>2.2.2</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.5</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>9.4.9.v20180320</version>
        <configuration>
          <httpConnector>
            <port>9080</port>
          </httpConnector>
          <scanIntervalSeconds>0</scanIntervalSeconds>
          <webApp>
            <contextPath>/</contextPath>
          </webApp>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
 

 

WEB-INF 폴더에 web.xml 파일 생성 후 코드 작성.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/root-context.xml</param-value>
	</context-param>

	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- Processes application requests -->
	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
		
	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

	<!-- 한글 인코딩 필터 등록 -->
	<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>
 

 

spring 폴더 안에 root-context.xml 파일 생성

 

appServlet 폴더 안에 servlet-context.xml 파일을 생성하여 매핑 설정.

(아래에서 내용 수정)

 

자동으로 만들어져 있던 App 파일은 사용하지 않으니 삭제.

 

java의 패키지 안에 HomeController.java 파일 생성 후 @Controller 추가

 

실행 확인을 위해 컨트롤러에 코드 작성.

 

// controller 패키지 추가하여 파일 경로 수정. (controller 패키지로 이동)

 

views 폴더에 index.jsp 파일 생성.

(servlet-context.xml에 경로 설정해 놓은 상태)

 

왼쪽 상단 햄버거 버튼 -> 실행 -> 구성 편집 클릭.

 

새 구성 추가 버튼 클릭하여 서버로 사용할 jetty:run 추가 후 확인.

.

상단에 실행 버튼( Shift + F10 ) 클릭. -> 실패.

(servlet-context.xml에 beans 설정이 없었음)

.

당시의 에러 상황.

다른 내용도 있었지만 아래와 같은 에러를 만나면 xml 파일에 문제가 있을 가능성이 큼.

Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'mvc:annotation-driven'.

 

 

servlet-context.xml 수정 후 다시 jetty 실행하여 성공.

<?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"
       xmlns:beans="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/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">

    <mvc:annotation-driven enable-matrix-variables="true"/>

    <!-- 컨트롤러 매핑 설정 -->
    <mvc:annotation-driven />

    <!-- 정적 리소스 설정 -->
    <mvc:resources mapping="/resources/**" location="/resources/" />

    <!-- 뷰 매핑 설정 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp" />
    </bean>

    <context:component-scan base-package="org.example.*" />
</beans>
 

 

서버가 도는 것을 확인한 뒤 브라우저에서 지정해 놓은 포트 번호로 localhost를 띄워서 결과가 나오면 성공.

 

 

 

'Spring' 카테고리의 다른 글

Mac에서 STS3로 Spring Legacy Project로 Hello 띄우기  (0) 2024.01.29