본문 바로가기

Spring

Spring 기본 환경 설정 방법

 

1. Apache Tomcat(아파치 톰캣) 설치

 

https://tomcat.apache.org/

저는 Tomcat9 버전을 설치하였습니다.

 

2. 톰캣 설치 설정

데이터베이스는 Oracle db를 사용할 예정이기에 포트 충돌 방지를 위해

다음과 같이 임의로 변경해줍니다.

포트번호는 자유롭게 입력 가능하지만 특정 포트는 사용이 불가합니다.

 

 

2-1. 톰캣 설치 설정

본인 컴퓨터의 jdk가 설치된 폴더로 설정해줍니다.

 

3. Spring 설치

저는 Spring Tools 4 for Eclipse로 설치하였습니다.

본인 운영체제 환경에 맞게 설치 해줍니다.

만약 파일이 아무것도 인식이 안되는 흰색 서류종이 모양이라면

저는 cmd에서 jar 이라고 입력하면 아래와 같은 아이콘으로 변했습니다.

 

프로젝트 생성 방법

프로젝트 영역에서 우클릭 New - Other 클릭

 

Spring - Spring Legacy Project를 선택해줍니다

 

Spring MVC 선택후 패키지명 정한후 Finish 해줍니다.

여기서는 패키지명을 com.icia.member로 해줬습니다.

 

 

4. Spring 사용 환경설정

아무 프로젝트나 만드신 후 Window - Show View - Other를 클릭해줍니다.

 

 

4-1. Spring 사용 환경설정

 

Show View가 나왔다면 Servers를 열고 목록들 중에 아까 설치해준 톰캣 버전을 찾아 선택해 줍니다.

 

 

 

4-2. Spring 사용 환경설정

 

톰캣이 설치된 경로를 설정해주고 JRE는 자신의 jdk 버전을 선택해줍니다.

 

 

 

 

4-3. Spring 사용 환경설정

 

아래 create a new server를 클릭해주고 Available에 있는 SpringTest1(프로젝트명)을 Add  해줍니다.

 

 

 

 

4-4. Spring 사용 환경설정

 

Server Options에서 Publish module contexts to separate XML files를 체크해주고

Ports에서 포트넘버가 맞는지 확인해줍니다.

 

 

4-5. Spring 사용 환경설정

 

Window - Preferences를 클릭 후

General - workspace를 눌러주신후 UTF-8로 변경해줍니다.

Web - CSS, HTML JSP도 UTF-8로 변경해줍니다.

 

 

4-6 Spring 사용 환경설정

 

Java Build Path - Libraries - ModulPath AddLibrary 누르신 후 Workspace default JRE 클릭

 

Java Compiler - 컴파일러 레벨을 자신의 jdk 버전에 맞게 변경해줍니다.

 

4-7 Spring 사용 환경설정

 

이어서 Project Facets에서 Dynamic Web Module을 4.0으로 변경해주고 바로 밑에 Java를 클릭후 

자신의 jdk 버전에 맞게 설정합니다. 단 Dynamic Web Module 4.0은 jdk가 1.8 이상이여 합니다.

 

4-8 Spring 사용 환경설정

RunTimes에서 Apach Tomcat 9.0 체크를 해줍니다.

 

 

Help - Eclipse Marketplace 를 클릭해 들어가줍니다.

 

Marketplace에서 sts와 web developer tools를 검색 후 둘중 하나를 설치해줍니다. 

참고) sts는 둘중 하나만 설치해도 둘다 설치되며,

       web developer tools 설치는 java and web 붙은걸 설치하는걸 권장하는듯 합니다.

       그냥 web developer를 설치해도 작동엔 문제없음

 

 

 

 

4-9 Spring 사용 환경설정

 

Pom.xml의  내용 수정

Pom.xml의 아래 사진의 밑부분에 pom.xml 코드를 넣어줍니다.

