기본Spec
EgovFramework 4.0 - 64bit
Java 1.8
Tomcat 8.0
Gradle Project SpringBoot 2.6.5
전자정부 프레임워크 4.0 설치
https://haenny.tistory.com/294
JDK (Java) 설치
https://haenny.tistory.com/219
Tomcat 8.0 설치 및 서버 설정
다음 게시글에서 Tomcat 관련 글을 참고하면 된다.
SpringBoot Gradle Project 간편하게 생성
본인이 만드려는 프로젝트명과 그룹명을 설정하고 스펙에 맞게 입력 후 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 표시가 되어 정상적으로 추가되지 않을 것이다.
두 번째 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'
https://haenny.tistory.com/298 Failed to determine a suitable driver class
https://haenny.tistory.com/299 "Path with "WEB-INF" or "META_INF" : [WEB-INF/jsp/main.jsp]"
댓글