이클립스 (5)

Eclipse + SpringBoot + JSP 개발환경 세팅하기 2탄입니다.

오늘은 backend 보다는 frontend 작업을 위한 Bootstrap 추가를 webjar를 이용할 수 있도록 설정해보도록 할 예정입니다.

저는 backend 개발자다보니 front쪽은 자세히 알려드리기는 힘들지만 빠르게 서치해서 사용해본 경험상 webjar는 maven 의존성 관리를 통해 라이브러리를 다운받아 사용할 수 있어 매우 쉽게 라이브러리 추가가 가능합니다. org.webjars에는 bootstrap, jquery, font-awesome, swagger-ui 뿐만 아니라 angularJS, momentJS, d3js 등 매우 많은 프론트 개발을 위한 라이브러리들을 제공하고 있습니다. 매번 다운로드받아서 프로젝트에 추가할 필요 없이 백엔드 라이브러리들을 관리하듯이 메이븐 의존성으로 쉽게 관리할 수 있도록 도와주는 역할을 한다고 보시면 됩니다.

우선 지난시간에 했던 Eclipse + SpringBoot + JSP 개발환경 세팅하기 1탄 을 완성하셨던 분들을 기준으로 설명을 할 예정이니 해당 포스팅을 안보신 분들은 한번 쭈욱~ 훑어보시고 다시 오시기 바랍니다.

webjar 설정을 위해서 추가할 파일은 딱 하나입니다. org.springframework.web.servlet.config.annotation.WebMvcConfigurer를 구현하는 WebMVCConfig 클래스를 하나 생성하고 다음과 같이 addResourceHandlers 메서드를 오버라이드하여 작성해줍니다.

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
	    if (!registry.hasMappingForPattern("/webjars/**")) {
	        registry.addResourceHandler("/webjars/**").addResourceLocations(
	                "classpath:/META-INF/resources/webjars/");
	    }
	    if (!registry.hasMappingForPattern("/**")) {
	        registry.addResourceHandler("/**").addResourceLocations(
	        		new String[] {"classpath:/static/script", "classpath:/static/style"});
	    }
    }

 

우선 webjars 경로를 등록해주는 것 때문에 이 클래스를 만들어 사용하는데 이때 @EnableWebMvc 어노테이션을 사용하게 됩니다. 그런데 여기서 주의할 점이 이 어노테이션을 사용하게되면 WebMvcAutoConfiguration 이 disable되면서 기존 설정들이 정상적으로 동작하지 않게 됩니다. 따라서 기존에 잘 읽어오던 static하위의 javascript파일들과 css파일들을 못찾아 404 오류가 발생하게 되죠. 그래서 addResourceHandlers에 이 두 파일들이 존재하는 디렉토리를 classpath경로로 추가해줘야 합니다.

또한, application.properties 파일에 작성하였던 아래 두 라인은 더이상 사용하지 않고 방금 추가한 WebMVCConfig 클래스에 별도로 ViewResolver를 등록하여 사용해야합니다.

	@Bean
	public ViewResolver getViewResolver(){
	    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
	    resolver.setPrefix("/WEB-INF/views/");
	    resolver.setSuffix(".jsp");
	    resolver.setViewClass(JstlView.class);
	    return resolver;
	}

 

아래는 완성된 WebMVCConfig 클래스의 코드입니다.

package com.example.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

@Configuration
@EnableWebMvc
public class WebMVCConfig implements WebMvcConfigurer {

	@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
		if (!registry.hasMappingForPattern("/webjars/**")) {
	        registry.addResourceHandler("/webjars/**").addResourceLocations(
	                "classpath:/META-INF/resources/webjars/");
	    }
	    if (!registry.hasMappingForPattern("/**")) {
	        registry.addResourceHandler("/**").addResourceLocations(
	        		new String[] {"classpath:/static/script", "classpath:/static/style"});
	    }
    }
	
	@Bean
	public ViewResolver getViewResolver(){
	    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
	    resolver.setPrefix("/WEB-INF/views/");
	    resolver.setSuffix(".jsp");
	    resolver.setViewClass(JstlView.class);
	    return resolver;
	}
}

 

자, 모든 준비는 완료가 되었습니다. 이제 pom.xml에 다음과 같이 부트스트랩 의존성을 추가해줍니다.

		<!-- Bootstrap CSS -->
		<dependency>
			<groupId>org.webjars</groupId>
			<artifactId>bootstrap</artifactId>
			<version>4.5.0</version>
		</dependency>

 

그리고 test.jsp 파일을 열어 아래와 같이 부트스트랩을 링크걸어줍니다.

<link rel="stylesheet" href="/webjars/bootstrap/4.5.0/css/bootstrap.min.css" />

 

만약 부트스트랩이 아닌 jQuery와 같은 javascript 라이브러리를 사용하고자 할 경우 의존성 추가는 동일하게, jsp파일에 링크를 걸어줄 때에는 아래와 같은 형태로 해주시면 됩니다.

<script src="/webjars/jqeury/3.5.1/js/jqeury.min.js"></script>

 

자, 여기까지 완료되면 모든 준비는 끝난것입니다. 이제 부트스트랩에서 제공하는 기능을 마음껏 사용하시면 됩니다.

저는 지난 시간에 최종결과물에서 버튼을 하나 추가해보는 정도로 이번 포스팅을 마치겠습니다.

test.jsp의 body에 다음 한 줄을 추가했습니다.

<button type="button" class="btn btn-danger btn-lg">버튼</button>

 

