● Spring Boot Project기반 mymelon 프로젝트 카페24 서버에 올리기
※ cafe24 웹호스팅으로 실습하는 경우
※ 기존에 서비스가 진행되고 있는 페이지가 있다면 초기화한후 테스트 합니다
www.cafe24.com -> 로그인 -> 나의 서비스관리 -> 계정초기화 -> Tomcat초기화
1. 카페24 MariaDB 테이블 생성
CREATE TABLE mediagroup(
mediagroupno int NOT NULL PRIMARY KEY,
title varchar(100) NOT NULL
);
CREATE TABLE media(
mediano int NOT NULL PRIMARY KEY,
title varchar(300) NOT NULL,
rdate datetime NOT NULL,
poster varchar(50) DEFAULT 'poster.jpg' NOT NULL,
filename varchar(100) NOT NULL,
filesize bigint DEFAULT 0 NOT NULL,
mview char(1) DEFAULT 'Y' NOT NULL,
mediagroupno int NULL
);
2. pom.xml 수정 및 추가
<groupId>kr.co</groupId> <----수정
<artifactId>itwill</artifactId> <----수정
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<!-- <scope>runtime</scope> --> <----수정
</dependency>
<!-- Maria DB 의존성 추가 -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<scope>runtime</scope>
</dependency>
3. application.properties
#주석처리
#server.port=9095
#cafe24서버 MariaDB연결
spring.datasource.driverClassName=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/DB명(아이디)
spring.datasource.username=본인 아이디
spring.datasource.password=본인 비밀번호
4. DAO 클래스 수정
MediagroupDAO.java
public int create(MediagroupDTO dto) {
//Oracle DB
//sql.append(" INSERT INTO mediagroup(mediagroupno, title) ");
//sql.append(" VALUES( mediagroup_seq.nextval, ? ) ");
//Maria DB
sql.append(" INSERT INTO mediagroup(mediagroupno, title)");
sql.append(" VALUES((select ifnull(max(mediagroupno),0)+1 from mediagroup as TB), ?)");
}//create() end
public List<MediagroupDTO> list2(int start, int end) { //페이징
//Maria DB
sql.append(" SELECT AA.* ");
sql.append(" FROM ( ");
sql.append(" SELECT @RNO := @RNO + 1 AS r, CC.* ");
sql.append(" FROM ( ");
sql.append(" SELECT mediagroupno, title ");
sql.append(" FROM mediagroup ");
sql.append(" ) CC, ( SELECT @RNO := 0 ) BB ORDER BY mediagroupno ");
sql.append(" ) AA ");
sql.append(" WHERE r >=" + start + " AND r <= " + end );
}//list() end
MediaDAO.java
sql.append(" INSERT INTO media(mediano,");
sql.append(" title, rdate, poster, filename, filesize, mview, mediagroupno)");
sql.append(" VALUES((select ifnull(max(mediano),0)+1 from media as TB),");
sql.append(" ?, now(), ?, ?, ?, 'Y', ?)");
5. UploadSaveManager 수정
UploadSaveManager.java
public static String saveFileSpring30(MultipartFile multipartFile, String basePath) {
.....
//String serverFullPath = basePath + "\\" + fileName;
//cafe24서버
String serverFullPath = basePath + "/" + fileName;
System.out.println("fileName: " + fileName);
System.out.println("serverFullPath: " + serverFullPath);
.....
}//saveFileSpring30() end
6. ServletInitializer 클래스
※ 프로젝트 최초 생성시 war로 하게 되면 자동 추가됨
ServletInitializer.java
package kr.co.mymelon;
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(Spring07MymelonApplication.class);
}//
}//class end
스프링부트 war 프로젝트 생성시 SpringBootServletInitializer를 상속받는 ServletInitializer 클래스 파일이 생성된다.
해당 파일의 용도는 무엇일까?
스프링 부트 웹 애플리케이션을 배포할 때 jar를 이용하기도 하지만, 전통적인 방식인 war 파일로 배포하는 경우가 있다.
이때 SpringBootServletInitializer를 상속받아 배포하게 된다.
Why?
스프링 웹 애플리케이션이 Tomcat에서 동작되기 위해서는 web.xml에 ApplicationContext 등록해줘야한다.
Apache Tomcat이 구동될때 web.xml을 읽어 웹 애플리케이션을 구성하기 때문이다.
Servlet 3.0으로 스펙이 업데이트 되면서 web.xml 설정을 WebApplicationInitializer 인터페이스를 구현하여 대신 할 수 있게 되었고
이를 구현한 SpringBootServletInitializer를 상속받아 외부 Tomcat에서 스프링부트가 실행되도록 해준다.
SpringBootServletInitializer를 상속 받는 다는 것은 tomcat 같은 Servlet Container 환경에서
Spring Boot 애플리케이션 동작 가능 하도록 웹 애플리케이션 컨텍스트를 구성한다는 의미.
8. JDK 버전 조정
- 이클립스-> 해당 Project 우클릭
-> Properties
-> Project Facets
-> Java 1.8
-> Apply
- 해당 프로젝트 새로고침 : F5
Validate
Project -> Clean
9. war 파일 생성하기
1)해당프로젝트 우클릭 -> Run As
-> Maven Install
-> c:/나만의경로/프로젝트명/target/mymelon-0.0.1-SNAPSHOT.war 생성
Filezilla로 개별적으로 업로드 하거나 ROOT.war로 생성후 배포
※ ROOT.war로 배포가 잘 안되는 경우 war 압축풀기 한 후, 개별적으로 업로드 합니다
2)주의사항
Spring Boot는 기본적으로 톰캣이 내장되어 있으므로
ROOT/WEB-INF/lib 폴더에서 Tomcat관련 .jar 삭제해야 함
① tomcat-embed-core-9.0.68.jar
② tomcat-embed-el-9.0.68.jar
③ tomcat-embed-jasper-9.0.58.jar
'웹개발 교육 > Spring' 카테고리의 다른 글
[73일] Spring (15) - Ajax 아이디 중복 확인(cookie) (0) | 2022.11.09 |
---|---|
[73일] Spring (14) Ajax - 서버에서 응답 받기 (0) | 2022.11.09 |
[70일] spring (12) - mymelon media 수정 (0) | 2022.11.04 |
[70일] spring (11) - mymelon media 삭제 (0) | 2022.11.04 |
[70일] spring (10) - mymelon media 상세보기 (0) | 2022.11.04 |