본문 바로가기
Spring

Spring Framework (2) - 개발 환경 설정(이클립스 설정, Character Set, encodingFilter)

by 이도현 2021. 5. 19.

 

 

이클립스를 활용하여 Spring 개발을 본격적으로 시작하기 전에 나는 몇 가지 설정을 한다. 

 

1. Character Set을  UTF-8로 설정

 

한국어, 일본어와 같이 영어가 아닌 언어로 개발을 시작할때는 문자 집합(Character Set)을 UTF-8(Universal Coded Character Set + Transformation Format – 8-bit)로 설정하는 것이 좋다. 이 설정을 해놓지 않으면 추후 개발시 인코딩이 깨져 한글이 정상적으로 출력되지 않는 문제들이 생긴다. 이런 설정은 개발을 하는 팀원들 모두가 이와 같이 설정되어 있어야 문제가 생기지 않는다. 구체적인 이유는 다음에 기회가 있으면 설명하기로 한다. 

이클립스로 개발하는데 있어서 필수적으로 바꿔 놓아야 하는 부분만 먼저 세팅한다. 

  1. 이클립스 상단 바에서 Window를 클릭 후  Preferences 클릭
  2. General - Workspace에서 Text file encoding을 Other에서 UTF-8로 선택
  3. General - Content Types에서 Default encoding을 UTF-8로 입력하고 Update
  4. Web - CSS Files 에서 Encoding을 ISO10646/Unicode(UTF-8)로 선택
  5. Web - HTML Files 에서 Encoding을 ISO10646/Unicode(UTF-8)로 선택 
  6. Web - JSP Files 에서  Encoding을 ISO10646/Unicode(UTF-8)로 선택
  7. XML - XML Files 에서  Encoding을 ISO10646/Unicode(UTF-8)로 선택
  8. 하단 우측의 Apply and Close를 클릭하여 창 닫기

위와 같이 수정을 해도 UTF-8로 적용되지 않는다면 해당파일을 우클릭하여 Properties- Resource에서 Text file encoding을 Other: UTF-8로 변경해 준다.

 

2. 이클립스 메모리 설정

이클립스 설치된 폴더에 가면 eclipse.ini 이라는 파일이 있다.

최소메모리인 -Xms256m 라는 항목을 본인의 메모리 상황에 맞게 -Xms1024m 나 -Xms2048m 으로 바꿔주고, 최대메모리인 -Xmx2048m 항목도 적절하게 높혀주자.

 

현재 사용중인 힙메모리의 상태를 보기위해 Window - Preferences- General 에서 Show heap status 를 체크하자.

 

3. Spring Project 생성

  1. Package Explorer에서 우클릭하여 new - Spring Legacy Project 클릭
  2. 상단의 Project name에 원하는 프로젝트 이름을 영어로 입력 후 Templates에서 Spring MVC Project 클릭 후 하단의 Next 클릭
  3. 입력창에 예를 들어 com.dh.spring 과 같이 "."으로 구분된 영어를 입력(이는 이후 패키지의 경로가 되는데, com.회사명.제품명으로 입력하라고 되어 있지만, 이는 선택적인 것이므로 알아서 선택해도 됨, 다만 경로명이 너무 길지 않게 3~4자의 영어로 구분지어 생성하는 것이 작업에 유리) 후 Finish 클릭

 

4. encodingFilter UTF-8 설정 

 

우리가 만드는 웹 어플리케이션은 인코딩으로 인해 한글이나 일본어, 중국어 등이 정상적으로 출력되지 않는 일이 비일비재하다. 스프링에서 웹으로 출력되는 내용이 정상적으로 출력되게 하기 위해서는 아래의 설정을 web.xml에 하여야 한다. 

web.xml은 생성된 프로젝트를 더블클릭 후 src - main - webapp - web.xml 로 찾아갈 수 있지만, 빠르게 찾기 위해서는 Ctrl + Shift + R로 web.xml을 검색하는 것이 더 효율적일 수 있다. 다만 Ctrl + Shift + R 로 찾는 경우 현재 프로젝트 외에도 다른 프로젝트의 파일도 같이 검색되므로 세부 경로를 정확히 확인하는 것이 중요하다. 

