본문 바로가기

웹 개발

(97)
Spring Boot) H2 데이터베이스 적재 문제 해결 / error creating bean with name 'datasourcescriptdatabaseinitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/datasourceinitializationconfiguration.class] /src/main/resource 폴더 하위에 schema.sql 파일 : 테이블 생성 sql 스크립트 작성 data.sql 파일 : 테이블에 데이터 insert 하는 스크립트 작성 spring.h2.console.enabled=true spring.h2.console.path=/h2-console spring.datasource.url=jdbc:h2:tp://localhost/(...) spring.datasource.username=username spring.datasource.password= spring.h2.console.settings.trace=false spring.h2.console.settings.web-allow-others=true spring.datasource.initializ..
Spring Boot) vscode에서 gradle로 jar 파일 빌드해서 실행시키기 vscode marketplace에서 gradle을 검색해서 다음과 같은 플러그인을 설치하면 왼쪽 사이드바에 코끼리 아이콘이 생깁니다. 코끼리 아이콘을 누르면 GRADLE 툴바가 왼쪽에 뜨는데 여기서 build/bootJar을 클릭하면 자동으로 빌드되어 프로젝트 파일 build/lib에 jar 파일이 생성됩니다. 생성된 jar 파일을 실행시킬 서버에 옮겨두고 (optional) jar 파일이 있는 폴더에서 터미널을 켜서 아래와 같은 명령어로 실행시키면 됩니다. java -jar
Spring Boot) 현재 페이지의 URL주소 가져오기 import javax.servlet.http.HttpServletRequest; ....HttpServletRequest request 선언 필요 아래와 같은 주소가 있을 경우 : http://localhost:8080/template/category1 //http://localhost:8080/template/index.jsp request.getRequestURI(); // 프로젝트 경로부터 파일까지의 경로 값 ex) /template/index.jsp request.getContextPath(); // 프로젝트의 경로값만 가져옴 ex) /template request.getRequestURL(); // 전체 경로 가져옴 ex)http://localhost:8080/template/index.jsp..
[Spring] 의존성 주입 ,스프링 컨테이너 (IoC 컨테이너) 개념 기초 1. 의존성 주입 Dependency Injection IoC (Inversion of Control) 이라고도 함 어떤 객체가 사용하는 의존 객체를 직접 만드는 것이 아니라 주입 받아 사용하는 방법 1.1 예시 1.1.1 의존성 주입 없이 직접 사용할 객체를 만드는 예시 public class BookService { private BookRepository bookRepository; //constructor public BookService() { bookRepository = new BookRepository(); } } 1.1.2 사용할 객체를 주입 받는 예시 public class BookService private BookRespository bookRepository; public void..
Spring Boot) 5. REST API 서버 만들기 + REST 관련 요소 1. REST Representational State Transfer 분산 네트워크 프로그래밍의 아키텍처 스타일 API : 데이터와 기능의 집합 , 이를 통해 데이터와 기능을 사용자들이 사용할 수 있게 함 REST API : API 구조가 REST 요건에 부합하는 경우 RESTful하다고 말함 1.1 REST의 특징 클라이언트 서버 클라이언트 서버가 각각 독립적 상태 없음 클라이언트 서버간 통신시 상태 없음, 서버가 클라이언트 상태 기억할 필요 없음 레이어드 아키텍처 서브 클라이언트 사이에 다 계층 형태로 레이아 추가, 수정, 제거 가능 캐시 캐시 있을 수도 있고 없을수도 있는데 있다면 클라이언트가 응답 재사용 할 수 있음. 서버 부하 낮춰서 성능 개선 코드 온 디맨스 요청이 오면 코드를 줌 특정 시점..
Spring Boot) 4. 스프링 부트 웹 개발 1. 스프링 부트에 대한 이해 스프링의 복잡한 설정 웹 개발을 목적으로 하는 프레임워크로 사용하기 위해 설정을 간소화한 스프링 부트 등장 스프링 부트가 내부적으로 디스패티 서블릿, 뷰 리졸버와 같은 빈을 로드해주어 컨트롤러와 메인 메소드 실행만으로 웹에서 접근 가능 1.1 스프링 부트 프로젝트 레이아웃 자바 프로젝트 결과 파일 포맷 JAR : 로컬에서 실행되는 파일 WAR : 웹 애플리케이션 컨테이너에서 실행되는 파일 웹 자원 위치 규약 정적 html 파일 src/main/resources/static src/main/public favicon src/main/resources/favicon.ico template (tymeleaf html) src/main/reources/templates spring..
Spring boot) 3. 스프링 프레임워크 1. 빈 + 컨테이너 웹 프로젝트 = 대형 화물선 컨테이너 = 화물 컨테이너 자바 빈 = 화물 EJB (Enterprise Java Beans): 서버측 컴포넌트 모델 / 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션, 주로 업무 로직을 처리하는 역할 POJO (Plain Old Java Object): 일반 자바 클래스 Bean : 자바 클래스 2. IoC 패턴 활용 Inversion of Control : 제어의 역전 원칙 1. 하이레벨 모듈은 로우레벨 모듈에 의존하면 안 되고 모두 인터페이스에 의존해야 한다. 원칙 2. 추상화는 세부사항에 의존해서는 안된다. = 세부사항이 추상화에 의존해야 한다. 인터페이스를 활용해서 모듈간 결합도를 낮추는 것이 목적 Dedencency Injection..
Spring Boot) 2. 서블릿 Servlet 1. 서블릿 시작하기 1.1 서블릿이란 JVM 기반에서 웹 개발을 위한 명세, API 서블릿 실행을 위해 웹 애플리케이션 컨테이너가 필요 Java EE에 포함된 스펙 중 하나 자바에서 HTTP 요청 및 응답을 처리하기 위한 내용 담고 있음 1.2 서블릿 설정 build.gradle 파일에 JAR 파일 추가해서 사용 example buildscript{ repositories { jcenter() } dependencies { classpath 'org.akhikhl.gretty:gretty:+' } } apply plugin: 'java' apply plugin: 'war' apply plugin: 'org.akhikhl.gretty' apply plugin: 'eclipse' apply plugin: ..