그리고 결과를 확인해보면 아래와 같이 빨간색 버튼이 추가된 것을 확인할 수 있습니다.

 

이상으로 Eclipse + SpringBoot + JSP 개발환경 세팅하기 2탄 포스팅을 마칩니다.

오늘도 즐겁고 행복한 코딩을 하는 케이치였습니다~

💻 Programming/Java

이클립스에 스프링툴즈(STS) 설치하기

이클립스 스프링툴즈 설치방법

이번에는 이클립스에서 스프링부트를 사용하기위한 스프링툴즈 설치방법을 알아볼게요.

이클립스가 설치완료되었다는 가정하에 아래 순서대로 진행하시면됩니다.

 

1. 이클립스 상단 메뉴에서 Help > Eclipse Marketplace... 선택합니다.

 

 

2. 검색창에 spring 으로 검색한 뒤 제일 상단에 Spring Tools (aka Spring Tools Suite) 가 보이면 install 버튼 클릭 (2020년 7월 현재 최신 버전은 4.7.0.RELEASE)

만약 4.7.0 버전이 보이지 않는다면 이클립스 버전이 오래된 건 아닌지 확인해보시고 최신 버전으로 이클립스를 다시 다운받아 설치하신 뒤 진행하시기 바랍니다.

 

3. required 항목만 남기고 나머지는 체크 해제합니다.

 

4. 라이센스 동의를 선택하고 Finish 버튼을 클릭합니다.

이상으로 이클립스에서 스프링부트를 쉽게 사용할 수 있도록 해주는 유용한 플러그인 스프링 툴즈 설치방법에 대한 포스팅을 마칩니다.

이클립스에서 프로젝트 import를 해보겠습니다.

import를 한다는 것은 불러오기를 한다는 것입니다.

당연히 기존에 생성했던 프로젝트나 파일이 있어야겠죠

이번 시연에 사용된 이클립스 버전은 oomph 2019-06 (4.12.0)입니다.

이클립스 버전


프로젝트 불러오기는 아래 두 가지 방법이 있습니다.

1. 이클립스 좌측의 package explorer에서 Import projects...를 선택

2. 이클립스 도구메뉴(상단메뉴)의 File > Import 를 선택

패키지탐색기

이클립스 파일 메뉴


어떤 방법을 선택하던지 동일한 아래 창이 뜨게 됩니다.

프로젝트 불러오기 팝업창 - 종류선택

위 창에서 내가 만들었던 프로젝트의 종류를 선택하면 됩니다.

여기서는 Existing Projects into Workspace를 선택하겠습니다.

이렇게 할 경우 현재 workspace가 아닌 

다른 경로에 위치한 프로젝트를 현재 workspace로 가져오게 됩니다.


프로젝트 불러오기 팝업창 - 경로탐색

여기서는 프로젝트의 경로를 선택하면 됩니다.


프로젝트 경로 선택창

import할 프로젝트의 경로를 찾아서 프로젝트 디렉토리를 선택해줍니다.

저는 SampleProject라는 프로젝트를 선택하고 Open을 클릭하였습니다.


프로젝트 불러오기 팝업창 3

프로젝트의 디렉토리 경로가 표시됨가 동시에 

Projects 목록에 SampleProject가 표시되었습니다.

이제 Finish 버튼을 클릭합니다.


프로젝트 불러오기 완료 모습

Package Explorer에 위와 같이 프로젝트가 import되었습니다.


이상으로 이클립스 IDE에서 프로젝트 불러오기를 해보았습니다.



자바 웹앱을 개발할 때 가장 많이 사용하는 툴이 이클립스와 스프링부트입니다.

이번 시간에는 이클립스에서 스프링 프레임웍을 사용할 수 있도록 스프링을 설치해보도록 하겠습니다.

우선, 이클립스가 설치되어있다고 가정합니다.

최신 이클립스는 우측 링크에서 받으실 수 있습니다. -> https://www.eclipse.org/downloads/

 

이클립스 상단 메뉴에서 Help > Eclipse Marketplace... 을 선택합니다.

그리고 검색창에서 "sts"를 검색합니다.

위 화면처럼 나오면 "Spring Tools 4 - for Spring Boot (aka Spring Tool Suite 4)"를 install 버튼을 눌러 설치합니다.

Spring Tools 4 플러그인을 설치할 때 어떤 것들을 설치할 수 있는지 목록을 조회해 오고 있습니다.

상세 목록을 위 사진처럼 보여주는데, 기본적으로 모두 체크가 되어있습니다.

그냥 "confirm" 눌러주세요.

소프트웨어 라이센스에 동의하는지 묻는 질문에는 "I accept the terms...."를 선택하고 "Finish"버튼을 눌러주시면 됩니다.

 

STS 4 설치 진행 상태

우측 하단의 "Progress" 버튼을 클릭하면 Progress 창으로 focus가 맞춰지면서 설치 상태를 보여줍니다.

인터넷 환경에 따라 시간이 좀 걸릴 수도 있습니다.

 

 

이클립스 사용시 웹앱 프로젝트를 처음 만들면 이 에러를 볼 수 있습니다.


이 에러는 서블릿 클래스가 클래스 빌드패스에 잡혀있지 않아서 발생하는 문제입니다.


아래와 같이 해결하시면 됩니다.


Project Properties-> Java Build Path-> Add Library -> Select "Server Runtime" from the list-> Next->Select "Apache Tomcat"-> Finish