JVM/SpringBoot

[SpringBoot] 전자정부프레임워크 SpringBoot 테스트용 웹 프로젝트 만들기

헹창 2022. 4. 4.
반응형

기본Spec

EgovFramework 4.0 - 64bit

Java 1.8

Tomcat 8.0

Gradle Project SpringBoot 2.6.5

 

전자정부 프레임워크 4.0 설치

https://haenny.tistory.com/294

 

[EgovFramework] 전자정부프레임워크 4.x 개발환경 다운로드 및 Lombok 설치

[EgovFramework] 전자정부프레임워크 4.x 개발환경 다운로드 및 Lombok 설치 전자정부프레임워크 다운로드 전자정부프레임워크 4.x 개발환경 다운로드 받으러가기 개발환경 - 4.x 다운로드 | 표준프레임

haenny.tistory.com

 

JDK (Java) 설치

https://haenny.tistory.com/219

 

[Java] Windows10 환경 OpenJDK 설치 및 환경설정

[Java] Windows10 환경 OpenJDK 설치 및 환경설정 1. OpenJDK 다운로드 OpenJDK는 다운로드 는 아래 링크를 통해 원하는 버전의 설치 파일을 다운로드 할 수 있다. JDK Builds from Oracle jdk.java.net JDK 배포..

haenny.tistory.com

 

Tomcat 8.0 설치 및 서버 설정

다음 게시글에서 Tomcat 관련 글을 참고하면 된다.

https://haenny.tistory.com/50

 

[Eclipse] 전자정부프레임워크 3.8 버전 업그레이드 하기 (1) Spring

[Eclipse] 전자정부프레임워크 3.8 버전 업그레이드 하기 (1) Spring 기존 egovFramework 3.6.0 버전에서 개발을 하고 있었는데 3.8버전을 업그레이드 하려한다. 분명 언젠가 또 업그레이드 할 날이 올 것을

haenny.tistory.com

 

SpringBoot Gradle Project 간편하게 생성

https://start.spring.io

 

 

본인이 만드려는 프로젝트명과 그룹명을 설정하고 스펙에 맞게 입력 후 Generate CTRL + Enter  버튼을 클릭하면 압축(Zip) 파일이 다운로드 될 것이다.

 

 

 

다운받은 압축파일은 본인의 이클립스 workspace 경로에 옮긴 뒤에 "여기에 압축풀기" 를 클릭하여 압축을 풀어야 프로젝트 임포트할 때 편리하다.

 

 

 

다시 이클립스로 돌아와서 Package Explorer 창에서 마우스 우키 - Import - Gradle - Existing Gradle Project  클릭하고,

다음 화면에서 Browser 를 선택하여 이전에 압축해제한 파일을 선택한 뒤 Finish를 클릭한다.

 

 

 

 

 

그러면 다음과 같은 구조로 프로젝트가 생성된다 !

 

 

 


Dependency 추가하기

주로 SpringMVC 구조의 프로젝트를 진행하면서 자주 사용해왔던 라이브러리를 위주로 추가할 것이다.

 

버전에 따라 필요한 라이브러리는 Maven Repository 에서 검색한 뒤 알맞은 버전을 선택해서 build.gradle dependencies 에 추가해주면 된다.

 

만약 jstl 를 추가할 때 여러개가 나와서 헷갈릴 수 있다.

첫 번째 것으로 추가를 하고 Gradle - Refresh Gradle Project 를 클릭하면, build.gradle 파일에 빨간 X 표시가 되어 정상적으로 추가되지 않을 것이다.

 

javax.servlet.jsp.jstl 로 추가했을 때 build.gradle 에러

 

 

두 번째 JSTL인 (javax.servlet.jstl) 로 받아야한다.

 

 

필자는 가장 최신 버전인 1.2 버전을 클릭하였고, Gradle Tab 의 implementation group 정보를 그대로 복사하여 build.gradle 에 추가해주면 된다.만약 지금 게시물과는 번외로, Maven Project 인 경우에는 Maven Tab을 클릭하여 추가해주면 된다.

 

 

 

 

