반응형
# 스프링 부트
## 파일 생성
- sts 실행 > new > spring starter project 클릭
- Maven, Java version 8, War파일, 언어는 java 선택 후 next
- lombok, Spring Boot DevTools, spring web, MyBatis Framework, MySQL Driver 선택 후 finish 하면 Maven이 해당 파일들을 c드라이브 내 사용자 > .m2 > repository 경로에 설치해준다. ( 초기에는 설치하는데 시간이 오래 걸리는데, 이후 새 프로젝트 실행 시 기존에 받아진것으로 이용하기 때문에 시간이 많이 걸리지 않는다. 단, 해당 폴더 내에서 삭제 된 경우 오래 걸린다. )
- jar 파일 : 톰캣 없이 실행될 수 있는 구조
- war 파일 : 톰캣 있어야 실행될 수 있는 구조
- 스프링 프로젝트 파일 실행의 경우 Alt + Shift + X 후 B 입력하여 Runt Spring Boot App으로 실행
## 각종 자료형 별 출력
package com.sbs.lhh.at.controller;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Controller
public class HomeController {
@RequestMapping("/home/boolean")
@ResponseBody
public boolean showBoolean() {
return true;
}
@RequestMapping("/home/char")
@ResponseBody
public char showChar() {
return 'a';
}
@RequestMapping("/home/byte")
@ResponseBody
public byte showByte() {
return 127;
}
@RequestMapping("/home/short")
@ResponseBody
public short showShort() {
return Short.MAX_VALUE;
}
@RequestMapping("/home/int")
@ResponseBody
public int showInt() {
return Integer.MAX_VALUE;
}
@RequestMapping("/home/long")
@ResponseBody
public long showLong() {
return Long.MAX_VALUE;
}
@RequestMapping("/home/float")
@ResponseBody
public float showFloat() {
return 3.14f;
}
@RequestMapping("/home/double")
@ResponseBody
public double showDouble() {
return Math.PI;
}
@RequestMapping("/home/intArr")
@ResponseBody
public int showintArr() {
int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
return arr[0];
}
@RequestMapping("/home/intList")
@ResponseBody
public List<Integer> showIntList() {
List<Integer> list = new ArrayList<>();
list.add(10);
return list;
}
@RequestMapping("/home/article")
@ResponseBody
public Article showArticle() {
return new Article(1, "2020-10-10", "hi", "hello");
}
@RequestMapping("/home/articleList")
@ResponseBody
public List<Article> showArray() {
List<Article> list = new ArrayList<>();
list.add(new Article(1, "2020-11-11", "aaa", "aaaa"));
list.add(new Article(2, "2020-12-12", "bbb", "bbbb"));
return list;
}
// Map 의 경우 순서 기억하지 못함
@RequestMapping("/home/map")
@ResponseBody
public Map<String, Object> showMap() {
Map<String, Object> map = new LinkedHashMap<>();
map.put("철수나이", 11);
map.put("영희나이", 12);
map.put("영수나이", 15);
return map;
}
}
@NoArgsConstructor // 인자 없는 생성자 만들어 줌
@AllArgsConstructor // 인자 있는 생성자 만들어 줌
@Data // getter, setter, toString 만들어줌
class Article {
public int id;
public String regDate;
public String title;
public String body;
}
## 스프링 부트 JSP 연결
### jsp 의존성 추가
- https://mvnrepository.com/에서 검색
- pom.xml 파일 내 dependencies(의존성) 내에 아래 입력 후 저장하면 자동으로 jsp 엔진을 받아준다.
- 이때 주의할 점! 오타..
- 필요한 의존성은 검색해서 붙여넣기.
- 의존성 삽입 후 확인은 Maven Dependencies내에서 확인 가능하다.
<!-- JSP 엔진 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
- 설치 후 application.yml에 아래 코드 입력하여 설정해준다.
spring:
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
### jsp 파일 생성
- 패키지 중간에 src > main 우클릭 후 폴더 생성 WEB-INF/jsp/home 입력하여 폴더 생성(입력할 경우 폴더 3개 생김)
- 생성된 home 폴더 우클릭 후 new > other > jsp 클릭 후 이름은 main.jsp로 생성
### 연결확인
- 재시작 후 @RequestMapping("/home/main")에 적힌 주소로 들어가서 잘 연결되었는지 확인.
### 패키지 경로
### 각 파일 별 코드
- HomeController.java
package com.sbs.lhh.at.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HomeController {
@RequestMapping("/home/main")
public String showMain() {
return "home/main";
}
}
- application.yml : 우클릭 후 Convert .properties to .yaml 클릭하여 yml로 변경
server:
port: 8051
spring:
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
- pom.xml
<?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.3.2.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.sbs.lhh</groupId>
<artifactId>at</artifactId>
<version>1</version>
<packaging>war</packaging>
<name>at</name>
<description>at</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- JSP 엔진 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</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>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>메인</title>
</head>
<body>
<h1>메인 페이지</h1>
</body>
</html>
## Lombok, 명령어
- @RequestMapping : 사이트 주소 설정 ( 예) @RequestMapping("/article/list") )
- @ResponseBody : return 값을 브라우저에 출력
- @NoArgsConstructor : 인자 없는 생성자 생성
- @AllArgsConstructor : 인자 있는 생성자 생성
- @Data : getter, setter, toString 생성
- @Autowired : 자동으로 연결되도록 설정, 연결되는 쪽에는 @Service 혹은 @Component 입력하여 사용
- @Controller : Controller 임을 표시, import 진행 시 해당 패키지 생성
Autowised 사용 예시(ArticleController 와 ArticleService 연결)
1. ArticleController 파일
package com.sbs.lhh.at.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.sbs.lhh.at.articleService.ArticleService;
@Controller
public class ArticleController {
@Autowired
private ArticleService articleService;
@RequestMapping("/article/list")
public String showList() {
int count = articleService.getCount();
System.out.println(count);
return "article/list";
}
}
2. ArticleService 파일
package com.sbs.lhh.at.articleService;
import org.springframework.stereotype.Service;
// Service == Componet 둘다 사용가능
@Service
public class ArticleService {
public int getCount() {
return 5;
}
}
## 스프링 부트 명령어 관련
- 스프링 부트에서는 HttpServletRequest req 바로 사용가능, 이것보다 진보된 게 Model model
반응형
'프로그래밍 > 자바, JDBC' 카테고리의 다른 글
스프링 부트2 (0) | 2020.08.03 |
---|---|
자바 현재 시간, 날짜 구하기 (0) | 2020.07.31 |
배경 이미지 넣기, 배경 이미지 크기 조절하기(background: url) (0) | 2020.07.27 |
자바 게시판 페이징 처리 (0) | 2020.07.26 |
JSTL (0) | 2020.07.24 |