반응형

# 스프링 부트

## 파일 생성

  • 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
반응형

+ Recent posts