Chapter#01 : [Spring] STS 개발환경 - 다운로드 및 작업 경로 지정
Chapter#02 : [Spring] STS 개발환경 - IDE 환경 설정
Chapter#03 : [Spring] Spring Framework 웹 프로젝트 만들기
Chapter#04 : [Spring] Spring MVC 패턴( Model2 아키텍쳐 ) 구현 하기
Chapter#05 : [Spring] Component-Scan을 사용하는 Annotation 기반 설정
Chapter#06 : [Spring] MyBatis를 이용한 Oracle 데이터베이스 CRUD
#1. Maven Web 프로젝트 생성하기
상단 메뉴에서 File → New → Other를 선택하여 새로운 프로젝트를 생성한다.
Select a wizard항 목에서 Maven 항목에 Mavne Project를 선택한다.
Next 버튼을 클릭한다.
New Maven Project에서 Next 버튼을 클릭한다.
maven-archetype-webapp을 찾는다.
Group Id | Artifact Id |
org.apache.maven.archetypes | maven-archetype-webapp |
생성할 maven wbapp 프로젝트의 매개변수를 지정한다.
Group Id | com.spring |
Artifact Id | spring_web |
Version | 0.0.1-SNAPHOT |
Package | com.spring.web |
모든 작업이 완료되면 아래와 같이 STS에 신규 프로젝트가 생성된 것을 확인 할 수 있다.
#2. Maven Web 프로젝트 설정 변경하기
1) 생성한 Maven Web 프로젝트의 Java Compiler 변경
2) Maven JDK Compile 설정 JDK 1.8 변경
<properties>에 compiler의 JDK 설정을 변경한다.
~~ 이 하 생 략 ~~
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
~~ 이 하 생 략 ~~
<pluginManagement>의 maven-compiler-plugin 속성을 변경한다.
~~ 이 하 생 략 ~
<pluginManagement>
<plugins>
~~ 이 하 생 략 ~
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
~~ 이 하 생 략 ~
</plugins>
</pluginManagement>
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.spring</groupId>
<artifactId>spring_web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>spring_web Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>spring_web</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
이후 pom.xml 을 선택하고 마우스 우클릭하여 Maven clean 해준다.
Console 창에 BUILD SUCCESS라고 뜨면 Maven clean 작업이 완료된다.
다시 pom.xml 을 선택하고 마우스 우클릭하여 Maven install 해준다.
Console 창에 BUILD SUCCESS라고 뜨면 Maven install 작업이 완료된다.
3) Project Facets 설정 변경
생성한 프로젝트를 선택하고 마우스 우클릭한뒤 선택 메뉴에서 Properties를 선택한다.
Project Facets를 찾고 설정을 아래와 같이 변경해준다.
Project Facet | Version |
Dynamic Web Module | 2.5 |
Java | 1.8 |
JavaScript | 1.0 |
이후 Runtimes 에서 Apache Tomcat v8.5를 선택하여 준다.
그럼 생성한 프로젝트에 Server Runtime [Apache Tomcat v8.5]
4) JRE System Library 변경
생성한 프로젝트를 살펴보면 JRE System Library가 존재한다.
JRE System Library를 JDK 1.8.0_202로 변경을 진행한다.
JRE System Library를 우클릭하고 Properties 를 선택한다.
STS를 Workspace의 기본 JDK를 jdk1.8.0_202로 이전에 세팅을 해주었다.
◉ Workspace default JRE( jdk1.8.0_202 ) 선택하고 Appliy and Close 버튼을 클릭한다.
JRE System Library [ jdk1.8.0_202 ] 로 변경되었다.
#3. Tomcat으로 Maven Web 프로젝트 실행하기
생성한 spring_web 프로젝트를 펼쳐보면 src → main → webapp 경로에 index.jsp 파일이 존재한다.
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<title>Maven Archetype Webapp</title>
<body>
<h1>Hello World!</h1>
</body>
</html>
index.jsp 파일은 "Hello World!"를 출력한다.
STS의 Server창에 Tomcat을 선택하고 Modules를 선택한다.
Add Web Module을 클릭하면 Add Web Module 이라는 팝업창이 나타나는데
해당 창의 Modules를 살펴보면 생성한 프로젝트의 명칭 「spring_web」 이 보일것이다.
프로젝트명 「spring_web」을 선택한다.
이후 Apache Tomcat을 실행하여 준다.
브라우저를 열고 주소창에 http://localhost:8181/spring_web/ 을 입력하면
위와같이 브라우저에서 "Hello World!" 문구가 출력되는 것을 확인 할 수 있다.
#4. Maven 라이브러리 SpringFramework 의존성 주입
생성한 Maven Webapp 프로젝트에 SpringFramework를 사용하기위한 의존성을 주입한다.
pom.xml을 열고 아래 코드와 같이 SprinfFramework 버전을 지정하고 dependency를 추가하여 준다.
pom.xml
~~ 이 하 생 략 ~~
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!-- SprinFramework 버전 -->
<org.springframework-version>5.2.3.RELEASE</org.springframework-version>
</properties>
<dependencies>
~~ 이 하 생 략 ~~
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jcl</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
~~ 이 하 생 략 ~~
</dependencies>
~~ 이 하 생 략 ~~
라이브러리 | 설 명 |
spring-aop | AOP( Aspect-Oriented Programming ) 기능을 구현하는데 사용되는 라이브러리 |
spring-beans | IoC( Inversion of Control )와 DI( Dependency Injection ) 기능을 구현하는데 사용되는 라이브러리 |
spring-context | |
spring-core | Spring Framework 핵심 기능을 제공하는 라이브러리 IoC 컨테이너, DI, AOP, MVC등 핵심적인 기능을은 spring-core.jar 라이브러리에서 제공 Spring Framework에서 필수적으로 사용되는 Class와 Interface들을 포함한다. |
spring-expression | SpEL( Spring Expression Language ) 기능을 구현하는데 사용되는 라이브러리 |
spring-jcl | Spring Framewrok에서 사용되는 공통 로깅 추상화( Commons Logging Abstraction ) 라이브러리 |
spring-web | Spring Framework에서 Web 개발을 위해 제공하는 라이브러리 Srping Web MVC, WebSocket, Servlet, Protlet 등과 같은 Web 개발에 필요한 다양한 기능을 제공 |
spring-webmvc | Spring Framework에서 제공하는 Web Application 개발을 위한 모듈 중 하나 Spring Web MVC를 구현하는데 필요한 클래스와 기능을 포함하고 있는 라이브러리이다. Model - View - Controller( MVC ) 아키텍처 패턴을 기반으로 Web Applcation을 개발하는데 사용된다. |
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.spring</groupId>
<artifactId>spring_web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>spring_web Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<org.springframework-version>5.2.3.RELEASE</org.springframework-version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jcl</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
</dependencies>
<build>
<finalName>spring_web</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
Mavne Dependency에 반영할 Spring 라이브러리를 추가하였다면
아래와 같이 Mavne을 Build 하여 준다.
Edit Configuration 창이 오픈되면 Goals 항목에 Package라고 작성하여 Apply 한다.
Run 하여 실행한다.
BUILD SUCCESS되면 추가한 Dependencies에 추가한 SpringFramework 라이브러리들이 반영되고
spring_web.war 파일이 생성된다.
#5. Spring 컨테이너 설정
1) example.jsp 생성
WEB-INF 디렉토리를 선택하고 마우스 우클릭한다.
New → Folder를 선택한다.
새로운 Folder를 생성하는데 폴더의 이름은 views로 한다.
생성된 views 폴더를 선택하고 마우스 우클릭하여 example.jsp 파일을 생성한다.
New → JSP File을 선택한다.
New JSP File 창에서 생성될 JSP 파일의 경로를 확인하고 example.jsp 파일 생성 한다.
그럼 example.jsp 파일이 생성된다.
이제 생성한 example.jsp 파일의 코드를 아래와 같이 수정한다.
example.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>Spring Setting</title>
</head>
<body>
<h1>Hello Spring</h1>
</body>
</html>
2) ExampleController.java 생성
src/main/java를 선택하고 작업할 패키지를 추가한다.
src/main/java → New → Package
New Java Package에서 com.spring.web.example.controller
Finish 버튼을 클릭하여 패키지를 생성한다.
아래와같이 패키지가 생성되었다면 이제 Class 파일을 생성해야 한다.
생성된 패키지를 선택하고 마우스 오른쪽 버튼을 클릭하여 New → Class 파일을 추가한다.
ExampleController.java 파일을 생성한다.
ExampleController.java의 코드는 아래와 같다.
ExampleController.java
package com.spring.web.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class ExampleController {
@RequestMapping(value = "/example.do", method = RequestMethod.GET)
public String ExampleMain() {
return "example";
}
}
3) web.xml 수정
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>*.do</url-pattern>
</servlet-mapping>
</web-app>
4) applicationContext.xml 생성
src\main\webapp\WEB-INF 디렉토리에 신규 XML 파일을 생성한다.
WEB-INF 디렉토리를 선택하고 마우스 오른쪽 버튼을 클릭하여 New → Other를 선택한다.
Select a wizard 팝업창이 나타나면 XML File을 선택한다.
applicationContext.xml 파일을 생성한다.
applicationContext.xml의 코드는 아래와 같다.
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>
5) dispatcher-servlet.xml 생성
src\main\webapp\WEB-INF 디렉토리에 신규 XML 파일을 생성한다.
Select a wizard 팝업창이 나타나면 XML File을 선택한다.
dispatcher-servlet.xml 파일을 생성한다.
dispatcher-servlet.xml의 코드는 아래와 같다.
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: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 https://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- Annotation 활성화 -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- component-scan 설정 -->
<context:component-scan base-package="com.spring.web.example.controller"></context:component-scan>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
<property name="order" value="1"/>
</bean>
</beans>
#6. Tomcat 구동하여 결과 확인
이후 STS에서 Apache Tomcat을 실행한다.
브라우저를 열고 링크 입력창에 http://localhost:8181/spring_web/example.do를 입력하자.
위와같이 example.jsp에서 작성한 Hello Spring 문구가 출력되는 것을 확인 할 수 있다.
#7. jsp:forward를 이용하여 시작페이지 변경하기
index.jsp 파일을 열고 아래와 같이 수정한다.
index.jsp
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<jsp:forward page="/example.do"/>
다시 Apache Tomcat을 실행한다.
이후 브라우저 링크에 http://localhost:8181/spring_web을 입력하면
위에서 http://localhost:8181/spring_web/example.do 페이지로 포워드 되는것을 확인 할 수 있다.
'Spring Web > Spring Framework' 카테고리의 다른 글
[Spring] Component-Scan을 사용하는 Annotation 기반 설정 (0) | 2022.06.17 |
---|---|
[Spring] Spring MVC 패턴(Model2 아키텍쳐) 구현 하기 (0) | 2022.05.26 |
[SpringBoot] Windows환경에 IntelliJ 설치하기 (0) | 2021.12.18 |
[Spring] STS 개발환경 - IDE 환경 설정 (0) | 2021.06.27 |
[Spring] STS 개발환경 - 다운로드 및 작업 경로 지정 (0) | 2021.06.21 |