AWS에서 S3서비스는 스토리지 서버를 제공하는 서비스 입니다. S3는 정적 웹 호스팅을 지원해주기 때문에 이 기능을 사용하여 react 앱을 배포하는 방법입니다. 순서1. S3 버킷생성2. 빌드3. S3에 업로드 1. S3 버킷생성 우선 Amazon S3로 접속한뒤 S3 버킷을 만들기위해 버킷만들기를 눌러주세요 버킷이름은 DNS와 호환할 이름을 정해줍니다. S3에 있는 기존 버킷 이름과 중복 되지 않아야하고, 버킷을 만든 후에 버킷 이름은 변경할 수 없습니다. 자세한 내용은 [S3 버킷 이름 규칙] 을 참고해주세요 버킷이 생성되었다면 버킷에 정적 웹 호스팅을 지정해주어야 합니다. 속성탭에서 '정적 웹 사이트 호스팅'을 선택해주세요 인덱스 문서와 오류 문서에 index.html을 기입한후 저장해줍니다. ..
우선 aws에 EC2인스턴스는 우분투로 생성했습니다. 스프링 프로젝트는 우선 단순하게 만들어서 올려보겠습니다.[컨트롤러] [index 뷰] 인텔리 제이에서 프로젝트 생성을 잘 모르시는분은 [IntelliJ에서 스프링MVC 프로젝트 만들기] 편을 참고하시면 됩니다. 1. awr파일 만들기 웹서버에 올리기위해서는 awr파일이 필요합니다. File -> Project Structue를 실행하고 Artifacts에서 aws:war를 aws로 변경해줍니다. 이유는 war파일이름이 aws:war.war로 되기때문에 원하는 이름으로 수정해야합니다. Build를 하거나 tomcat에서 방금만든 artifact를 설정한후 테스트 구동을 하면 awr파일이 생성 및 업데이트 됩니다. war 생성완료!! EC2에서 만든 우분..
윈도우 사용자들은 리눅스웹서버에 접속하거나 파일을 보내기위해선 PuTTY나 FileZilla와 같은 프로그램을 사용해야한다. 만약 IntelliJ를 사용하고있다면 간편하게 IntelliJ에서 바로 웹서버 터미널을 사용할 수 있다. 윈도우 사용자가 아니더라도 터미널과 인털리제이를 왔다갔다하는 번거로움(?)을 줄일 수 있다. 1. Tools -> Deployment -> Browse Remote Host 실행 2. 인텔리제이 왼쪽에 Remote Host가 열리면 접속설정을 추가하기 위해 ...버튼을 누른다. 3. +버튼을 눌러 이름을 지정해준후 Type은 SFTP로 선택해준다. 4.호스트에 아이피를 적어준 후 리눅스서버의 계정이름과 EC2인스턴스 생성시 받았던 암호키파일을 선택한 후 호스트아이피 왼쪽에있는 ..
log4jdbc-log4j2 메이븐추가도했고 log4jdbc-log4j2.properties도 만들어주고 driverClassName과 url도 변경해주었는데 오류가난다... 로그는 다음과 같다java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)at org.springframework.test.context.support.DefaultTestContext.getApplicationConte..
이제 막 IntelliJ를 사용하기 시작했는데 이클립스와 너무달라서 스프링 프로젝트조차 만들기가 힘들다ㅠㅠsts에서 Spring MVC 프로젝트를 생성하면 기본구조가 설정되었는데 IntelliJ는 프로젝트 생성에 Spring MVC가없다. (프로젝트 생성부터가 맨붕이다)인터넷에 있는 다른 예제들보면 Add Framework에서 Spring MVC를 적용하던데 나는 Spring 목록에서 정확히 Spring MVC만 없다.. 이유를 모르겠다. 다른방법으로 구조는 만들어보아도 404에러만 뜬다... 하루종일 프로젝트 생성 삭제만 반복하면서 터득한 방법을 기록하고자 한다. 순서프로젝트생성설정( 디펜던시추가 -> web.xml생성 -> root-context와 servlet-context생성 )테스트를위해 컨트롤..
쓰레드란?OS에서 크롬을이용해 인터넷을 하면서 동시에 한글문서를 작성하기도하고 동영상을 시청하기도 한다. 동시에 여러 프로그램이 실행이되도 CPU는 시간을 분할하여 프로세스마다 우선권을 주어 작업을 처리하기 때문이다. 이런 운영체제에서 실행되는 하나의 프로그램 단위를 프로세스 라고한다. 쓰레드는 프로세스내에서 실행되는 세부 작업단위이다. 프로세스가 하나 이상의 쓰레드를 사용한다면 멀티 쓰레드라고 부르게 된다. 프로세스 = 운영체제에서 실행되는 하나의 프로그램 단위이다 (ex. 크롬, 한글, 엑셀)쓰레드 = 프로세스내에서 실행되는 세부 작업단위 쓰레드 생성방법Thread를 만드는 방법은 Thread 클래스를 상속받는 방법과 Runnable인터페이스를 구현하는 방법이 있다.public class Thread..
예외란자바를 사용하다보면 null값을 갖는 참보변수를 사용하는 경우나 배열에서 인덱스 범위를 초과해 사용한다면 예외가 발생하면서 어플리케이션이 종료가 된다. 발생하는 예외에 대응하고 어플리케이션이 종료되지않게 하기위해서는 예외처리를 해줘야한다. 예외 처리 코드(try-catch-finally)프로그램에서 예외가 발생헀을 경우 프로그램의 갑작스러운 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 코드를 예외 처리 코드라고 한다. 예외 처리 코드는 try-catch-finally문을 이용한다. try{ 예외가 발생할 가능성이있는 명령어; }catch(예외타입1 변수명){ 예외타입1 발생시 처리 할 명령어들; }catch(예외타입2 변수명){ 예외타입2 발생시 처리 할 명령어들; }finally{ 예외 ..
인터페이스(interface)는 객체의 사용 방법을 정의한 타입니다. 클래스와 유사하지만 메소드의 구현부가 없이 구현할 클래스의 뼈대를 만들어준다. 인터페이스에서 뼈대 (객체가 가져야할 특징,특성)를 잡아주면 클래스는 인터페이스를 implements 하여 살을 붙인다. 인터페이스가 뼈대 만 잡아주기때문에 메소드의 선언만할 수 있고 구현할 수 없다. 또한 필드를 선언할 수 없지만 상수 필드는 선언이 가능하다. 이러한 특징떄문에 인터페이스는 객체화 할 수없다 (생성자도 없다) 인터페이스를 사용하는방법은 구현 클래스를 만들어 사용하는 방법 뿐이다. 선언인터페이스 선언은 class키워드 대신 interface 키워드를 사용한다.interface 인터페이스명 { //상수 타입 상수명 = 값; //추상 메소드 타입..
추상 클래스(Abstract Class)는 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 말한다. 추상클래스는 말그대로 공통되는 특성을 추상적으로 만들었기 때문에 클래스 자체로 역할을 하지못한다. 즉 new 연산자를 이용하여 객체를 만들수 없다. 추상클래스는 실제 클래스들을 만들기 위한 부모클래스로만 사용할 수 있다. 사용은 다음과같이 abstract 키워드를 사용한다public abstract class 클래스이름 { //필드 //생성자 //메소드 //추상메소드 } 추상 클래스는 추상 메소드를 선언 할 수 있다. 추상메소드는 { }중괄호 없이 리턴타입, 메소드명, 매개변수를 포함하여 오직 선언만 해놓은 메소드를 말한다. 추상메소드도 abstract 키워드를 사용한다.public abstract 리..
다형성은 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말한다. 코드 측면에서 보면 다형성은 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다. 자바에서는 부모 타입에 모든 자식객체가 대입될 수 있다. Parent라는 클래스를 상속받은 Boy와 Girl라는 클래스가 있다고하면 다음과같이 부모클래스타입에 자식객체를 대입할 수있다.Parent parant1 = new Boy(); //자식타입은 부모타입으로 자동 타입 변환이 가능하다. Parent parent2 = new Girl();이런 방식을 왜 사용할까?다형성을 구현 하는 방법이기 때문이다. 다형성은 위에 설명한것과 같이 동일한 타입을 사용하지만 다양한 결과가 나오는 성질을 말한다.(하나의 Parent타입..