의존성 추가 화면 

 

 

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	
	// web
	implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.6.5'
	// jstl    
	// https://mvnrepository.com/artifact/javax.servlet/jstl    
	implementation group: 'javax.servlet', name: 'jstl', version: '1.2'

	// 내장 tomcat을 사용하기 때문에 JSP 처리하는 서블릿을 추가하는 것
	// https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper
	implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-jasper', version: '9.0.60'    
	
	// lombok
	// https://mvnrepository.com/artifact/org.projectlombok/lombok
	compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.12'
	annotationProcessor 'org.projectlombok:lombok:1.18.12'
    
	// 정적 소스 재시작 없이 적용
	// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools
	implementation group: 'org.springframework.boot', name: 'spring-boot-devtools', version: '2.6.5'
	
	// simple json
	// https://mvnrepository.com/artifact/com.google.code.gson/gson
	implementation group: 'com.google.code.gson', name: 'gson', version: '2.9.0'
	// https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple
	implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
}

 

application.properties 설정

아직은 데이터베이스 커넥션 없이 프로젝트를 사용을 할 것이기 때문에, 웹프로젝트 특성에 맞는 일부 설정만 하였다.

 

 

#project name
project.name=TestBoot

#WEB 환경설정
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
server.port=9090
server.servlet.context-path=/TestBoot

#정적소스 재시작 없이 적용
spring.devtools.livereload.enabled=true
spring.freemarker.cache=false

 

 

여기까지 웹 프로젝트를 구현하기 위한 간단한 설정은 끝났다.

이제 실제 페이지 화면 (jsp) 와 컨트롤러를 연결하기 위해 파일을 추가하보자.

 

 


 

webapp 구조 폴더 생성

 

 

 

main.jsp

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!doctype html>
<html lang="ko">
<head>
	Hellow World !
</head>
<body>
<script>
</script>
</body>
</html>

 

 

PageController

 

 

package kr.co.haenny.TestBoot.controller;

import java.util.Enumeration;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class PageControl {	
	@GetMapping("/**/*.do")
	public String goToGetPage(HttpServletRequest request, HttpServletResponse response, Model model){
		if(request.getServletPath().equals("/error/page.do")) {
			/*에러 페이지인 경우 상태코드와 상태메세지 리턴*/
			HttpStatus hs = HttpStatus.valueOf(response.getStatus());
			model.addAttribute("status", hs.value());
			model.addAttribute("message", hs.getReasonPhrase());
		}else {		
			/*파라미터있는 경우 데이터 리턴*/
			Enumeration<String> params = request.getParameterNames();
			while (params.hasMoreElements()) {
				String name = (String) params.nextElement();
				model.addAttribute(name, request.getParameter(name));
			}
		}
		return request.getServletPath().replace(".do", "");
	}
}

 

 

사실 Page Controller는 전자정부프레임워크 프로젝트에서 사용해왔던 PageController를 그대로 가져왔는데, 

이렇게 적용한 뒤 실행을 시키려니 아래와 같은 에러가 났으니 참고바란다.

 

 

 

 

그 외 SpringBoot 오류  관련된 내용 참고하자.

 

https://haenny.tistory.com/296 Initializing Spring DispatcherServlet 'dispatcherServlet'

 

SpringBoot Initializing Spring DispatcherServlet 'dispatcherServlet'

SpringBoot 실행 후 웹페이지 로드 시에 표출되는 로그 Initializing Spring DispatcherServlet 'dispatcherServlet' Initializing Servlet 'dispatcherServlet' Completed initialization in 1 ms application.pr..

haenny.tistory.com

https://haenny.tistory.com/298 Failed to determine a suitable driver class

 

Failed to determine a suitable driver class 오류 해결

오류 로그 ********************************* APPLICATION FAILED TO START ********************************* Description: Failed to configure a DataSource: 'url' attribute is not specified and no embed..

haenny.tistory.com

https://haenny.tistory.com/299 "Path with "WEB-INF" or "META_INF" : [WEB-INF/jsp/main.jsp]" 

 

SpringBoot "Path with "WEB-INF" or "META_INF" : [WEB-INF/jsp/main.jsp]" 경고 및 Whitelabel Error Page 오류

"Path with "WEB-INF" or "META-INF" : [WEB-INF/jsp/main.jsp]" SpringBoot 에서 main.jsp 화면을 만들고, Controller에서 View로 리턴을 하였는데 jsp 파일을 찾지 못하는 경우 ResourceHttpRequestHandler : P..

haenny.tistory.com

 

 

728x90
반응형

댓글

추천 글