728x90
서블릿회원 추가 서블릿@WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/members/newform")public class MemberFormServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter w = response...
서블릿동작 흐름1. 서블릿 등록 > `@WebServlet` 을 통해 서블릿 이름과 URL 매핑을 설정하면 서블릿 클래스로 설정된다. ( 이때 클래스는 `HttpServlet` 을 상속해야 한다.) > `@ServletComponentScan` 를 추가하여 패키지 스캔을 통해 서블릿 클래스를 서블릿으로 자동 등록한다.@ServletComponentScan@SpringBootApplicationpublic class ServletMain { public static void main(String[] args) { }}@WebServlet(name = "myServlet", urlPatterns = "/test")public class MyServlet extends HttpServle..
웹 서버- HTTP 기반으로 동작- `정적 리소스` 제공 ( 정적 HTML, CSS, JS, 이미지, 영상 등 )- 기타 부가 기능- ex `NGINX`, `APACHE` 웹 애플리케이션 서버(WAS)- HTTP 기반으로 동작- 정적 리소스 제공- 동적 리소스 제공 ( 동적 HTML, HTTP API(JSON), 서블릿, JSP, 스프링 MVC 등 )- 프로그램 코드를 실행해서 `애플리케이션 로직` 수행- `서블릿 컨테이너` 기능 제공- 멀티 쓰레드 처리 지원- ex `Tomcat`, `Jetty`, `Undertow` 서블릿- `urlPatterns` 의 URL 이 호출되면 서블릿 코드가 실행- HTTP 요청/응답 정보를 편리하게 사용하는 HttpServletRequest/Response 제공- HT..
쿠키클라이언트에 저장되는 작은 데이터 조각 1. 서버가 Set-Cookie 헤더를 통해 클라이언트에게 전달2. 클라이언트는 쿠키 저장소에 해당 쿠키를 저장한 후, 요청마다 자동으로 포함하여 서버로 전달 사용처- 사용자 로그인 세션 관리- 사용자 설정 저장- 광고 정보 트래킹 특징- 네트워크 트래픽 추가 유발- 최소한의 정보만 사용 (세션 id, 인증 토큰)- 보안에 민감한 데이터는 저장하면 안 됨 > 참고 - 민감한 데이터는 세션 저장소 또는 토큰(JWT 등)을 사용한다.종류- `세션 쿠키` :생명주기 설정 없고 브라우저 종료 시 쿠키 삭제- `영속 쿠키` : 생명주기 설정까지 유지되고 쿠키 삭제 생명주기 설정- `max-age` : 0 이나 음수를 지정하면 쿠키 삭제- `expires` : 만료일이 되..
HTTP 헤더표현 헤더- `Content-Type` : 표현 데이터의 형식- `Content-Encoding` : 표현 데이터의 압축 방식- `Content-Language` : 표현 데이터의 자연 언어- `Content-Length` : 표현 데이터의 길이 (byte 단위) 표현 헤더는 `요청`/`응답`에 둘 다 사용 > 참고 Transfer-Encoding(전송 코딩)을 사용하면 Content-Length 를 사용하면 안 된다. 협상 헤더(콘텐츠 네고시에이션)클라이언트가 선호하는 표현 요청 - `Accept` : 클라이언트가 선호하는 미디어 타입 전달- `Accept-Charset` : 클라이언트가 선호하는 문자 인코딩- `Accept-Encoding` : 클라이언트가 선호하는 압축 인코딩- `Ac..
상태 코드클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 - `1xx (Informational)` : 요청이 수신되어 처리 중- `2xx (Successful)` : 요청 정상 처리- `3xx (Redirection)` : 요청을 완료하려면 추가 행동이 필요- `4xx (Client Error)` : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청 수행 불가- `5xx (Server Error)` : 서버 오류, 서버가 정상 요청 처리 불가 2xx (Successful)- 200 OK : 요청 성공- 201 Created : 요청 성공해서 새로운 리소스 생성- 202 Accepted : 요청 접수되었으나 처리가 완료되지 않음- 204 No Content : 서버가 요청을 성공적으로 수행했..
클라이언트에서 서버로 데이터 전송 1. `쿼리 파라미터`- GET 요청에서 주로 사용- 검색, 필터링, 정렬과 같은 조회용 데이터를 서버에 보낼 때 적합- URL 길이 제한으로 대량의 데이터 전송하기 어려움- 보안상 데이터 노출 위험2. `메시지 바디`- POST / PUT / PATCH / DELETE 요청에서 사용- 리소스 생성, 수정, 삭제 등에 사용- API 요청에서 JSON 형식을 사용하는 경우가 많음- 대량의 데이터를 효율적으로 전송할 수 있으며, 보안성도 높음 상황별 데이터 전송 방식1. `정적 데이터 조회` : 이미지, 정적 문서 단순 조회 > `GET` (쿼리 파라미터 X)GET /static/star.jpg HTTP/1.1 2. `동적 데이터 조회` : 검색, 필터링, 정렬 시 사..
HTTP 란 ? - HyperText Transfer Protocol - `HTML`, `TEXT`, `IMAGE`, `음성`, `영상`, `파일`, `JSON`, `XML` 등을 HTTP 메시지로 전송: 거의 모든 형태의 데이터 전송 가능하다.: 서버 간의 데이터 주고받을 때도 사용한다. HTTP 역사HTTP/1.1 : 가장 많이 사용하는 버전 (RFC 9110 ~ 9112 개정 버전)(HTTP/2, HTTP/3 은 성능 개선에 초점) 특징- 클라이언트 서버 구조로 동작- 무상태 프로토콜 지향, 비연결성- HTTP 메시지 구조로 통신- 단순함, 확장 가능 클라이언트 서버 구조- Request Response 구조- 클라이언트와 서버가 분리 1. 클라이언트는 서버에 요청을 보내고, 응답을 대기2. 서버가..