어떠한 방식으로든 web.xml을 찾아서 파일을 열면 이미 설정된 내용들이 보인다. 

 

하나하나 별도의 의미를 가지고 있지만, 일단 encodingFilter를 UTF-8로 설정하는 것만 먼저 작업한다.

 

	<!-- encodingFilter -->

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

이 부분을 </servlet-mapping>의 밑이면서 </web-app> 위쪽의 공간에 추가한다. 

추가한 후 Ctrl + A를 눌러 전체 선택하고 Ctrl + SHIFT+ F를 눌러 소스를 정렬해 주자.

 

5. contextConfigLocation 설정

 

방금 수정한 web.xml에서 한 군데 더 수정해야하는 부분이 있는데,  상단의 <param-name>contextConfigLocation</param-name>에 대한 <param-value>값을 /WEB-INF/spring/*-context.xml 로 수정하는 것이다. root로 되어 있는 부분을 *로 바꾸는 것이다. 수정을 하고 나면 다음과 같이 된다. 

	<!-- 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/*-context.xml</param-value>
	</context-param>

 

왜 이 설정을 하는지에 대해서 이해하기 위해서는 다음 부분을 먼저 읽어 보는 것을 추천한다.

 

https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#spring-web

 

참조 파일이 영어로 되어 있어 이해하기 힘든 경우를 위해 아주 간략하게 설명을 하자면, 우리가 웹 어플리케이션을 실행하면 pom.xml, web.xml, root-context.xml, servlet-context.xml 등의 설정 파일을 읽어오게 되는데(설정파일이 항상 xml 파일일 필요는 없다. java 파일로도 설정이 가능하다.), 이러한 설정들은 모두 어느 시점에서 어떤 목적을 가지고 다른 용도로 설정된다. 예를 들어 pom.xml은 프로젝트 전체에서 사용하게 되는 의존관계에 대한 설정을 적고있고, web.xml은 이름에서 알 수 있듯이 웹에 관련된 설정이다. root-context.xml는 데이터베이스와 같이 어플리케이션이 실행되는 동안 지속적으로 사용되어야 하는 것들에 대한 설정을 가지고 있다. appServlet 폴더 하의 servlet-context.xml은 웹과 관련된 것 중 서블릿과 관련된 설정을 기술한다. 서블릿이란 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램을 이야기하는데, 간단하게 이해하기 위해 앞뒤 맥락을 다 쳐내고 말하면 JSP파일과 관련하여 설정해야 하는 것들이라 할 수 있다. 

 

나는 context가 맥락이라는 의미를 가지고 있으니 *-context.xml 로 설정한다. 서블렛에 대한 설정이라는 뜻에서 *-servlet.xml 으로 설정하는 경우도 많은 데 어떤 것으로 설정하는 지는 크게 중요하지 않고, 설정을 하고 나서는 spring 하단에 이름이 -context.xml(*-servlet.xml으로 설정했다면 -servlet.xml)으로 끝나는 파일로 설정을 하면 어플리케이션이 실행될 때 해당 설정을 읽어오게 된다.

 

*은 영어로 asterisk이고, 보통 한국어로는 '애스터리스크'라고 읽는다. 여기서는 와일드카드 문자로 사용되었는데, 이름이 -context.xml으로 끝나는 파일을 모두 읽어들이겠다는 의미이다.

 

 

6. 이클립스 테마를 Dark로 변경

 

이 설정은 하지 않아도 그만이지만, 나는 개발을 하면서 오랜시간 밝은 화면을 보면 눈이 시리는 증상이 있어 항상 개발 화면을 어두운 계열로 바꾸고 작업을 한다. 설정은 매우 간단하다.

 

  1. 이클립스 상단 바에서 Window를 클릭 후  Preferences 클릭
  2. General - Appearance 클릭후 Theme을 Dark로 선택
  3. 하단 우측의 Apply and Close를 클릭하여 창 닫기

 

아직 개발 환경 설정이 모두 끝난 것은 아니나 내용이 길어지므로 여기서 한 번 끊어간다.