전체 글

하면 하는거지 모! 또 다시 하면되지 모! 그냥 하는거지 모!
요청사항 : 운영에서 관리자 페이지 접속 시 접속 불가하고 해당 에러메세지 출력 매일 요청사항을 받으며 느끼는 거지만 같은 에러인 것 같으면서도 달라서 오 나이거 아는데 하다가도 다시 구글링함 502 Bad Gateway를 주로 보다가 오늘은 proxy error를 보았다 일단 해당 서버와 웹서버 확인 결과 정상으로 작동하고 있어서 구글링 시작함 아파치 관련 문제라는 질문과 답변을 보았는데, 아파치 설정에서 KeepAlive를 ON ⇒ OFF 설정을 바꾸면 해결이 된다고 한다라는 답변과 어떤 분은 어플리케이션 재기동 했더니 정상 동작한다는 답변을 찾음 일단 담당자에게 컨펌받고 어플리케이션 재기동함. 결과는? 정상동작 아파치 설정이 문제였다면 기존에도 문제가 되었을텐데, 나에게 들어온 요청으로는 처음이었음..
Goal : 캡슐화의 의도 & 목적을 이해하고 코드에서는 어떻게 구현되는지 알아본다 Encapsulation 캡슐화란 ? 객체 지향 프로그래밍 (OOP)에서 캡슐화는 데이터를 해당 데이터에 대해 작동하는 메서드와 번들로 묶거나 일부 개체 구성 요소에 대한 직접 액세스를 제한하는 것을 말합니다. 캡슐화는 클래스 내부의 구조화된 데이터 개체의 값이나 상태를 숨기는 데 사용되며 숨겨진 구현 세부 정보를 노출하거나 메서드에서 유지 관리하는 상태 불변성을 위반할 수 있는 방식으로 클라이언트가 직접 액세스하는 것을 방지합니다. public class MotorBike { //state int speed; //behaviour void start(){ System.out.println("MotorBike.start"..
· Spring/mvc
** 톰캣서버를 설치하고 서블릿 코드를 클래스 파일로 빌드해서 올리는 과정은 번거로우니 내장 톰캣이 있는 스프링부트 환경에서 진행 1. HelloServlet.java 생성 HttpServlet을 상속을 받고 @WebServlet 컴포넌트를 사용하여 name과 urlPatterns를 지정해준다. ctrl+o를 해서 protected service 메서드를 만든다. 이 서블릿이 호출이되면 서비스 메서드가 호출이 되도록 !!! 그리고 스프링 실행하자마자 에러 등장 ㅋㅋㅋㅋㅋㅋㅋ 아래는 에러 문구 Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: 내가 작성한 코드는 없었고 컴포넌트, 메서드는..
· Spring/mvc
스프링프로젝트 쉽게 생성해주는 https://start.spring.io/ 로 접속하여 아래와 같이 세팅하고 Generate 클릭 ** Jsp를 사용할 것이기 때문에 war로 패키징을 선택 보통 jar 사용시에는 내장 톰캣(스프링부트) = 스프링부트가 빌드된 결과에 톰캣 서버를 내장해서 바로할 때 사용한다. war도 동일하게 위와 같이 되지만, 톰캣 서버를 별도로 설치하고 별도로 war에 빌드해서 넣을 때 사용함!!! 2. 생성된 zip파일을 사용할 폴더에 넣고 압축해제 3. 인텔리제이에서 오픈선택 후 servlet -> build.gradle 오픈! ** 프로젝트가 오픈이 되면 꼭 build.gradle 파일에서 패키징이 war로 되어있는지 확인할 것! plugins { id 'org.springfra..
· Spring/mvc
정적리소스 고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 제공 주로 웹 브라우저 HTML 페이지 동적으로 필요한 HTML 파일을 생성해서 전달 웹브라우저 : HTML 해석 -> 나의 정보(동적인 정보)가 담긴 HTML을 내려줌 HTTP API HTML이 아니라 데이터를 전달 주로 JSON 형식 사용 (xml 일 수도 있음) 다양한 시스템에서 호출 데이터만 주고 받음. UI 필요 시 클라이언트 별도 처리 앱 클라이언트 to 서버, 웹 클라이언트 to 서버, 서버 to 서버 (ex. 사용자 서버 -> 계좌 검증 서버) CSR (Client Side Rendering) 서버에서 index.html 파일을 클라이언트에 보내주면 일반적인 csr프레임워크 (리엑트, 뷰, 앵귤러)는 body안의 id="..
요청사항은 마지막에 전자서명하고 계좌신청이 제대로 안된다는 부분이었는데, 잘 되던 전자서명이 안 될리는 없고 에러찍어보니 파일무해화 서버 호출하고 그 쪽에서 결과값은 제대로 받았는데 자바 IOException이 나고 있었다! 스프링부트에서 파일 업로드 임시경로를 찾지못해서 생기는 에러였음 구글링 해보니, 스프링부트에서 파일업로드를 할 때 임시로 경로를 만들어서 하는데, centos에서 주기적으로 사용하지 않는 임시폴더를 삭제한다고한다. 그것도 그럴게 프로젝트 서비스 특성상 사업자등록증을 검증해야되서 사업자신청일 경우만 파일을 던지고 계좌를 신청하는데 최근 신청 구분은 거의 개인 고객이었고 사업자구분은 드물었다. 그래서 centos에서 사용하지 않는 임시폴더구나 하고 삭제한듯. 해결방안 1. 스프링부트 재..
· Spring/mvc
웹 브라우저(클라이언트)에서 서버에 요청을 하면, tcp/ip 커넥션 연결이 되고 서블릿을 호출해주고 was서버는 응답을 해준다. 그런데, 서블릿을 호출하는 주체는 누구인가? 바로 바로 쓰레드...!! 쓰레드란? 어플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드 자바 메인 메서드를 처음 실행시 main이라는 쓰레드가 실행 쓰레드가 없다면 자바 어플리케이션 실행이 불가능 쓰레드는 한번에 하나의 코드 라인만 실행 동시 처리가 필요하면 쓰레드를 추가로 생성 단일 요청 - 쓰레드 하나 사용시 단일 요청시에는 큰 문제는 없어보인다. 다중 요청 - 쓰레드 하나 사용시 문제는 다중 요청! 쓰레드를 하나만 사용한다고 했을 때 request1이 처리되는 동안 request2는 대기중인 상태로 그마저도 처리가 ..
· Spring/mvc
Goal 서블릿에 대해 알아보고 이해한다 서블릿 컨테이너에 대해 알아보고 이해한다 서블릿이란 ? [사전적 정의] 자바 서블릿(Java Servlet)은 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다. JSP와 비슷하지만 JSP는 HTML 문서 안에 Java코드를 포함하는 반면, 서블릿은 자바코드안에 HTML을 포함하고 있다는 점에서 차이점이 있다. Servlet JSP 자바 코드 안에 HTML 포함 HTML 문서안에 Java코드 포함 [예시] 시스템 - HTML Form를 통하여 데이터 전송(post)을 한다고 하자 우리가 원하는 것 (비지니스 로직) - 회..
· Spring/mvc
Goal 웹 서버 (web server)에 대해 알아본다 웹 어플리케이션 서버(web application server)에 대해 알아본다 웹서버와 was를 분리해야 하는 이유 Client > Web Server > WAS > DB 구조 및 동작과정을 알아본다 웹 서버와 WAS 웹 서버 (Web Server)란? 클라이언트가 서버에 페이지 HTTP 요청을 하면 요청을 받아 정적 컨텐츠(.html, .png, .css등)를 제공하는 서버이다 특징 정적 리소스 제공 (정적(파일) HTML, CSS, JS, 이미지, 영상) 클라이언트에서 요청이 올 때 가장 앞에서 요청에 대한 처리를 한다. was를 거치지 않고 자원 바로 제공 어플리케이션 로직같은 동적인 처리가 필요시에는 was에 요청을 위임하고, WAS가 처..
· JAVA
정의 JSON(JavaScript Object Notation)은 속성-값 쌍, 배열 자료형 또는 모든 시리얼화 가능한 값 또는 '키-값 쌍'으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다. => JSON은 단순히 데이터를 표시하는 표현 방법일 뿐, 다른 예로는 xml 이 있다. 배열(Array) 배열은 대괄호[]로 나타낸다. 배열의 각 요소는 기본 자료형이거나 배열, 객체이다. 각 요소들은 쉼표(,)로 구별된다. 각 요소가 나타나는 순서에 의미가 있다. [10, {"v": 20}, [30, "마흔"]] 객체(Object) 객체는 이름/값 쌍의 집합으로, 중괄호{}를 사용한다. 이름은 문자열이기 때문에 반드시 따옴표를 하며, 값은 기본 자료형이다..
dev_rosieposie
로지포지의 성장 연대기