티스토리 뷰

이전에 글을 남길때는 gradle을 선택하고 Java만 선택한 이후에 web은 선택하지 않고 프로젝트를 세팅하였습니다.

web을 선택하여서 main아래에 webapp이 노출되는 방식으로 한번 설명해 보겠습니다.

Spring에서 MVC를 선택하는 방법보다는 다소 손이 조금 더 가긴 합니다.

기존 트리 구조가 맞는 분들께는 추천 드립니다. 😀

 

기존 방법은 여기로...

2020/01/18 - [Web/Server] - IntelliJ IDEA. Spring MVC + gradle + tomcat

 

IntelliJ IDEA. Spring MVC + gradle + tomcat

고민을 하다가 드디어 무료판을 벗어났습니다. Community 버전에서는 tomcat을 넣어서 어떻게 하다가 너무 스트레스를 받아서 인지 질렀습니다. :( Community를 쓰시는분들은 그냥 메이븐하세요... IntelliJ Versi..

mrgamza.tistory.com

쭈욱 따라와 보세요 어렵지 않아요.

 

1. New Project - Java와 Web을 선택하여 줍니다.

2. 프로젝트 기본 세팅을 합니다.

3. 프로젝트가 열리고 build.gradle을 수정합니다.

plugins {
    id 'java'
    id 'war'
}

apply plugin: 'war'

group 'com.test'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    testCompile group: 'junit', name: 'junit', version: '4.12'
    providedCompile 'javax.servlet:servlet-api:2.5'
    compile 'org.springframework:spring-webmvc:5.0.6.RELEASE'
    runtime 'javax.servlet:jstl:1.1.2'
}

추가된 부분은 apply와 dependencies의 아래쪽 3줄입니다.

저는 5.0.6으로 했는데 혹시라도 다른 버전을 원하시면 여기가서 찾아서 하세요

https://mvnrepository.com/artifact/org.springframework/spring-webmvc

 

Maven Repository: org.springframework » spring-webmvc

 

mvnrepository.com

 

4. 필요 파일들을 만들어 봅시다.

필요한 구조는 webapp/WEB-INF 아래에 web.xml, dispatcher-servlet.xml, applicationContext.xml이 위치하면 됩니다.

툴에서 만들던지 아니면 새로운 방법을 알려드릴게요.

Terminal을 누르시고 root폴더인 상태에서 다음을 실행합니다. 한줄씩요.

mkdir src/main/webapp/WEB-INF
touch src/main/webapp/WEB-INF/web.xml
touch src/main/webapp/WEB-INF/dispatcher-servlet.xml
touch src/main/webapp/WEB-INF/applicationContext.xml

어떻게 하시든지 이런 구조를 만드시면 됩니다.

5. index.jsp 파일을 이동한다 or 새로만들고 기존것은 삭제한다.

위치는 webapp/WEB-INF/views로 옮길겁니다.

이후에 dispatcher-servlet.xml에 설정을 그곳으로 변경을 할 것이기 때문입니다.

이렇게 까지 한거면 거의 다 한겁니다. 나머지는 기본 세팅 부분만 파일에 넣으면 되기 때문입니다.

 

6. 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">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <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/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>
</web-app>

7. 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.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <mvc:annotation-driven />
    <context:component-scan base-package="com.test.controller" />
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

8. applicationContext.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

 

이렇게 까지 하면 설정 파일은 모두 된겁니다. 축하합니다.

 

9. Controller를 만들어 봅시다.

main/java 아래에 package를 만들어 주고요. 저는 com.test.controller입니다. 왜냐면 dispatcher-servlet에 그렇게 지정을 했거든요. component-scan을 하라고요. 그 아래에 MainController를 만들었습니다.

package com.test.controller;

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

@Controller
public class MainController {

    @RequestMapping(value = "/")
    public String test(Model model) {
        model.addAttribute("msg", "Good!!");
        return "index";
    }
}

URL에 /형태로 즉 아무것도 넣지 않고 넣어주게 되면 msg attribute에 Good!!이라고 넣어주는 겁니다. 그리고 페이지는 index로 열리게 되겠죠?

 

10. index.jsp 파일 수정

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>Test</title>
  </head>
  <body>
  ${msg}
  </body>
</html>

위에 Controller에서 넘겨주는 msg의 값을 그대로 찍어주기 위해서 만들어 준겁니다.

 

11. Project Structure에서 Artifacts를 추가하여 줍니다.

 

12. Tomcat 설정하고 Run.

이전글을 참조 바랍니다. 🤣

2020/01/18 - [Web/Server] - IntelliJ IDEA. Spring MVC + gradle + tomcat

 

IntelliJ IDEA. Spring MVC + gradle + tomcat

고민을 하다가 드디어 무료판을 벗어났습니다. Community 버전에서는 tomcat을 넣어서 어떻게 하다가 너무 스트레스를 받아서 인지 질렀습니다. :( Community를 쓰시는분들은 그냥 메이븐하세요... IntelliJ Versi..

mrgamza.tistory.com

소스 : https://github.com/outofcode-example/spring-web-gradle

 

outofcode-example/spring-web-gradle

spring gradle + java + web. Contribute to outofcode-example/spring-web-gradle development by creating an account on GitHub.

github.com

 

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