서버 16

[NodeJS] ec2에서 서버 배포하기

1. 파일 올리는 방법 git clone을 하거나 fileZila를 이용해도 된다. node.modules는 빼고 올리기 2. 사전에 설치 sudo apt-get update sudo apt-get install nodejs node --version sudo apt-get install npm npm --version (필요하면) sudo apt-get install git git --version 3. 프로젝트별 필요한 라이브러리 설치 npm i 그리고 나서 node sever 등으로 서버 실행하면 된다. **오류가 발생할 경우 node 버전 문제일 수도 있다. node 14.x버전 설치방법 curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash..

서버/NodeJS 2022.03.03

#CORS 설정하기

#SOP(Same-Origin Policy) 같은 Origin에만 요청을 보낼 수 있게 제한하는 보안 정책 Origin의 구성 URI Schema(ex. http, https) Hostname(ex. localhost, naver.com) Port(ex. 80, 8080) 이 중에 하나라도 구성이 다르면 SOP 정책에 걸림! #CORS(Cross-Origin Resource Sharing) 서로 다른 Origin끼리 요청을 주고 받을 수 있게 정해둔 표준 1. Annotation 이용하기 origins, methods, maxAge, allowedHeaders를 각각 지정할 수 있다. 메소드에도 지정가능. @GetMapping("/api/get") @CrossOrigin(origins = "*", all..

서버/Spring boot 2022.02.12

#에러처리

예측이 가능한 에러를 exception처리를 하고 나서 HTTP status와 errorMessage를 보내줄 수 있다. 예를 들어, 클라이언트에서 입력값과 관련된 에러는 500 Internel Server Error가 아니라 400 Bad Request + 에러메세지를 보내서 어떤 부분에서 에러가 난 것인지 알려줄 수 있다. 프론트에서는 이 메세지를 활용해 팝업 등으로 보여줄 수 있다. 스프링에서 제공하는 ResponseEntity를 사용하면 HTTP status Code, HTTP headers, HTTP body를 선언할 수 있다. 그리고 이 클래스를 이용하여 원하는 내용을 클라이언트로 보낼 수 있다. package com.sparta.week03project.exception; import lom..

서버/Spring boot 2022.02.07

#AOP

#AOP란? 각 API별 수행해야 할 비즈니스 로직인 핵심기능 외에 부가기능이 있을 수 있다(로그 기록, API 수행시간 저장 등) AOP(Aspect Oriented Programming)을 통해 부가기능을 모듈화 할 수 있다. 스프링에서 제공하는 AOP를 사용해 부가기능을 별도로 설계, 구현할 수 있다. #스프링 AOP 부가기능을 제공하는 annotation을 사용하면 포인트컷에 맞춰 핵심기능을 구현하기 전/후에 부가기능이 실행된다. DispatcherServlet에서는 이전과 동일하게 controller로 요청을 보내지만 중간에 AOP 프록시 객체가 중간에 삽입되어 부가기능이 실행된다. #스프링 AOP 어노테이션 @Aspect : 스프링 빈(Bean) 클래스에만 적용이 가능하다. @Aspect @C..

서버/Spring boot 2022.02.07

#ORM, JPA, Spring data JPA, SQL

#SQL(Structured Query Language) 관계형 데이터베이스 관리시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었다. 데이터 정의 언어(DDL: Data Definition Language) 데이터 조작 언어(DML : Data Manipulation Language) 데이터 제어 언어(DCL: Data Control Language) #ORM 객체(Object)라는 개념을 구현한 클래스와 관계형(Relational) 데이터베이스에서 쓰이는 데이터인 테이블을 자동으로 연결(Mapping)하는 것을 의미한다. 클래스와 테이블은 서로 호환가능성을 두고 만들어..

서버/Spring boot 2022.02.05

#Spring security

#설정 build.gradle // 스프링 시큐리티 implementation 'org.springframework.boot:spring-boot-starter-security'​ 스프링 시큐리티 활성화 : 기존의 configure을 override해서 원하는 기능으로 구현 import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org...

서버/Spring boot 2022.01.28

#DI, IoC, Bean

#DI 강한 결합이란? 다음과 같이 각각 새로운(new) 생성자를 만들어 구현하는 것. 문제점 : 일부 변경시 모든 코드를 다 수정해주어야 함 → 느슨한 결합을 지향 느슨한 결합 새로운 생성자를 만드는 것이 아니라 이미 생성된 객체를 가져다 씀! Repository에 객체 repository1를 만들고 Service는 이 객체를, 그리고 Controller는 이 service객체를 가져다 사용한다. Class Service1 { private final Repository1 repitory1; // repository1 객체 사용 public Service1(Repository1 repository1) { this.repository1 = new Repository1(); this.repository1 ..

서버/Spring boot 2022.01.28

#Spring MVC

MVC? MVC(Model - View - Controller) 디자인 패턴을 말한다. Controller의 장점 HTTP request, response 처리를 위해 매번 작성해 줘야하는 중복코드들을 생략할 수 있다. API마다 파일을 만들 필요가 없고, 유사한 성격의 API를 하나의 Controller로 관리할 수 있다. Controller 내 메소드 명도 자유롭게 사용할 수 있다(Handler mapping에서 API - Controller 매칭) 서버에서 HTML을 내려주는 경우 1. 정적(static) 웹페이지 Controller는 요청을 Model로 받아서 처리하고, Client에게 View(정적 웹페이지, HTML)을 내려준다. 2. 동적(dynamic) 웹페이지 Controller는 요청을..

서버/Spring boot 2022.01.26

#Model과 ModelAndView

게시판을 만들면서 Model 객체를 사용했었다. controller에서 다음과 같이 Model 객체를 사용해면 addAtrribute를 사용하여 데이터를 저장하고 이 데이터를 view로 보내준다. view는 thymeleaf를 사용해서 html 내의 원하는 곳에 데이터를 뿌려준다. //게시글 상세보기 @GetMapping("/post/{id}") public String detail(@PathVariable("id") Long id, Model model) { BoardDto boardDto = boardService.getBoard(id); model.addAttribute("boardDto", boardDto); return "board/detail"; } 처음에는 thymeleaf를 쓰는 거랑 Mo..

서버/Spring boot 2022.01.26