IntelliJ에서 스프링 MVC 프로젝트 생성하기
Intellij 에서는 STS(Spring Tool Studio)에서 지원 하는 것처럼 Spring MVC Project를 생성 하는 방법이
따로 존재 하지는 않습니다.
STS 에서 지원 하는 것 처럼 Spring MVC Project를 생성하고, 웹페이지에 hello world를 출력 하기 까지는
아래와 같이 총 4가지의 단계를 거칩니다.
- Maven module를 생성 한다.
- 스프링 관련 설정, 디렉토리 생성 및 설정을 한다.
- Tomcat Server 설정을 한다.
- 기본/테스트 package 와 views 디렉토리를 생성한다
이렇게 설정을 하고 나면 아래와 같은 구조가 됩니다. 이제 마지막으로 HomeController 과 home.jsp 를 작성하고 나서
tomcat server를 구동하게 되면 루트 웹페이지에서 hello world 라는 문구를 출력하게 된다.
1. Maven modile 생성하기
intellij 실행 후 초기 화면에서 새 프로젝트를 눌러주세요
왼쪽 제너레이터 부분에서 Maven 원형을 클릭하시고 원하시는 프로젝트 이름과 jdk 버전 확인하시고
Archetype: 부분에서 org.apache.maven.archetypes:maven-archetype-webapp 으로 셋팅 하시고 생성 버튼을 눌러주세요
2. Spring 관련 설정 수정 및 추가, 디렉토리 생성 및 Role 설정
# pom.xml : 프로젝트 정보 및 dependency 를 설정하는 xml 파일
properties : java, spring, aspectj, slf4j 버전을 기입해준다
1 2 3 4 5 6 | <properties> <java-version>1.11</java-version> <org.springframework-version>5.2.3.RELEASE</org.springframework-version> <org.aspectj-version>1.8.5</org.aspectj-version> <org.slf4j-version>1.6.6</org.slf4j-version> </properties> | cs |
dependency : maven 라이브러리를 추가해준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | <dependencies> <!--Spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework-version}</version> <exclusions> <!-- Exclude Commons Logging in favor of SLF4j --> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${org.springframework-version}</version> </dependency> <!-- AspectJ --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${org.aspectj-version}</version> </dependency> <!-- Logging --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${org.slf4j-version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${org.slf4j-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${org.slf4j-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.15</version> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> <exclusion> <groupId>javax.jms</groupId> <artifactId>jms</artifactId> </exclusion> <exclusion> <groupId>com.sun.jdmk</groupId> <artifactId>jmxtools</artifactId> </exclusion> <exclusion> <groupId>com.sun.jmx</groupId> <artifactId>jmxri</artifactId> </exclusion> </exclusions> <scope>runtime</scope> </dependency> <!-- @Inject --> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> <!-- Servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> | cs |
plugins : <build></build> 태그 안에 추가해준다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>${java-version}</source> <target>${java-version}</target> <compilerArgument>-Xlint:all</compilerArgument> <showWarnings>true</showWarnings> <showDeprecation>true</showDeprecation> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <configuration> <mainClass>org.test.int1.Main</mainClass> </configuration> </plugin> </plugins> | cs |
# web.xml : 스프링과 관련된 설정 xml 파일의 경로 설정 및 dispatcher url 패턴 설정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <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 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>Archetype Created Web Application</display-name> <!--DataSource, MyBatis 설정 xml 경로--> <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> <!--servlet dispatcher 설정 xml 경로--> <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-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!--한글 인코딩 설정--> <filter> <filter-name>encoding</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>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> | cs |
# applicationContext.xml : 수정 사항 없음
# dispatcher-servlet.xml : MVC 관련 설정 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 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.xsd"> <!--스프링 MVC관련 설정만을 분리하기 위한 파일--> <!--애너테이션 자동 인식--> <annotation-driven /> <!--정적 자원 : js, css, 이미지파일 등등--> <resources mapping="/resources/**" location="/resources/" /> <resources mapping="/bower_components/**" location="/resources/bower_components/"/> <resources mapping="/plugins/**" location="/resources/plugins/"/> <resources mapping="/dist/**" location="/resources/dist/"/> <!--viewResolver : jsp--> <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <beans:property name="prefix" value="/WEB-INF/views/" /> <beans:property name="suffix" value=".jsp" /> </beans:bean> <!--base-package 속성 값에 해당하는 패키지 내부의 클래스들을 모두 조사--> <context:component-scan base-package="com.eden.diary" /> </beans:beans> | cs |
# log4j.xml : 로그 설정파일
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- Appenders --> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p: %c - %m%n"/> </layout> </appender> <!-- Application Loggers --> <logger name="com.doubles.ex00"> <level value="info"/> </logger> <!-- 3rdparty Loggers --> <logger name="org.springframework.core"> <level value="info"/> </logger> <logger name="org.springframework.beans"> <level value="info"/> </logger> <logger name="org.springframework.context"> <level value="info"/> </logger> <logger name="org.springframework.web"> <level value="info"/> </logger> <!-- Root Logger --> <root> <priority value="warn"/> <appender-ref ref="console"/> </root> </log4j:configuration> | cs |
3. Tomcat Server 설정
- 실행 > 구성 편집 > 새 구성요소 추가 > Tomcat Server > 로컬 선택
- 이름 : 서버 이름 (본인이 원하는걸로 지정)
- 서버 탭에서 설정 해야 될 것
- 애플리케이션 서버 (Tomcat 경로 설정)
- 포트 : 8080 이지만 본인이 원하는 포트로 변경 (변경 안해도 됨)
- 배포 탭에서 설정 해야 될 것 (아키택쳐 -> war exploded 선택)
4. 그외의 설정들
- WEB-INF\views : jsp 페이지가 위치할 디렉토리 생성
- webapp\resources : 정적자원(js, css, 이미지 파일등)이 위치할 디렉토리 생성
5. HomeController.java / home.jsp 작성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | @Controller public class HomeController { private static final Logger logger = LoggerFactory.getLogger(HomeController.class); /** * Simply selects the home view to render by returning its name. */ @RequestMapping(value = "/", method = RequestMethod.GET) public String home(Locale locale, Model model) { logger.info("Welcome home! The client locale is {}.", locale); Date date = new Date(); DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); String formattedDate = dateFormat.format(date); model.addAttribute("serverTime", formattedDate ); return "home"; } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page session="false" %> <html> <head> <title>Home</title> </head> <body> <h1> Hello world! </h1> <P> The time on the server is ${serverTime}. </P> </body> </html> | cs |
6. 서버 구동 후 확인
위와 같이 모든 설정을 마무리하고 서버 구동을 하고 아래와 같이 화면이 나오면 프로젝트 생성 성공입니다.
'스프링 프레임워크 > 스프링 기본 개념 정리 및 기본 예제' 카테고리의 다른 글
Spring MVC - Mybatis 설정 및 테스트 (0) | 2023.02.09 |
---|---|
Spring MVC - MariaDB 연결 테스트 (0) | 2023.02.08 |
STS(Spring Tool Studio) MVC 프로젝트 생성하기 (0) | 2023.02.03 |
Tomcat 설치 및 STS Tomcat 연동 (0) | 2023.02.03 |
Spring Tool Suite 3(STS) 설치하기 (0) | 2023.02.03 |
댓글