<!-- 여기부터 복사 -->
	<properties>
		<java-version>11</java-version>
		<org.springframework-version>4.3.11.RELEASE</org.springframework-version>
		<org.aspectj-version>1.6.10</org.aspectj-version>
		<org.slf4j-version>1.6.6</org.slf4j-version>
	</properties>

	<!-- Oracle -->
	<repositories>
		<repository>
			<id>Oracle</id>
			<name>Oracle JDBC Repository</name>
			<url>http://maven.jahia.org/maven2</url>
		</repository>
	</repositories>

	<!-- dependencies 중요! -->
	<dependencies>
		<!-- Spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${org.springframework-version}</version>
			<exclusions>
				<!-- Exclude Commons Logging in favor of SLF4j -->
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>

		<!-- AspectJ -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${org.aspectj-version}</version>
		</dependency>

		<!-- Logging -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${org.slf4j-version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>${org.slf4j-version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${org.slf4j-version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.15</version>
			<exclusions>
				<exclusion>
					<groupId>javax.mail</groupId>
					<artifactId>mail</artifactId>
				</exclusion>
				<exclusion>
					<groupId>javax.jms</groupId>
					<artifactId>jms</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jdmk</groupId>
					<artifactId>jmxtools</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jmx</groupId>
					<artifactId>jmxri</artifactId>
				</exclusion>
			</exclusions>
			<scope>runtime</scope>
		</dependency>

		<!-- @Inject -->
		<dependency>
			<groupId>javax.inject</groupId>
			<artifactId>javax.inject</artifactId>
			<version>1</version>
		</dependency>

		<!-- Servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>		<!-- 버전 수정 -->
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.1</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<!-- Test -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.7</version>
			<scope>test</scope>
		</dependency>

		<!-- 추가할 dependencies -->
		<!-- Spring-JDBC -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>

		<!-- tomcat-dbcp -->
		<dependency>
			<groupId>org.apache.tomcat</groupId>
			<artifactId>tomcat-dbcp</artifactId>
			<version>9.0.31</version>
		</dependency>

		<!-- Mybatis : DB Framework -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.5</version>
		</dependency>

		<!-- Mybatis : spring -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.1</version>
		</dependency>

		<!-- Ojdbc6.jar -->
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc6</artifactId>
			<version>12.1.0.2</version>
		</dependency>

		
	</dependencies>


	<build>
		<plugins>
			<plugin>
				<artifactId>maven-eclipse-plugin</artifactId>
				<version>2.9</version>
				<configuration>
					<additionalProjectnatures>
						<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
					</additionalProjectnatures>
					<additionalBuildcommands>
						<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
					</additionalBuildcommands>
					<downloadSources>true</downloadSources>
					<downloadJavadocs>true</downloadJavadocs>
				</configuration>
			</plugin>

			<!-- java버전 수정 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.5.1</version>
				<configuration>
					<source>11</source>
					<target>11</target>
					<compilerArgument>-Xlint:all</compilerArgument>
					<showWarnings>true</showWarnings>
					<showDeprecation>true</showDeprecation>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>exec-maven-plugin</artifactId>
				<version>1.2.1</version>
				<configuration>
					<mainClass>org.test.int1.Main</mainClass>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

 

 

4-10 Spring 사용 환경설정, web.XML 수정

 

web.xml의 내용 수정

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">


	<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/root-context.xml</param-value>
	</context-param>
	
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- Processes application requests -->
	<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>
	
	<!-- 한글깨짐 관련 : UTF-8 파라미터 설정 -->
	<filter>
		<filter-name>encodingFilterUTF8</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>encodingFilterUTF8</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<!-- beans 관련 설정 -->
	<context-param>
		<param-name>spring.profiles.active</param-name>
		<param-value>dev</param-value>
	</context-param>
	
	<context-param>
		<param-name>spring.profiles.default</param-name>
		<param-value>dev</param-value>
	</context-param>
	
	<context-param>
		<param-name>spring.liveBeansView.mbeanDomain</param-name>
		<param-value>dev</param-value>
	</context-param>
	


</web-app>

 

 

 

 

root-context.xml의 내용수정

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"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
		http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
		http://www.springframework.org/schema/beans https://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/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
	<!-- 데이터베이스 연결 -->
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:ORCL" />
		<property name="username" value="cygnus" />	
		<property name="password" value="1111" />
	</bean>
	
	
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="configLocation" value="classpath:/mybatis-config.xml"/>
		<property name="mapperLocations" value="classpath:com/icia/member/dao/mapper/*.xml" />
	</bean>
	
	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
	</bean>
	
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />	
	</bean>
	
	<tx:annotation-driven transaction-manager="transactionManager"/>

</beans>

root-context.xml에서 username과 password 부분은 자신이 만든 oracle 계정으로 변경해줍니다.

자신의 oracle 버전에 따라 url 마지막 부분이 ORCL이나 XE로 나눠집니다.

 

 

root-context.xml에서 

<property name="mapperLocations" value="classpath:com/icia/member/dao/mapper/*.xml" /> 이 부분을

자신의 패키지명에 맞게 수정해줍니다.

 

 

 

 

 

 

servlet-context.xml 내용 수정

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 https://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
	
	<!-- Enables the Spring MVC @Controller programming model -->
	<annotation-driven />

	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
	<resources mapping="/resources/**" location="/resources/" />

	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>

	
	<context:component-scan base-package="com.icia.*" />
	<!-- com.icia.member.controller 대신  -->
	<!--모든 controller를 사용하겠다는 의미로 com.icia.*로 변경 -->
	
	
	
</beans:beans>

 

 

mapper 폴더추가

com.icia.member.dao 패키지 우클릭 - New - Folder 생성하고 이름은 mapper 라고만 작성해줍니다.

 

   

mapper 라는 폴더를 생성하면 아래와 같은 패키지와 폴더모양이 같이있는 폴더가 생기며

그 안에 MemberMapper.xml 파일을 만들어주고 아래의 코드를 작성합니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Member">
	<insert id="mJoin" parameterType="member">
		INSERT INTO MEMBER VALUES(#{mId},#{mPw})
	</insert>
</mapper>

 

 

 

mybatis-config.xml 추가

src/main/resources 폴더에 mybatis-config.xml 파일 생성 후 아래 코드를 작성해줍니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
	<typeAlias type="com.icia.member.dto.MemberDTO" alias="member"/>
	<!-- com.icia.member.dto.MemberDTO 대신 alias 별칭으로 member로 사용한다고 변경 -->
</typeAliases>

</configuration>

 

mybatis-config.xml 파일의 <typeAlias type="com.icia.member.dto.MemberDTO" alias="member"/> 부분도

자신의 패키지명에 맞게 수정해줍니다.​

 

 

 

프로젝트 우클릭 - Maven - Update Project - Force Update 체크 후 Ok

 

 

그래도 오류가 발생한다면 Run - Run As - Maven clean 후 Maven install 해주시면 됩니다.

 

 

기존에 있던 HomeController.java 파일을 삭제해줍니다.

(@RequestMapping의 value를 겹치지 않게 수정해주면 삭제 안해도 됩니다.)

 

MemberController.java 파일에 해당 코드를 작성해줍니다.

package com.icia.member.controller;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

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

@Controller
public class MemberController {
	
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home() {

		
		return "home";
	}

}

 

 

to be continue..