[Spring] Eclipse에서 SpringFrameWork 프로젝트 만들기

     

     

    Spring Project 생성하기

    project 만들기

    Eclipse에서 Project를 만들 때 New Dynamic Web Project를 선택해야 합니다.

     

    New Dynamic Web Project를 만드는 과정은 JSP를 만드는 과정과 동일합니다.

    과정은 복잡하지만, 이클립스와 Java Version마다 만드는 방법이 달라지므로 해당 방법을 고안했습니다.

     

    이 방법이 귀찮았다면, SpringBoot로 만드는 것을 추천드립니다.

     

    해당 방법의 Version은 Java 11과 Tomcat 9.0을 사용합니다.

    이클립스는 2022 - 03 버전을 사용합니다.

     

    Spring Legercy가 제대로 안 만들어지는 이상한 호환성을 가진 이들의 조합이라고도 할 수 있습니다.

    만들기 전에 자신의 Version을 제게 맞추실 필요는 없습니다.

     

     

    project package 정의
    web.xml 생성 여부

    Project를 Finish 하기 전에, 해당 부분을 Check를 해주세요.

    web.xml이 생성됩니다.

     

    완료 된 Project 모습

    Project가 먼저 만들어졌습니다.

     

    해당 Project는 JSP로 쓸 준비가 되어있는 상태입니다.

    우리는 Spring을 사용하기 위해 좀 더 설정을 해줘야 합니다.

     

    Maven 프로젝트로 변경하

    Project를 먼저 Spring으로 변화시키기 위해서는 다음과 같이 진행합니다.

     

    🔧  Project를 마우스 우클릭 => Configure => Convert to Maven Project

     

     

    해당 작업은 일반 web Project를 Maven Project로 변형하는 과정입니다.

     

     

    그리고 해당 화면이 나오게 되는데, 건들지 말고 Finish를 누르도록 합니다.

     

    . jar과. war가 나오게 되는데, 이는 실행을 어떻게 하느냐의 차이입니다.

    저희는 Tomcat을 통해 배포할 것이기 때문에 war를 선택하도록 하겠습니다.

     

    Project명의 좌측 그림 폴더 위에 'M'이 생긴 것을 확인할 수 있습니다.

     

     

    Spring Maven 

    만들어진 Maven에 이제 Spring Library를 삽입하도록 하겠습니다.

     

    💚 설치 장소 💚

    https://mvnrepository.com/

     

     

     

    🍭 설치 목록

    1. Spring Web

    2. Spring MVC

    더보기
    <dependencies>
    
    
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.3.34</version>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.34</version>
    </dependency>
    
    </dependencies>

     

    해당 부분은 Version에 대한 문제가 있을 수 있으니 참고 부탁드립니다.

    제 Project 경우에는 해당 Version을 골라서 사진과 같이 삽입을 진행하였습니다.

     

    해당 부분이 나온 다면, 성공한 것을 알 수 있습니다.

     

    따라서 진행했지만, 해당ㅠ사진처럼 제대로 되지 않거나 실행이 되지 않는다면 Version 문제를 확인해주세요.

     

     

    web.xml 설정하기

    web.xml 설정하기

    🪄 src => main => webapp => WEB-INF => web.xml 파일을 열도록 하겠습니다.

     

     

    ❓ web.xml이란

    외부 URL이 어떤 패턴으로 오느냐에 따라서 어떤 Servlet을 호출할까를 정의합니다.

    여기서 Servlet을 호출할 때, 어떻게 어떤 규칙을 정의할 것인지 또한 설정할 수 있습니다.

     

    따라서, web.xml은 프로젝트가 정상적으로 구동될 때 현관문의 역할을 수행한다고 생각해 주시면 편하겠습니다.

     

    더보기
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
      <display-name>SpringStudy</display-name>
      
      <!-- Spring MVC DispatcherServlet 정의 -->
    	<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>
    
    	<!-- DispatcherServlet 매핑 -->
    	<servlet-mapping>
    		<servlet-name>dispatcher</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    
    	<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>
    
    	<!-- 필요한 경우, 다른 웹 리소스 설정 -->
    </web-app>

    여기서 display-name은 프로젝트 명하고 동일하게 설정해주시면 됩니다.

     

    그리고 param-value는 경로를 읽고 해당 그림과 같이 폴더를 생성해 주셔야 합니다.

    param-value의 설정은 아래의 코드를 따라 작성해 주시면 되겠습니다.

     

     

    servlet.xml 설정하기

    application.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"
           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">
    
    </beans>

     

    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-4.3.xsd 		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"> 	<!-- 어노테이션 활성화 -->
    	<context:annotation-config /> 	 	
    	<!-- view의 경로, 확장자를 정해주는 부분 : DispatcherServlet이 이 경로를 따라서 컨트롤러가 날린 뷰의 이름에 
    		해당하는 뷰가 있는지 찾아봄. --> 	<!-- ViewResolver 생성 -->
    	<bean
    		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="prefix" value="/WEB-INF/view/" />
    		<property name="suffix" value=".jsp" />
    	</bean> 	<!-- model에 대한 정보 -->
    	
    	<context:component-scan
    		base-package="kr.soft.study">
    	</context:component-scan>
    </beans>

     

    해당 구간은 먼저 복사 후, 붙어 넣기를 진행해 주세요.

    아래에서 해당 경로에 대해 설명을 진행하겠습니다.

     

     

    Project 설정하기

    dispatcher-servlet.xml에서 19행을 바라보면, base-package="kr.soft.study"를 볼 수 있습니다.

     

    이는 내 Project 내의 경로를 의미하게 됩니다.

     

    제 Project 내의 java파일 밑에 kr-soft-study 패키지를 바라본다는 의미입니다.

     

    즉, 저 안에서 Spring에 대한 기본 규칙만 지킨다면 사용할 수 있다는 의미를 갖고 있습니다.

     

    더보기
    package kr.soft.study;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    
    @Controller
    public class PiuController {
    
    	
    	@GetMapping("/")
    	public void test() {
    		System.out.println("Project 반응 테스트하기");
    	}
    }

     

    그에 대한 첫 번째 의미,

     

    @Controller  이를 먼저 시작하도록 하겠습니다.

     

    web.xml에서 설정된 dispatcher-servlet.xml이 실행이 되고, 이를 통해서 servlet을 검색하게 됩니다.

    이를 통해서 @Controller를 우선적으로 찾게 되는데 이 중 Mapping의 규칙에 제일 적합한 것을 찾습니다.

     

    @GetMapping("/") 이란, localhost:8080 다음에 / 혹은 생략이 되었을 때 가장 먼저 찾는 Servlet입니다.

    즉, 저희는 이를 실행했을 때 정상적으로 프로젝트를 만들었다는 것을 알 수 있습니다.

     

     

    Java에 대한 설정은 여기서 끝입니다.

     

    아래의 실행을 하여서, 프로젝트의 시작을 확인하도록 하겠습니다.

     

    Spring, Controller 호출하기 ( Servlet 호출 )

     

    Eclipse의 server 설정하기

    Eclipse에서 원활한 진행을 위해서 Project가 다른 것이 실행 안 되도록 설정을 하겠습니다.

     

    여기서, Tomcat - Modules의 Path의 설정을 '/'으로 정의합니다.

     

    이후, Tomcat을 실행하도록 하겠습니다.

     

     

    URL에서 Tomcat을 실행했을 때, Project 반응이 오는 것을 확인할 수 있습니다.

    localhost:8080/ 을 인터넷 주소창에 입력하면 반응이 오는 것을 확인할 수 있습니다.

     

     

    JSP 실행하기

    jsp를 실행하기 위해서는 dispatcher-servet.xml의 설정을 다시 한번 살펴보도록 합니다.

     

    prefix는 해당 경로를 생략 후, 화면을 출력한다는 의미를 갖고 있습니다.

    즉, WEB-XML/view/ 안의 jsp를 불러온다는 의미를 갖고 있습니다.

     

    이를 이해하고 만든다면, WEB-INF안에 view 폴더를 만들고 아무 명칭의 jsp를 만들면 된다는 것을 알 수 있습니다.

     

    이후, 자신이 설정한. jsp의 명칭으로 return을 줄 경우, SPRING이 정상적으로 index를 호출하는 것을 확인할 수 있습니다.

     

     

    마무리

     

    이로써, Spring 프로젝트 만드는 것에 대한 설명을 마칩니다.

    여기까지 따라 하신 분들, 모두 수고하셨습니다.

     

    반응형

    댓글

    Designed by JB FACTORY