반응형
1번째 포스팅 참고 ☞ 신입 개발자 기술면접 준비하기 (1) - Java
API(Application Programming Interface) 란?
응용프로그램에서 사용할수 있도록 운영체제나 프로그래밍언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- API : 애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트로 애플리케이션 프로그래밍 인터페이스를 나타낸다.
- 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것
API의 장점
- API를 사용하면 구현 방식을 알지 못해도 제품 또는 서비스가 서로 커뮤니케이션할 수 있으며 애플리케이션 개발을 간소화하여 시간과 비용을 절약할 수 있습니다.
- 새로운 툴과 제품을 설계하거나 기존 툴과 제품을 관리하는 경우 API는 유연성을 제공하고 설계, 관리, 사용 방법을 간소화하며 혁신의 기회를 제공합니다.
- API는 리소스에 대한 액세스 권한을 제공하고 보안과 제어를 유지할 수 있게 해주며 액세스 권한을 어떻게, 누구에게 제공할지 여부만 결정하면 됨
REST란?
- REST는 Representational State Transfer 의 약자로서 웹의 장점을 최대한 활용할 수 있는 아키텍처
- 최근의 서버 프로그램은 다양한 브라우저와 안드로이드폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야 한다.
- REST 아키텍처는 Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
RESTful 이란?
- RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.
Http 응답상태코드
- 성공(Success)
- 200 상태코드 : 정상적으로 수행
- 201 상태코드 : 자원(Resource) 생성 요청. 성공적으로 수행됨
- 클라이언트 에러(Client Error)
- 400 상태코드 : 클라이언트 요청이 부적절할 경우 응답 코드
- 401 상태코드 : 클라이언트가 권한이 없는 자원을 요청하였을 때 응답 코드
- 403 상태코드 : 보호되는 자원을 요청하였을 때 응답 코드
- 405 상태코드 : 클라이언트가 요청한 리소스에서는 사용 불가능한 Method를 이용했을 때 응답 코드
- 기타
- 301 상태코드 : 클라이언트가 요청한 리소스에 대한 URI가 변경되었을 때 응답코드
- 500 상태코드 : 서버에 뭔가 문제가 있을 때 사용하는 응답 코드
- 500 : 서버쪽 오류로 인한 상태코드
MVC(Model - View - Controller) 패턴이란?
- 애플리케이션을 세가지의 역할로 구분한 개발 방법론
- 사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.
- 사용자가 웹 사이트에 접속한다. (User)
- Controller는 사용자가 요청한 웹 페이지를 서비스하기 위해서 모델을 호출한다.
- 모델은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 그 결과를 리턴한다.
- Controller는 Model이 리턴한 결과를 View에 반영한다.
- 데이터가 반영된 View는 사용자에게 보여진다.
MVC Model-1
- JSP로 구현한 기존 웹 어플리케이션은 모델 1 구조로 웹 브라우저의 요청을 JSP 페이지가 받아서 처리하는 구조이다.
- JSP 페이지 안에서 모든 정보를 표현(View)하고 저장(Model)하고 처리(Control)되므로 재사용이 힘들고, 읽기도 힘들어 가독성이 떨어진다.
- 정의 : 모든 클라이언트 요청과 응답을 JSP가 담당하는 구조
- 장점 : 단순한 페이지 작성으로 쉽게 구현이 가능하다. 중소형 프로젝트에 적합
- 단점 : 웹 어플리케이션이 복잡해지면 유지보수 문제가 발생된다.
MVC Model-2
- MVC1 구조와 달리 웹 브라우저의 요청을 하나의 서블릿이 받게 됨
- 서블릿은 웹 브라우저의 요청을 알맞게 처리한 후 그 결과를 JSP 페이지로 포워딩
- 정의 : 클라이언트의 요청처리와 응답처리, 비지니스 로직 처리하는 부분을 모듈화시킨 구조
- 장점 : 처리작업의 분리로 인해 유지보수와 확장이 용이하다.
- 단점 : 구조 설계를 위한 시간이 많이 소요되므로 개발 기간이 증가한다.
Spring MVC 프레임워크
- 스프링이 제공하는 트랜젝션 처리, DI, AOP를 손쉽게 사용
- 스트럿츠2와 같은 프레임워크와 연동이 쉬움
반응형
Spring MVC 주요 구성요소 및 처리 흐름
- 다른 mvc 프레임워크와 마찬가지로 컨트롤러를 사용하여 요청을 처리
- 스프링에서는 DispatcherServlet이 MVC에서의 컨트롤러(Controlle)부분을 처리
DispatcherServlet의 역할
- 클라이언트의 요청을 전달받아 요청에 맞는 컨트롤러가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성
HandlerMapping의 역할
- 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정
Controller의 역할
- 클라이언트의 요청을 처리한 뒤 결과를 DispatcherServlet에게 리턴
ModelAndView의 역할
- 컨트롤러가 처리한 결과 정보를 뷰 선택에 필요한 정보를 담음
ViewResolver의 역할
- 컨트롤러의 처리 결과를 생성할 뷰를 결정
View의 역할
- 컨트롤러의 처리 결과 화면을 생성, JSP 또는 Velocity 템플릿 파일 등을 뷰로 사용
Spring MVC 개발
- 클라이언트에 요청을 받을 DispatcherServlet을 web.xml 파일에 설정
- 클라이언트의 요청을 처리할 컨트롤러 작성
- ViewResolver 설정(컨트롤러가 전달한 값을 이용해서 응답 화면을 생성할 뷰를 결정)
- JSP나 Velocity 등을 이용하여 뷰영역의 코드를 작성
RIA(Rich Internet Application)
- 일반 데스크톱 애플리케이션과 같이 풍부한 유저 인터페이스를 제공하고, 다이나믹하며 모든 처리 과정을 새로고침 없이 할 수 있도록 지원해주는 웹 애플리케이션
AJAX(Asynchronous JavaScript and XML) 특징
- 플러그인을 사용하지 않고 브라우저만으로 이용 가능
- 페이지 이동없이 어떤 문서를 요청하고 응답된 결과를 가져다가 동적 처리 할 수 있도록 하는 JavaScript 라이브러리
- 웹 서버에서 수신한 HTML 및 XML 데이터를 처리하는 데는 DOM을 사용
장점
- 접근이 용이하며, 페이지 이동없이 고속으로 화면전환 가능
- 비동기 통신 가능
- 수신 데이터량을 축소할수 있으며, 웹 클라이언트에게 처리를 위임 가능
- 화려한 유저 인터페이스 제공 등
- 다양한 오픈 소스 프레임워크(Prototype, Dojo, jQuery, Google Web Toolkit 등) 제공
단점
- 브라우저 호환성에 자유롭지 못하다
- JavaScript는 유지보수 및 디버깅이 어렵다
- Ajax가 포함된 HTML 문서를 제공한 웹 서버가 아닌 다른 웹 서버로 요청을 보낼 수 없고, 클라이언트 PC의 파일에 접근할 수 없다.
Ajax 기반 기술들
- XMLHttpRequest : 웹 브라우저와 웹 서버간 비동기 통신을 위한 JavaScript 객체
- DOM(Document Object Model) : 마크업 문서의 특정 노드를 객체 단위로 조작할 수 있는 일관된 방법 제공
- JSON(JavaScript Object Notation) : 구조화된 텍스트 데이터의 교환을 위한 자바스크립트 표현식
- XSL : XML 문서를 XML 또는 HTML 문서로 변환하기 위한 언어
XML(Extensible Markup Language)
- HTML은 고정된 태그 집합이고, 디스플레이 기능에 치중ㅎ 다양한 비즈니스 데이터 표현 불가능하여 한계가 있음
- 인터넷 환경에서 구조화된 문서를 전송 가능하도록 설계된 표준 마크업 언어
- SGML의 서브셋 형태로 SGML과 HTML의 장점을 수용하여 만들어진 언어
XML 장점
- 호환성
- 독립성
- 확장성
- 다양한 포맷으로 변경 가능
- 검색 능력의 향상
DOM
- 파서가 문서 전체 또는 일부를 읽어서 메모리에 객체의 트리를 구성해서 xml 어플리케이션에 제공
- SAX에 비해 읽기 성능은 낮지만 Random Access 및 쓰기 기능이 제공됨
- 표준 인터페이스를 구현한 객체 기반 접근
반응형
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 객체지향 프로그래밍에 대한 이해 (1) (0) | 2020.12.19 |
---|---|
웹 서버 :: 이클립스 WAS 설치(Apache Tomcat) 및 사용방법 (0) | 2020.12.17 |
신입 개발자 기술면접 준비하기 (1) - Java (0) | 2020.12.16 |
이클립스(eclipse) 다운로드 및 실행 (0) | 2020.09.26 |
jdk 다운로드 및 환경변수 설정하기 (0) | 2020.09.26 |