keytool.exe -genkey -alias juheon -keyalg RSA -keypass 1234qwer -storepass 1234qwer -keystore juheon.jks keytool.exe -export -alias juheon -storepass 1234qwer -file juheon.cer -keystore juheon.jks keytool.exe -importkeystore -srckeystore juheon.jks -destkeystore juheon.key.p12 -deststoretype PKCS12 D:\Java\32bit\jdk1.5.0_22\jre\lib\security\cacert D:\Java\32bit\jdk1.5.0_22\bin\keytool.exe -import -alias tsasample -keystore D:\Java\32bit\jdk1.5.0_22\jre\lib\security\cacert -file D:\workspace\Servers\tsa-server-web-config\tomcat.cer keytool -import -alias somansa -keystore C:\Program Files\Java\jdk1.8.0_102\jre\lib\security\cacert -file c:\somansa.cer #인증서 생성 keytool -genkey -alias keyAlias -keyalg RSA -keypass changeit -storepass changeit –validity 9999 -keystore keystore.jks keytool -export -alias keyAlias -storepass changeit -file server.cer -keystore keystore.jks keytool -import -v -trustcacerts -alias keyAlias -file server.cer ...
Hello world 뭐든 일단 시작. 편하게 시작해야하니 spring boot 사용. "Hello world"를 브라우져에 띄우면 성공. 이시간에 이거 한게 어디냐!!
프로젝트 생성
- Repository 생성
소스 형상관리를 위해 github에 새로운 repository를 생성한다. 프로젝트 성격에 맞게 이름을 "helloworld"라고 지었다. - Spring boot 패키지 생성
저장소를 생성했으니 spring boot 탬플릿 프로젝트를 생성한다. https://start.spring.io/ 접속하면 만들고자 하는 프로젝트 빌드셋 템플릿을 생성할 수 있다.
- Project: gradle
- Language: java
- Spring boot version: 2.2.2
생성한 패키지 다운로드 후 압축 해제 - 이클립스 프로젝트 생성
압축해제한 패키지를 gradle project import로 추가
'여기부터 나오는 코드들은 Spring boot getting started'에 나오는 문서를 따라한 내용이다.'
https://docs.spring.io/spring-boot/docs/2.2.2.RELEASE/reference/html/getting-started.html#getting-started-introducing-spring-boot
서비스 등록
- Controller class 생성
-
Class에 @RestController annotation 추가
@RestController: spring에게 web request 처리 클래스라고 명시 - 문자열을 리턴하는 함수 생성
함수에 @RequestMapping annotation 추가. 파라미터로 "/" 넘긴다. 그러면 path를 지정하지 않은 요청의 경우 해당 함수가 실행된다. 리턴하는 문자열을 "Hello World"
Eclipse에서 어플리케이션 실행
- 탬플릿을 생성했으면 [패키지명] Application.java가 생성되었을 것이다. 그 java 파일을 실행하면 spring boot이 실행 된다.
- 브라우저로 접속해본다.
- 안된다... 왜 안되지
- 일단 에러 페이지가 나오는데 '/error' 페이지가 없다는 페이지 이다.
- Controller에 '/error'도 추가해본다.
- error 페이지도 접근이 안된다.
- Spring boot main 함수가 있는 클래스에 @RestController, @RequestMapping 추가하면 된다.
- 원인은 controller class의 위치 문제이다. spring boot은 main class에서 annotation된 class들을 scan할 때 main 클래스 하위을 패키지의 클래스들만 scan한다.
base package를 변경하고 싶으면 "@SpringBootApplication(scanBasePackages = "com.ha")" 와 같이 직접 지정해주면 된다. - 따라서 main class의 패키지가 "com.ha" 라면 controller는 "com.ha.con"이런식으로 하위에 패키지를 만들어 클래스를 생성해야한다. "com.ha1" 패키지 하위에 controller를 만들면 scan하지 못하여 servlet으로 등록이 안된다.
Gradle로 빌드 및 실행
- gradle project로 Spring boot으로 만들었으니 이클립스에서 실행하는거 말고 gradle을 이용해 실행 해보자
- 프로젝트 경로로 가서 "./gradlew bootrun" 실행하면 Spring boot 서버가 기동된다.
- 프로젝트를 war로 생성해보자
- 마찬가지로 프로젝트 경로로가서 "/gradlew clean war build" 실행하면 프로젝트 경로에 build 폴더를 삭제하고 컴파일한 후 "/build/libs/"경로에 war 파일을 생성한다.
- 콘솔에서 >java -jar [filename].war 실행하염 spring boot 서버가 실행된다.
MVC 추가
- application.properties에 아래 설정 추가
spring.mvc.view.prefix=/WEB-INF/views/spring.mvc.view.suffix=.jsp - @Controller 생성 후 jsp파일이 호출되도록 코딩
- 일반 이클립스에서 spring boot 실행 후 브라우져에서 jsp 호출 path를 호출하면 페이지를 찾지 못한다.
- 실행한 spring boot application은 webapp 폴더를 deploy 못하나 보다.
- eclipse market place에서 spring boot 플러그인을 설치한다.
- 플러그인 설치 후 spring boot 전용?으로 실행하면 정상적으로 jsp가 deploy되고 브라우져로 접근 가능하다.(뻑킹!!! 이것땜에 몇시간 버린거여)
댓글
댓글 쓰기