티스토리 뷰

그냥 공짜인 이클립스를 사용하면 됩니다만 IntelliJ에서 세팅하는 방법을 적어보려고 합니다.

문제는 그냥 돈을 주고 사면 아주 편하게 세팅이 완료됩니다.

저의 경우에는 결제를 했는데 연습삼아서 하시는 분들께는 이게 부담이 되실것이므로 해보시고 돈내고 사는걸로...

아마도 이런것을 노린게 아닌게 싶네요. :D

 

ItelliJ Version : 19.3

 

1. 다운로드 받아줍니다.

https://www.jetbrains.com/idea/download/

 

Download IntelliJ IDEA: The Java IDE for Professional Developers by JetBrains

Code-centric IDE, focused on your productivity. Full Java EE support, deep code understanding, best debugger, refactorings, everything right out of the box...

www.jetbrains.com

2. 프로젝트를 생성합니다.

  • Create New Project를 선택. (이것말고 프로젝트가 열려 있는 상태에서 File > New > Project 를 이용 가능)

  • Maven을 선택하여 줍니다. (Project SDK는 저는 설치된거로만... JavaVersion을 1.8 이상을 골라주세요.)

  • 이것저것 넣어줍니다.
    Name : 프로젝트 이름
    Location : 저장 위치
    Artifact Coordinates : 이 프로젝트의 설정값
    - GroupId : package name
    - ArtifactId : 프로젝트의 이름
    - Version : 프로젝트의 버전

  • 프로젝트 생성은 완료

  • 아래쪽 Maven projects need to be imported 부분은 알아서 세팅하시길 바랍니다.

3. pom.xml 설정

<?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>com.dh</groupId>
    <artifactId>MavenTest</artifactId>
    <version>1.0-SNAPSHOT</version>

</project>

그냥 처음 만들면 저게 나오고 파일에는 이런게 나와 있을겁니다.

스프링 세팅이나 기타 세팅들은 되어있지 않을거에요.

지금 처음에 Maven을 하였기 때문에 pom.xml에 설정을 넣어주어야 하는데요. repository에서 dependency를 추가해서 사용하는 방법입니다. 이거 글 적고 나중 글에 gradle도 정리할까 합니다. 그냥 기본적으로 사용할거라면 두개가 차이가 없습니다.

* MavenRepository : https://mvnrepository.com/

 

Maven Repository: Search/Browse/Explore

Static code analysis API of ASM, a very small and fast Java bytecode manipulation framework Last Release on Jan 10, 2020

mvnrepository.com

자... 위의 기본적인 내용에 내용을 추가합니다. 우리는 스프링을 사용해야 하니까요.

<packaging>war</packaging>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.0.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>3.0-alpha-1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.5</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <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>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.0</version>
        </plugin>
    </plugins>
</build>

이 부분을 위의 파일에 <project> </project> 안에 넣어주면 됩니다. 저는 <version> 아래에 넣어줍니다.

dependencies부분만 보면 됩니다. 추가 된것은 다음과 같아요

  • spring-webmvc 5.0.5
  • jsp-api 2.2
  • servlet-api 3.0
  • jstl 1.2
  • jackson-databind 2.9.5 : json 처리를 위함

거의 기본적으로 이정도는 사용한다고 생각하면 됩니다. jackson만 추가를 하였는데 나머지는 기본적으로 spring을 이용하는데 사용된다고 하여도 될것 같네요.

 

4. 기본적 폴더 구조 만들기

