목록분류 전체보기 (82)
호비시의 끄적끄적
인터넷 브라우저에서 URL 입력이 들어왔을 때 서버까지 도달하는 흐름에 대해 적어본다. 1. URL 요청 클라이언트가 주소창에 URL 을 입력합니다. 2. URL 분석 브라우저가 해당 URL을 분석합니다. shcem : 자원에 접근할 방법을 정의해 둔 프로토콜 이름(ex. http, ftp) host : 도메인 이름. IP address도 사용 가능 Post : 포트 번호. (HTTP 기본포트 80, HTTPS 기본포트 443 생략가능) path : 자원의 경로 query : Query String. GET 방식으로 요청할 때 필요한 데이터를 넘겨주기 위함 fragment : anchor. HTML에 특정 ID가 있는 곳으로 스크롤 이동할 수 있도록 하기 위함 URL이 문법에 맞지 않는다면 웹 브라우저의..
아파치(Apache) 아파치 소프트웨어 재단의 오픈소스 프로젝트 WS (Web Server) 80번 포트로 클라이언트 요청(GET, POST, 등)이 왔을 때만 응답함. 정적인 데이터만 처리(HTML, CSS 등) 기본적으로 멀티 프로세스로 구현되어 있음. 설정에 따라 멀티 쓰레드를 같이 운용 가능 톰캣 (Tomcat) 동적 웹을 만들기 위한 웹 컨테이너. 서블릿 컨테이너 WAS (Web Application Server) 8080 포트로 처리 JSP, 서블릿 처리, HTTP 요청 수신 및 응답 동적인 데이터 처리가능(DB 연결, 데이터 조작, 다른 응용프로그램과 상호작용) 요청을 처리하기 위한 쓰레드 풀을 관리함. 요청이 오면 해당 쓰레드 풀에서 쓰레드를 꺼내 요청을 처리함.
maven 과 gradle maven과 gradle은 모두 빌드 관리 툴이다. 프로젝트 생성, 테스트, 빌드, 배포 등의 작업을 위한 프로그램이다. 외부 라이브러리들을 손쉽게 import 할 수 있다. maven 아파치 메이븐은 자바용 프로젝트 관리 도구이다. 아파치 Ant의 대안으로 만들어졌다. 아파치 라이센스로 배포되는 오픈 소스 소프트웨어이다. POM Project Object Model 프로젝트의 정보를 담고 있는 파일 pom.xml로 관리 프로젝트 정보 빌드 설정 빌드 환경 pom 연관정보 gradle 빌드, 프로젝트 구성/관리, 테스트, 배포 도구 안드로이드 앱의 공식 빌드 시스템 빌드 속도가 Maven에 비해 10~100배 가량 빠름 JAVA, C/C++M Python 등을 지원 빌트툴인 A..
AOP란? Aspect Oriented Programming 의 약자로 관점 지향 프로그래밍이라 부른다. 객체 지향 프로그래밍 만으로는 중복을 줄일 수 없는 부분이 생겨, 종단면(관점)에서 바라보고 처리한다. 주로 Logging, Transection, Error Handler 등 비지니스단의 메서드에서 세밀하게 조정할 때 사용한다. Sequence Diagram AOP 사용 전 AOP 사용 후 AOP의 주요 개념 Aspect 흩어진 관심사를 묶어서 모듈화 한것 Target Aspect 가 가지고 있는 Advice가 적용되는 대상(class, method) 등 Advice 어떤 일을 해야할 지에 대한 정보 Join Point 메서드 실행 지점. Advice가 적용될 위치를 나타낸다 Point Cut Jo..
DI Dependency Injection 의존성 주입을 말한다. DI란 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 다이나믹하게 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다. 즉, 각 객체간의 의존성을 스프링 컨테이너(Spring Container)가 자동으로 연결해주는 것으로, 개발자가 빈(Bean) 설정파일에 의존관계가 필요한 정보를 추가해주면, 스프링 컨테이너가 자동적으로 연결해 준다 의존성이란 한 객체가 다른 객체를 사용할 때 의존성이 있다고 한다. 의존성 주입은 IoC(Inversion of Control: 제어의 역전)원칙 하에 객체 간의 결합을 약하게 해주고 유지보수가 ..
Filter Dispatcher Servlet에 요청이 전달되기 전 후에 작용 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있음 Spring Context 외부에 존재하기에 Spring과 무관한 자원에 대해 동작 CORS , XSS , LOG , 인증 등 init() - 필터 인스턴스 초기화 doFilter() - 전/후 처리 destory() - 필터 인스턴스 종료 Interceptor Controllet로 요청이 전달되기 전 후에 작용 Spring Context 내부에서 처리 모든 빈 객체에 접근 가능 여러개로 chaining 하게 사용 가능 로그인 인증, 권한 체크, 프로그램 실행시간 계산작업 로그 확인 등 preHandler() - 컨트롤러 메서드가 실행되기 전 postHandler..
Bean 은 Spring Container에 의해 생명주기가 관리된다. Container 시작 Bean 인스턴스화 Dependenceis Injection 의존성 주입 Custom Init Method Custom Destory Method END 1, 2 ,3 과정을 통해 Bean 이 Container에 등록되고 Bean을 사용 할 수 있게 된다. 4 에서 우리가 만든 메소드에서 빈을 이용할 수 있고 5 우리의 프로그램이 끝나게 되면 Bean 의 LifeCycle도 끝나게된다. Bean Lifecycle 을 고려하지 않고 Bean을 등록해놓고 @Autowired로 주입받아 사용하다 보면 아직 등록하지 않은 Bean들을 사용 할 수 없다는 메시지를 받는다고한다. 스프링이 알아서 순서를 바꿔 참조되는 Be..
Client → DispatcherServlet 가장 앞 단에서 요청을 받아 FrontController 라고도 불림 DispatcherServlet → Controller API 를 처리해 줄 Controller 를 찾아 요청을 전달 Handler mapping 에는 API path 와 Controller 함수가 매칭되어 있음 GET /hello/html/dynamic → HomeController 의 helloHtmlFile() 함수 GET /user/login → UserController 의 login() 함수 GET /user/signup → UserController 의 signup() 함수 POST /user/signup → UserController 의 registerUser() 함수 함수..