본문 바로가기

웹/Back-end

[Spring Legacy] 개발환경 구축하기 - ③ xml 파일 설정

 웹짱이영환쌤의 강의를 참고로 합니다.

Webjjang Spring 01-02 개발환경 Legacy 프로젝트 만들기(웹짱과 함께하는 스프링)

URL https://www.youtube.com/watch?v=u_l91DqkkVE&list=PLE5Oosh5zKQfO_md_TwiITjwMhMnzcR2R&index=176

 

 

1. pom.xml 설정

우선, Maven이 사용하는 설정파일인 pom.xml 정보를 변경해줘야 한다.

(* Maven이란? Maven은 Apache사에서 만든 빌드툴(build tool)이다. pom.xml파일을 통해 정형화된 빌드 시스템으로 프로젝트 관리를 해주고, 프로젝트의 전체적인 라이프 사이클을 관리한다. ☞ 더 알아보기)

 

pom.xml에 포함된 정보는 아래와 같다.

출처: https://araikuma.tistory.com/447

 

 

① java, spring framework의 버전 정보 수정

<properties> 태그 안에는 속성들의 정보가 있는데, 그 중 java와 spring framework 속성의 정보를 수정해준다.

기본값에서 -> 본인이 사용하는 java와 spring framework의 버전으로 변경해줘야한다. 

 

(나는 java는 1.8로, springframework 버전은 5.0.7로 변경해주었다. 아래 그림 참고.)

 

 

 

② log4j 버전 정보 수정

 

Servlet & JSP 의 버전 정보 수정

내가 다운받은 톰캣 버전이 9.0이기 때문에

톰캣 버전에 맞춰 Servelt과 JSP의 버전을 변경해준다.

 

 Test부분의 java 버전 정보 수정

하단의 <!-- Test --> 부분으로 가면, 141, 142행에 <source><target>태그가 있다.

source는 개발 시, target은 운영 시 참조하는 자바 버전의 정보인데

기본값(1.6) 에서 현재  사용버전인 1.8로 변경해준다.

 

위에서 properties에서 속성값으로 java의 버전 정보를 입력해뒀으므로,

${ } 달러와 중괄호 안에 속성을 표기(형식: ${java-version} )해주기만 하면 된다 (그럼 위에서 입력한 속성값이 값으로 들어옴).  

 

 

 

 dependency 추가하기

CRUD 프로젝트 생성시 필요한 여러가지 기능들을 구현한 library들을 추가해주어야 한다.

dependency는 maven사이트 안에서 가져와서 추가할 수 있다.

 

		<!-- Lombok -->
		<dependency>
		    <groupId>org.projectlombok</groupId>
		    <artifactId>lombok</artifactId>
		    <version>1.18.10</version>
		    <scope>provided</scope>
		</dependency>
	
		<!-- Mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.6</version>
		</dependency>
		
		<!-- Mybatis-Spring -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.0</version>
		</dependency>
		
		<!-- spring-jdbc 추가 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
	
		<!-- 파일 업/다운을 위한 dependency 추가 -->
		<!-- commons-io -->
		 <dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.5</version>
		</dependency>
		 
		 <!-- commons-fileupload --> 
		 <dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.2</version>
		</dependency>

 

 

⑥ 변경 내용 반영해주기

여기까지 저장 버튼을 눌러 저장한 뒤, 

프로젝트 마우스 우클릭 -> Maven -> Update Project.. 를 클릭하여 pom.xml의 변경된 내용을 프로젝트에 반영시킨다.

 

 

Update project configuration from pom.xml 에 체크된 상태로 OK 버튼을 누르면 완료.

 

 

 

2. log4j.xml 설정

위의 설정이 적용되는 동안 아래와 같은 경고 메시지가 뜬다. 따라서, 로그를 남기는 라이브러리인 log4j.xml 파일의 내용 역시 변경해주도록 한다. 경고메시지의 log4j.xml을 더블클릭하면 바로 이동!

 

또는 Package Explorer에서 파일을 직접 선택해서 이동해도 된다.

 

 

 

 

log4j.xml 소스코드 상단을 보면 위와 같은데, log4j.dtd파일을 해당 위치에서 찾을 수 없다는 뜻이다.

(log4j.dtd 파일을 우리가 실행되는 폴더에 넣어둔 것이 아니기 때문.) 

 

따라서, <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> 의 마지막에 선언되어 있는 빨간글씨 부분을 인터넷에서 제공하고 있는 log4j.dtd파일에 연결함(로컬-> 웹의 경로로 바꿔줌)으로써 문제를 해결할 수 있다.

"http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"

 

 

 

3. web.xml

web.xml은 WAS (Web Application Server: 여기서는 Tomcat)가 최초 구동될 때, WEB-INF 디렉토리에 존재하는 web.xml을 인식하도록 각 파일을 가리켜준다.

여기서 root-context.xml(서비스, 다오, DB 등 로직설정)와 servlet-context.xml파일(핸들러매핑, 컨트롤러매핑)을 지정한다.

다른 건 추가하거나 수정할 거 없고

하단에 ,한글깨짐 현상을 방지하기 위해 web.xml에 인코딩filter를 설정해둔다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.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>

	<!-- 한글설정 시작 -->
	<filter>
		<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>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- 한글설정 종료 -->

</web-app>

 

*  web.xml이 이상한 오류를 내는 경우 web.xml에러 를 참고

에러 내용≫ cvc-id.3: A field of identity constraint 'web-app-filter-name-uniqueness' matched element 'web-app', but this element does not have a simple type.

 

 

하이라이트 된 부분을 java -> JAVA로 바꿔줬을 뿐인데 오류가 전부 사라졌다.. 이유는 모르겠다;

 

 


지금까지 구축한 개발환경을 정리하면 다음과 같다.

 

1. Java - oracle.com

   버전: 전자정부프레임워크 JDK 8

2. Java - JSP - Spring 편집기

   eclipse | STS - spring.io

3. 서버 WAS

   tomcat 9 

4. STS에 tomcat 연결

5. Lombok 라이브러리 사용 (다운로드 및 설치)