설명 자체가 무료 버전을 이용하는 설명을 하다보니까 몇가지 추가 구성을 변경하여 주어야 합니다. 돈내고 사용하면 그냥 다 자동으로 됩니다. 돈주고 사는게 수명연장의 지름길... :(

이전에 제가 사용하던 구조에서는 main > webapp 부분이 보입니다. 무료 버전이라서 이걸 선택하지 못해서 없는겁니다. 

만들어 줍시다.

1. src > main 에서 Command + N -> Directory로 webapp을 만들어줌. /src/main/webapp 이 됩니다.

2. 만든것 아래에 또 다시 WEB-INF와 resources를 만들어 줍니다.

그럼 기본적인 폴더 구조는 끝났습니다.

 

5. web.xml 생성

/src/main/webapp/WEB-INF/web.xml 파일을 만들어 줍니다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
         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_3_0.xsd">
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</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이란 이름으로 servlet을 등록하여 줍니다.
  • 루트 경로를 서블릿에 매핑하여 줍니다. 즉 / 로 들어오는 모든것을 매핑하여 줍니다.
  • 루트 경로 이하의 URL에 UTF-8 인코딩을 하여 줍니다.

이것 외의 추가적인 세팅부분도 있지만 그 부분은 따로 공부하시길 바랍니다.

 

6. spring-context.xml 추가하기

위와 동일한 요령으로 /src/main/webapp/WEB-INF/spring-context.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:mvc="http://www.springframework.org/schema/mvc"
       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">

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

    <mvc:annotation-driven/>
    <mvc:default-servlet-handler/>
    <mvc:resources mapping="/resources/**" location="/resources/images/"/>

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

설명은 다음과 같습니다.

  • context:component-scan : annotation의 scan 범위를 지정하여 줍니다.
  • mvc:annotation-driven : MVC의 annotation을 사용합니다.
  • mvc:default-servlet-handler : Controller가 매핑되지 않은 요청을 기본 핸들러로 보냅니다.
  • mvc:resurces : 리소스의 접근 위치를 설정합니다.
  • bean class 하위 : prefix와 suffix를 설정하여서 파일의 위치를 지정하여 주는 방식입니다. /WEB-INF/views/ 하위에 페이지들이 보ㅠ이게 됩니다.

7. Controller 만들기

이제 거의 다 만들었습니다. 마지막 Java 파일을 만들어 보려고 합니다.

/src/main/java/자신의 패키지/파일명 ... 저는 /src/main/java/com.dh/Main 입니다.

 

처음에는 이렇게만 나올겁니다.

package com.dh;

public class Main {
    
}

추가하여 봅시다. import 부분은 타이핑 따로 하지 않아도 됩니다. 타이핑하면 자동으로 들어갑니다.

package com.dh;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

@Controller
public class Main {

    @RequestMapping(value = "/")
    public String index(Model model) {
        model.addAttribute("text", "DH Spring Page.<br/>Comming soon.");
        return "index";
    }

    @RequestMapping(value = "/json", produces = "application/json")
    @ResponseBody
    public Object json() {
        Map<String, String> map = new HashMap<>();
        map.put("text", "DH Spring. json test");
        return map;
    }
}

다른거 해줄 필요없이 RequestMapping과 Controller만을 사용해서 작성이 가능합니다.

RequestMapping에 /로 들어오는 부분은 index에서 받아서 처리하게 되어 있습니다.

RequestMapping에 /json으로 들어오게 되면 json을 바로 반환하게 되어 있습니다.

 

8. index.jsp

위의 예제에서 index 메소드에서 마지막에 "index"를 리턴하여 주었는데요. jsp 파일을 만들어 주어야 합니다. 우리가 spring-context.xml 에 지정하여 주었기 때문에 이렇게만 넣어주어도 됩니다. 실제로는 /src/webapp/WEB-INF/views/index.jsp 파일이 있어야 합니다.

파일을 만들어주고 이것을 넣어줍니다.

<%@ page contentType="text/html; charset=utf-8"%>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello, World!</title>
</head>
<body>
<div align="center">
<h3>${text}</h3>
<br/>
</div>
</body>
</html>

 

 

 

위에 Controller에서 index 메소드에서 index를 사용하면서 text를 넘겨주게 되어 있는데요. 이 부분을 페이지에서 받아서 사용하는겁니다.

 

9. 실행합시다

한번도 세팅을 하지 않았다면 다음과 같이 노출될겁니다.

클릭하여 주면 다음과 같이 노출되는데 + 버튼을 눌러주고 Maven을 선택합니다.

다음을 넣어주세요. jetty:run

제대로 하셨다면 실행이 보일겁니다.

실행을 하고...

 

0.0.0.0:9080으로 접속하면 다음과 같이 노출됩니다. localhost:9080과 같습니다.

localhost:9080/json을 호출하여 볼까요?

기본적으로 돌려보기 위해서 설정하는 부분만 넣어봤습니다.

다들 즐거운 코딩요.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
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
글 보관함