Tech Interview

    XML을 안 쓰고 JSON을 쓰는 이유

    1. 가독성 XML은 태그 형식을 사용하지만, JSON은 중괄호와 콤마를 사용하여 데이터를 표현 JSON 형식은 간단하고 직관적이며, 필드 이름과 값이 명확히 드러나 코드를 읽고 디버깅하기 쉬움 2. 크기 JSON은 필드 이름과 값 사이에 불필요한 태그가 없으므로, 더 적은 용량을 사용 3. 파싱 속도 JSON은 XML에 비해 파싱 속도가 빠름. 대부분의 언어에서 내장된 JSON 파서를 제공 반면에, XML 파싱은 복잡한 구조를 이루어져 있고 특별한 라이브러리나 도구 사용 필요 4. 웹 애플리케이션과 API 지원 JavaScript에서 JSON 데이터를 쉽게 처리 가능하며, 대부분의 웹 브라우저와 서버 플랫폼에서 지원 5. 데이터 전송 형식 AJAX 요청과 RESTful API에서도 일반적으로 JSON을..

    Ajax, JSON

    Ajax - Asynchronous JavaScript and XML(비동기 자바스크립트 XML) Ajax는 XML에 기반한 종합 기술 - HTML, CSS, JavaScript, DOM, XML 등 기존에 사용되던 여러 기술을 함께 사용하는 개발 기법 - 빠르게 동작하는 동적인 웹 페이지를 만들기 위한 개발 기법의 하나 - 웹 페이지 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있음 - Ajax를 이용하면 백그라운드 영역에서 서버와 통신하여, 그 결과를 웹 페이지의 일부분에만 표시할 수 있음 - 서버와 다음과 같은 다양한 형태의 데이터를 주고 받을 수 있음 JSON, XML, HTML, 텍스트 파일 등 Ajax 장점 - 웹 페이지 전체를 다시 로딩하지 않고, 웹 페이지의 일부분만을 ..

    javascript

    변수 선언 - var : 변수 선언 및 값 초기화 - let : 블록 범위(scope) 지역 변수 선언 및 값 초기화. ECMAScript 6 - const : 블록 범위 읽기 전용 상수 선언. ECMAScript 6 프로토타입(prototype) 기반 언어 - 자바스크립트는 클래스 기반이 아닌 프로토타입을 기반으로 하는 객체 기반 언어 - 프로토타입 기반 언어는 프로토타입 객체라는 개념이 있으며, 새로운 객체의 초기 속성을 가져 오는 템플릿으로 사용되는 객체 객체 원형인 프로토타입을 이용해 새로운 객체를 만들며, 생성된 객체는 또 다른 객체의 원형이 될 수 있음 - 모든 객체는 객체를 만들거나 런타임에 고유한 속성을 지정할 수 있음 - 모든 객체를 다른 객체의 프로토타입으로 연결하여 두 번째 객체가 첫..

    MVC 패턴

    MVC 패턴의 이해 - Model, View, Control의 역할을 확실하게 분리시켜 놓은 프로그래밍 기법 - 중간에 Controller 컴포넌트를 두어 비즈니스 로직과 데이터 접근 로직, 프레젠테이션 로직을 분리시킨 디자인 패턴. 각 영역별로 역할이 명확히 구분되어 모듈 간의 의존성을 낮추고 재사용성 및 확장이 용이한 구조로 유지 보수에 유리 - 모델 1 : JSP에 프레젠테이션 로직과 비즈니스 로직, 데이터 접근 로직이 함께 들어감 모델 2 : 각각의 역할을 나누어 작업 분담시킨 MVC 패턴을 웹에 적용 - View를 담당하는 JSP는 프레젠테이션 로직만 처리하고 Controller는 요청을 어디로 보낼지 결정. Model은 비즈니스 레이어에 포함 Model 1 방식과 Model 2 방식 Model..

    쿠키와 세션, 필터

    쿠키 - 서버측에서 클라이언트측에 상태 정보를 저장하고 추출할 수 있는 메커니즘 - 클라이언트의 매 요청마다 웹 브라우저로 부터 서버에게 전송되는 정보 패킷의 일종 - HTTP에서 클라이언트의 상태 정보를 클라이언트의 하드 디스크에 저장했다가 필요시에 재사용하거나 참조 가능 - 쿠키의 제약조건 클라이언트에 총 300개까지 쿠키 저장 가능 하나의 도메인 당 20개의 값만 가질 수 있음(초과할 경우 가정 적게 사용된 쿠키부터 지워짐) 하나의 쿠키 값은 4096Byte 까지 저장 가능 - 사용 예 방문했던 사이트에 다시 방문 했을 때 아이디와 비밀번호 자동 입력, 오늘 본 상품목록 등 세션 - 클라이언트와 웹서버 간에 네트워크 연결이 지속적으로 유지되고 있는 상태 - 클라이언트가 처음 접속시 JSP(혹은 서블..

    포워딩과 리다이렉트

    포워딩(Forwarding) - 클라이언트로 부터 요청 받은 주소로 서블릿 또는 JSP가 정보를 전달하여 처리하는 것 - 포워딩은 Servlet Container 안에서 일어나므로 웹 브라우저는 포워딩 된 사실을 알 수 없음 따라서 웹 브라우저에는 최초에 호출한 URL이 표시되고 포워딩 된 페이지 URL 정보를 볼 수 없음 - 요청 받은 페이지에서 request.setAttribute("키", 값) 를 이용하여 기존 정보를 전달함 - 동일한 웹 경로(Context Path)에 있는 페이지로만 포워딩 가능 리다이렉트(Redirect) - 다른 웹 컨테이너에 있는 주소로 이동 가능 - 새로운 페이지에서는 request 객체와 response 객체가 새롭게 생성 - 포워딩은 URL이 유지되지만 리다이렉트는 U..

    JSP와 Servlet

    웹 컨테이너(Web Container) - JSP와 서블릿을 실행할 수 있는 소프트웨어를 웹 컨테이너 또는 서블릿 컨테이너라고 함 - 순수 서블릿을 처리하는 경우 서블릿 컨테이너라 부름. 서블릿 컨테이너를 포함한 JSP, HTTP 서버로서의 기능을 포함하기 때문에 웹 컨테이너라고 부름 - 웹 컨테이너로는 아파치 톰캣(Apache Tomcat), IBM 웹스피어(Web Sphere) 어플리케이션 서버, 레진(Resin), 티맥스의 제우스(JEUS), 이클립스 재단의 제티(jetty) 등이 있음 서블릿 라이프 사이클(생명 주기) - Servlet은 GenericServlet 클래스나 HttpServlet 클래스를 상속받아서 작성하며, init(), service(), destroy() 총 세 개의 메서드에 ..

    GET 방식과 POST 방식

    GET 방식 - default 전송방식으로 http header에 정보(QueryString, 환경변수를 통해 전달)를 실어 보냄 - URL에 데이터가 노출되어 보안에 취약. - 캐싱 가능 ● 캐싱이 사용 가능으로 설정되면 서버의 비즈니스 오브젝트 대신 브라우저 캐시에서 데이터 검색 ● 요청의 엔티티 태그(ETag) 값이 이전 요청 값과 일치하는 경우 요청에 대해 캐싱 사용 ● 캐싱은 각 사용자에 대해 고유하며 Cache-Control HTTP 헤더 특성에 의해 제어 - 브라우저 히스토리에 기록이 남음 - 전송하는 데이터양에 한계가 있음(브라우저마다 GET 요청 길이 제한 존재) - 검색엔진에서 검색단어 전송에 많이 이용함 POST 방식 - 서버로 정보를 전송하기 위해 설계되었으며 http body에 정..