스프링부트에서는 데이터를 전달 받을 때 @PathVariable 방식과 @RequestParam 방식이 있습니다.둘다 URL에 매개변수를 넣어서 받는 방식입니다.그러나 두가지 방식에는 약간의 차이가 있습니다. 1. @PathVariable@PathVariable방법은 슬래쉬안에 매개변수를 넣는 방법입니다. 이 방법은 key값이 필요하지 않습니다.예컨대 data라는 변수에 "test"를 담아서 전송하고 싶다면 http://127.0.0.1:8080/main/list/test로 전송하면 됩니다. 그리고 서버에서는 @GetMapping("/main/list/{data}")로 받으면 됩니다. 여기서 data라는 변수를 사용하지 않아도 되지만 @PathVariable에는 {}안의 변수와 동일한 변수를 사용해야합니..
자바에서 ObjectMapper 클래스는 타입을 문자열로 변환하거나 문자열을 타입으로 변환시켜주는 클래스입니다.이를 직렬화, 역직렬화라고합니다.스프링 또는 스프링부트에서 API방식으로 코드를 작성하면 이러한 직렬화 방식이 필요합니다. 왜냐하면 자바의 기본타입에는 자바스크립트의 객체형태나 파이썬의 딕셔너리 형태인 json타입이 존재하지 않기 때문입니다. 따라서 자바에서는 {"key":value} 형태로 데이터를 담은 다음 문자열로 바꿔서 전송합니다. 즉 전송은 "{"key":value}" 로 보낸다고 생각하시면 됩니다. 물론 "{"key":value}" 형태로 직접 전송하는 방법도 있습니다. 그러나 이러한 방법은 코드가 길어지거나 객체를 활용할때는 불편한 부분이 있습니다.1. 직렬화첫번째 방법은 문자열로..
1. 스케줄링의 의미 스케줄링이란 작업이 특정 시간 또는 주기에 따라 자동으로 실행되도록 예약하는 기술입니다. 이를 통해 애플리케이션은 정기적인 작업이나 배치 프로세스를 관리하거나, 특정 시간에 이벤트를 자동으로 트리거할 수 있습니다. 2. 애노테이션 입력하기프로젝트application 자바파일에 @EnableScheduling을 추가합니다. 스케줄링을 사용할 자바파일에 @Component을 추가합니다. 사용할 메서드에 @Scheduled을 추가합니다. 3. 속성1) fixedDelay fixedDelay 속성은 밀리초 단위의 값을 받으며, 이전 작업이 종료된 후 지정된 시간만큼 딜레이된 후 다음 작업이 실행됩니다. 예를 들어, @Scheduled(fixedDelay = 5000)으로 설정하면 현재 작업..
01. Thymeleaf와 jsp의 차이점 Thymeleaf는 HTML, XML, JavaScript, CSS 및 일반 텍스트를 처리 할 수 있는 웹 및 독립형 환경에서 사용할 수 있는 Java 템플릿 엔진입니다. Thymeleaf는 html파일을 가져와서 파싱해서 분석후 정해진 위치에 데이터를 치환해서 웹 페이지를 생성합니다. JSP는 서블릿으로 변환되어 실행이 되어집니다.JSP 내에서 자바 코드를 사용할 수도 있습니다(사용하지 못하도록 설정할 수 있습니다). Thymeleaf는 자바코드를 사용할 수 없고, jsp에서 처럼 커스텀 태그와 같은 기능도 없습니다. 02. 장단점 JSP는 사실 서블릿이다보니 뭐든지 할 수 있다는게 장점이자 단점이 되겠습니다.MVC 구조가 주로 사용되면서 JSP는 뷰만 담당하..
1. 인텔리제이 깃허브 연결단축키(Ctrl + Shift + A)를 눌러 Action창을 실행합니다. share project on github를 검색합니다. 처음에 로그인화면이 나타날수도있습니다. 그러면 본인의 깃허브 아이디와 비밀번호를 입력하여 로그인합니다. 깃허브 저장소 이름입니다. 일반적으로는 프로젝트이름을 깃허브저장소와 동일하게 사용합니다. share를 클릭합니다. 커밋메시지를 입력하고 add를 클릭합니다. 본인의 깃허브 계정으로 들어가면 추가된것을 확인할 수 있습니다. 2.데이터베이스(mysql) 연결&JPA연동1)mysql연동 mysql에서 데이터베이스를 만듭니다. 저는 springboot라는 데이터베이스를 생성했습니다. 우측 Database를 클릭하면 데이터베이스를 연결할 수 있는 화면..
저는 타임리프(thymeleaf)를 사용하기 위해 인텔리제이 얼티밋 버전을 이용하였습니다. 커뮤니티 버전을 사용하시는 분들은 먼저 스프링 이니셜라이저 사이트에 접속합니다. https://start.spring.io/ 스프링 3.x 이상부터는 자바 17버전이상에서만 사용할 수 있으므로 버전을 낮춰줘야 합니다. add dependencies를 클릭하여 필요한 내용을 추가해줍니다. 그리고 Generate를 클릭하여 파일을 다운받습니다. 편한 위치에 압축을 풀고 인텔리제이를 실행하여 import나 open을 클릭하여 다운받은 파일의 build.gradle을 선택하여 open하면 됩니다. 얼티밋 버전을 사용하시는 분은 new project를 클릭하여 스프링 이니셜라이즈를 클릭하고 동일하게 설정하시면 됩니..
좋은 객체지향 설계를 위해 사용되는 다섯 가지 원칙을 SOLID라고 합니다. SOLID는 각 원칙의 첫 글자를 따서 만들어진 약어입니다. 이 원칙들은 소프트웨어의 유지보수성, 재사용성, 확장성을 향상시키는 데 도움이 되는 지침을 제공합니다.1. 단일 책임 원칙 (Single Responsibility Principle - SRP)하나의 클래스는 하나의 책임만 가져야 합니다. 즉, 클래스는 변경의 이유가 하나여야 합니다. 이는 클래스가 특정한 기능이나 역할에 집중되도록 하여 코드의 응집성을 높이고, 변경 사항이 발생할 때 해당 클래스만 수정하면 되도록 합니다. 즉 변경사항이 발생할 때 파급효과가 적다면 단일책임원칙을 잘 따른것으로 볼 수 있습니다. 아래는 예시코드입니다. SRP 위반 예시) class R..
프로젝트 시작할때 전체 복사해서 붙여넣으면 된다. root-context.xml web.xml contextConfigLocation /WEB-INF/spring/root-context.xml org.springframework.web.context.ContextLoaderListener appServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring/appServlet/servlet-context.xml 1 appServlet / encoding org.springframewo..
스프링에서 첨부파일을 보낼때는 servlet-context를 이용한다.servlet-context.xml//!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->//!-- Enables the Spring MVC @Controller programming model -->// //mapping의 주소가 첨부파일의 경로이다.//context:component-scan base-package="org.zerock.controller" /> SimpleController.javapackage org.zerock.controller;import org.slf4j.Logger;import org.slf4..
자바에서 Scanner 클래스는 입력 받을 직접 입력을 받기 위한 클래스입니다.이 클래스는 데이터를 직접 입력받아 테스트를 하고자할 때 사용할 수 있습니다.1. 문자열 타입import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str1 = sc.next(); // next는 스페이스를 비롯한 공백 단위로 끊어서 문자열을 받음 String str2 = sc.next(); System.out.println("str1: " + str1); System.out.print..