웹 애플리케이션 웹 서버 HTTP를 기반으로 동작하는 서버 정적 리소스(HTML, CSS, JS)를 제공하고, 기타 부가기능을 제공한다. 클라이언트 (HTTP 요청) → 웹 서버 (HTTP 응답) ex_) NGINX, APACHE 웹 애플리케이션 서버 (WAS) HTTP를 기반으로 동작하는 서버 웹 서버 기능을 포함하며 프로그램 코드를 실행하여 애플리케이션 로직을 수행한다. 클라이언트 (HTTP 요청) → WAS (HTTP 응답) 동적 HTML, HTTP API(JSON), Servlet, JSP, SpringMVC ex_) Tomcat, Jetty, Undertow 차이점 웹 서버는 정적 리소스, WAS는 애플리케이션 로직을 실행하는 서버이다. 사실은 둘의 용어도 경계도 모호하기에 굳이 나누자면 WAS..
이미 Push된 커밋 메시지 수정문제처음에 커밋을 할 때 메시지가 잘못됬다는 것을 깨달았다.이를 수정하기 위해서 인터넷을 뒤져보기 시작했다.해결git rebase HEAD~[불러오고 싶은 커밋메시지의 수] -i위 명령어를 통해서 커밋메시지를 변경할 수 있다고 한다.실제로 위처럼 커밋 메시지와 함께 이전 커밋을 불러올 수 있다.pick eeb456f Create README.md 이 부분 중 pick을 reword로 바꾸어서 변경하겠다고 표시한다. 참고로 vi 편집기이기 때문에 ‘i’를 눌러 삽입모드에 들어가 수정해야한다. 수정이 완료되면 esc를 누르고 :wq로 저장한다.이제 커밋 메시지를 작성할 차례이다.위와 같이 변경한 후 다시 저장을 위해 esc를 누르고 :wq를 한다.무언가가 변경되었다는 것을 확..
서브쿼리 (이중SQL) 이번 글에서는 서브 쿼리에 대해서 정리해보려고한다. 서브쿼리? 서브쿼리란 하나의 SQL문 안에 작성되어있는 또 다른 SQL문을 말한다. 보통 (select * from member) 와 같이 괄호 안에 작성되어 있으며 끝나고는 세미콜론을 붙히지 않는다. 실행 순서는 서브쿼리 → 메인쿼리 순으로 진행된다. 이러한 서브 쿼리는 지금까지 배운 DML (SELECT, INSERT, UPDATE, DELETE)에 모두 적용시킬 수 있다. 어떻게 사용할 수 있는지 하나씩 사용해보면서 간단히 알아보자. 기준이 될 테이블이다. SELECT 가장 기본적인 SELECT의 서브 쿼리를 만들어보자. select * from member where id in (select id from student);..
캐시 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소 캐시의 장점 비싼 네트워크 사용량을 줄일 수 있다. 빠른 브라우저 로딩 속도로 사용자에게 편의를 제공한다. 캐시 덕분에 캐시 가능 시간동안은 네트워크를 사용하지 않아도 된다. 캐시가 없다면? 비싼 인터넷 네트워크 비용을 계속 지불해야 한다. 브라우저 로딩 속도가 느리기 때문에 사용자가 불편할 수 있다. 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다. 캐시의 기본 동작과정 먼저, 첫번째 요청시 클라이언트가 웹 브라우저를 통해 서버에 데이터를 요청한다. (GET / starts.jpg) 그러면 서버는 데이터와 함께 캐시의 유효시간을 같이 전달해준다. HTTP/1.1 200 OK Content-Type: image/..
쿠키(Cookie)란? 쿠키는 클라이언트의 정보를 가지고 있는 텍스트 형식의 데이터이다. 클라이언트가 저장하게 되며, 서버가 쿠키를 요청할시 서버로 전달하게 된다. 언제 사용할까? 로그인 세션 유지 (보통 세션 ID 값을 통해서 처리함.) 광고 정보 트래킹 네트워크 트래픽 추가 유발 쿠키가 사용되는 것을 간단한 예제와 함께 알아보자. **request** POST /login HTTP/1.1 user=BB_GG ------------------------------- **response** HTTP/1.1 200 OK Set-Cookie: user=BB_GG BB_GG님이 로그인했습니다. 클라이언트가 로그인을 할 때 user 이름을 같이 보내주게 되면 서버에서는 쿠키를 설정하여 클라이언트의 웹 브라우저에..
이번 글에서는 DELETE에 대해서 정리해보려고 한다. DELETE는 뜻 그대로 데이터를 삭제할 때 사용되는 구문이다. 먼저 기본적인 문법에 대해서 알아보자. DELETE FROM (테이블 이름) WHERE (컬럼) = (데이터); DELETE 문은 보통 위와같이 사용된다. 이번에도 역시 간단한 예제와 함께 자세히 살펴보자. delete from member where id = 0; delete form member // 멤버 테이블에서 삭제한다. where id = 9 // id가 9인 값을 문장으로 작성해보자면 id가 9인 값을 멤버 테이블에서 삭제한다” 가 되겠다. 삭제 전 삭제 후 *** 주의할 점 DELETE문도 UPDATE와 마찬가지로 where절이 거의 필수로 들어간다고 생각하면된다. 조건을..
이번에는 DML 중 UPDATE를 정리해보려고 한다. UPDATE는 뜻 그대로 데이터를 업데이트 해야될 때 사용된다. 먼저 기본적인 문법을 살펴보자. UPDATE (테이블이름) SET (필드 이름) = (수정할 데이터) WHERE (필드 이름) = (조건 데이터); UPDATE문은 위와 같이 이루어진다. 그럼 이번에도 간단한 예제와 함께 살펴보도록하자. update member set name = "BB_GG" where id = 1; update member / / member 테이블을 업데이트 하겠다. set name = "BB_GG" // 이름을 BB_GG로 변경하겠다. where id = 1 // id 값이 1인 요소의 문장으로 작성해보자면 "member 테이블에서 id 값이 1인 ..
이번에는 HTTP 헤더에 대해서 알아보려고 한다. HTTP 헤더란? HTTP 전송에 필요한 모든 부가정보를 넣는 부분이다. 예를 들어 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트 등등 많은 정보가 들어가게된다. 그렇기에 무수히 많은 필드가 존재하며, 필요시에는 임의의 필드를 만들 수도 있다. 헤더는 보통 다음과 같은 구조를 가지고 있다. GET /search?q=hello&hl=ko HTTP/1.1 Host: www.google.com ----------------------------------------------- HTTP/1.1 200 OK Content-Type: text/html;charset=UTF-8 Content-Length:3323 ... 위 내용에서..
이번엔 HTTP 상태코드에 대해서 알아보려고 한다. HTTP 상태코드란? 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다. 100번대 ~ 500번대에 대한 상태코드가 정의 되어있고 그 내용들을 살펴볼 예정이다. 1xx (Informational) - 요청이 수신되어서 처리 중인 상태 100번대의 상태코드는 거의 사용되지 않기에 개념만 알아두면 될 것 같다. 2xx (Successful) - 요청이 정상 처리된 상태 종류로는 다음과 같다. 200 OK 가장 많이 볼 수 있는 상태코드이다. 요청이 성공적으로 처리됬을 때의 상태이다. HTTP/1.1 200 OK Content-Type: appplication/json Content-Length: 34 { "username":"G..
이번엔 JOIN에 대해서 알아보려고 한다. JOIN이란? 둘 이상의 테이블을 연결해서 데이터를 검색하는 방법이다. 두 테이블을 연결하려면 테이블들이 적어도 하나의 컬럼을 공유하고 있어야하며 보통 이를 PK 또는 FK 값으로 사용한다. JOIN을 이용하면 on을 사용하게 되는데, 이를 통해 JOIN을 할 범위를 고를 수 있게된다. 그럼 종류를 한 번 살펴보도록 하자. JOIN의 종류로는 크게 내부조인(INNER JOIN)과 외부조인(OUTER JOIN)이 있다. 아래 데이터들을 가지고 조인을 살펴보자. Member 테이블 Student 테이블 내부조인(INNER JOIN) - 두 테이블의 공통적인 부분만 Select가 된다. 내부조인은 두 테이블 안에서 공통적으로 데이터가 존재하는지 확인할 ..
이번 글에서는 저번 글에서 설명했던 내용 중 하나인 DML의 Select 대해서 설명해보려고 한다. SQL을 직접 작성하면서는 처음 써보는 글이라 많이 어색하거나 부족한 부분도 있지만 열심히 써봐야겠다. 처음으로는 조회를 할 수 있는 Select 문에 대해서 정리를 해보려고 한다. SQL문을 조금이라도 다뤄보았다면, 한번쯤은 사용해보았거나 봤을 것이다. 기본적인 문법은 다음과 같다. SELECT (조회할 목록들) FROM (테이블 이름) (부가적인 요소들) WHERE (조건이 될 필드) = (조건 데이터) GROUP BY (그룹화할 필드) HAVING (그룹화 기준으로 조건이 될 필드) = (조건 데이터) ORDER BY (정렬 기준 필드) [DESC, ASC]; SQL문의 각 요소들은 각자 정해..
오늘은 이전글인 HTTP 메서드에 대한 연장선인 활용방법에 대해서 알아보겠다. HTTP 메서드는 서버에 데이터를 전송하게 될 때 사용하게된다. 먼저 GET 메서드이다. GET - 쿼리 파라미터를 통한 데이터 전송 주로 검색어를 치거나 정렬 필터를 사용할 때 사용하게된다. (조회할 때 주로 사용) 다음으로는 POST, PUT, PATHC 메서드이다. POST, PUT, PATCH - 메시지 바디를 통한 데이터 전송 주로 회원가입, 상품주문, 리소스 등록과 변경 등 사용된다. 4가지 상황을 예로 들어 각 메서드를 활용해보자. 1. 정적 데이터 조회 이미지, 정적 텍스트 문서를 얻어올 때 사용된다. 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회가 가능하다. GET ..