티스토리 뷰
728x90
0. 스프링을 쓸일이 별로 없는데, 아주 예전 스프링 4.4를 스프링부트로 마이그레이션할 일이 생겼다. 기존의 client 스크립트가 JSP라서 대략 난감이다. 아무튼 인터넷에 찾아보니 제대로 돌아가는 게 없어 이것저것 끌어모아 틀로 사용할 만한 것들 구성하였다. 짜집기 코드라서 내가 만든 것은 아니다.
1. 스프링 부트 initializer에서 Spring Web, Oracle Driver, Lombok 만 선택했다. 패키지는 war로 설정했다.
2. 그런 후 jstl과 tomcat-embed-jasper를 넣었다. 나머지는 initializer에서 알아서 설정해 주었다.
2-1 bootstrap 5.0.1을 webjar로 추가하였다.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>pe.pilseong</groupId>
<artifactId>cmsapp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>cmsapp</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>9.0.44</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.webjars/bootstrap -->
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>5.0.1</version>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
3 application.properties 파일
spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp
welcome.message: Hello Pilseong
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@127.0.0.1...
spring.datasource.username=username
spring.datasource.password=password
4. 파일 구조
4-1 src/main/webapp/WEB-INF 폴더를 만들어야 한다. 거기 아래 jsp 위치
4-2 static 파일을 src/resources/static 아래에 들어가야 한다. 아래는 css폴더를 만들고 사용하고 있다.
5. jsp 파일
<!DOCTYPE html>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html lang="en">
<head>
<!-- Access the bootstrap Css like this,
Spring boot will handle the resource mapping automcatically -->
<link rel="stylesheet" type="text/css" href="webjars/bootstrap//5.0.1/css/bootstrap.min.css" />
<!--
<spring:url value="/css/main.css" var="springCss" />
<link href="${springCss}" rel="stylesheet" />
-->
<c:url value="/css/main.css" var="jstlCss" />
<link href="${jstlCss}" rel="stylesheet" />
</head>
<body>
<nav class="navbar navbar-inverse">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#">Spring Boot</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="starter-template">
<h1>Spring Boot Web JSP Example</h1>
<h2>Message: ${message}</h2>
</div>
</div>
<script type="text/javascript" src="webjars/bootstrap/5.0.1/js/bootstrap.min.js"></script>
</body>
</html>
5-1 css 파일
h1{
color:#0000FF;
}
h2{
color:#FF0000;
}
6. 기동 파일
6-1 ServletInitalizer는 패키징을 war로 설정하면 자동으로 생성된다.
package pe.pilseong.cmsapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class CmsappApplication {
public static void main(String[] args) {
SpringApplication.run(CmsappApplication.class, args);
}
}
package pe.pilseong.cmsapp;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(CmsappApplication.class);
}
}
package pe.pilseong.cmsapp.controller;
import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class WelcomeController {
// inject via application.properties
@Value("${welcome.message:test}")
private String message = "Hello World";
@RequestMapping("/")
public String welcome(Map<String, Object> model) {
model.put("message", this.message);
return "welcome";
}
}
7. mvnw로 빌드해서 spring-boot:run 이나 IDE로 기동하면 된다.
728x90
'Spring > Spring Boot' 카테고리의 다른 글
Web Service: 4.Spring Boot 클라이언트 커스텀 헤더 2 (0) | 2022.12.27 |
---|---|
Web Service: 3.Spring Boot 클라이언트 커스텀 헤더 (0) | 2022.12.26 |
Spring Boot : @ResponseStatus, @ExceptionHandler (0) | 2020.08.08 |
Spring Boot : 이미지 업로드와 표출 (0) | 2020.08.06 |
Spring Boot : Auto Configuration (0) | 2020.07.23 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
TAG
- WebMvc
- 스프링부트
- XML
- RestTemplate
- Angular
- 하이버네이트
- 설정하기
- one-to-many
- 로그인
- 매핑
- Spring Security
- mapping
- login
- 스프링
- form
- hibernate
- Spring
- one-to-one
- crud
- 설정
- jsp
- Security
- 상속
- 자바
- Rest
- 외부파일
- spring boot
- MYSQL
- Validation
- Many-To-Many
250x250