https://www.postman.com/downloads/
localhost에서 사용할 수 있게 실습에 사용하는 툴을 다운로드 해준다.
>>> Windows 64-bit 다운 클릭
Java JDK 11 버전 설치
https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_windows-x64_bin.zip
설치 후 압축해제가 완료되면 환경변수의 새로만들기를 통해 JAVA_HOME의 값으로 JDK 설치 폴더를 지정한다.
이후 Path 경로에 JDK 설치 폴더 > bin 폴더 경로를 추가한다.
기존 이클립스에서 자바를 17버전으로 사용하고 있어 다음과 같은 안내창과 함께 이클립스를 실행할 수 없다고 뜬다.
이클립스 설치 경로에 들어가서 eclipse.ini 파일에 들어간 후 Version이 17로 되어 있는 것을 11로 변경해준다.
이제 이클립스에 접속이 가능하다.
>>> Preferences > Java > Compiler > 11 확인
>>> Preferences > Java > Installed JREs > jdk-11.x.x 확인
Dynamic Web Project를 생성한 후 Maven Project로 전환해준다.
이후 프로젝트 안에 생성된 pom.xml에 들어가서 몇가지 dependency를 추가해줄 것이다.
구글에 maven repository를 검색한 후 아래 페이지에 접속.
dependency는 총 4개를 추가해줄 것이다. 아래 드래그된 코드들을 pom.xml 파일 안 <dependencies></dependencies>
태그로 감싸 넣어준다.
>>>Java Servlet API 4.0.1
>>>JavaServer Pages(TM) API 2.3.3
>>>JSTL 1.2
JSTL은 붙여넣고나면 오류가 생기는데 이는 javax.servlet.jsp.jstl 이 javax.servlet 으로 옮겼기 때문이다. 드래그 된 부분을 지워주면 빨간줄은 사라진다!
javax.servlet.jsp.jstl > javax.servlet
이번엔 <properties></properties>
태그 안에 각 dependency의 groupId에 -version을 붙여주고 버전을 넣어준다. 이후 dependency > version > ${}
중괄호 안에 프로퍼티 태그 이름을 넣어준다. (아래 사진 참고)
↓
↓↓↓↓↓↓↓ 전체 코드
<properties>
<javax.servlet-version>4.0.1</javax.servlet-version>
<javax.servlet.jsp-version>2.3.3</javax.servlet.jsp-version>
<javax.servlet.jsp.jstl-version>1.2</javax.servlet.jsp.jstl-version>
<org.springframework-version>5.2.24.RELEASE</org.springframework-version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${javax.servlet-version}</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>${javax.servlet.jsp-version}</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${javax.servlet.jsp.jstl-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
</dependencies>
이번엔 프로젝트의 WEB_INF 폴더 안에 web.xml 파일을 만들어준다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="4.0" 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">
<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>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter> <!-- jsp 파일에 일일이 UTF-8을 넣어주지 않게 -->
<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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping> <!-- 전체 다 encoding 해줌 -->
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
▲web.xml
이후 web.xml > param-value 경로에 맞는 servlet-context.xml도 만들어준다.
<?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">
<annotation-driven/>
<context:component-scan base-package="com.app.controller"></context:component-scan>
<!-- Controller에서 중복되는 경로를 하나로 설정 -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/"></beans:property>
<beans:property name="suffix" value=".jsp"></beans:property>
</beans:bean>
<!-- 경로를 지정 -->
<!-- resources 아래에 하위 폴더 생성해서 사용 -->
<resources location="/resources/" mapping="/**"></resources>
</beans:beans>
▲servlet-context.xml
spring 폴더 아래에 root-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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
▲root-context.xml
servlet-context.xml base-package 경로에 맞는 패키지 생성 후 예시로 사용할 Controller를 만들어주었다.
package com.app.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class SampleController {
@RequestMapping("/samplehome")
public String samplePage() {
return "sample";
}
}
>>> url 주소를 프로젝트명 뒤에 RuquestMapping에 입력한 주소(/samplehome) 입력 시 return 값에 들어 있는 경로로 이동
>>> url 주소에 jsp 파일명을 입력하지 않아도 이동할 수 있음!
>>> 원래는 return 값에 /WEB-INF/views/gh.jsp
이렇게 전체 경로를 받아야하지만, servlet-context.xml에서 중복되는 경로를 설정해주었기 때문에 파일명만 return 값으로 들어오면 된다.
>>> spring MVC 기본세팅완료.