네이버클라우드캠프 61~62일차(3/27~3/28)
1. 웹 애플리케이션
- 웹 브라우저를 통해 클라이언트와 상호작용하는 소프트웨어
ex) 웹사이트, 온라인 쇼핑몰, 소셜 미디어 플랫폼 등의 웹 서비스
2. Servlet(서블릿)
- 클라이언트의 요청을 처리하고, HTML,XML, JSON 등과 같은 다양한 형식의 데이터를 처리하며, 응답을 생성하는 등의 작업을 수행하는데 사용
ex) Client 가 로그인하면 서블릿은 그 정보를 확인하고 로그인이 되었는지 여부를 알려줌
ex) Client 가 새로운 정보를 입력하면, 서블릿은 그 정보를 받아서 처리하고, 필요하면 데이터베이스에 저장
- Java 언어로 작성되며, Java EE(Java Enterprise Edition) 환경에서 Dynamic Web Project로 개발됨
- javax.servlet.GenericServlet, javax.servlet.http.HttpServlet 등의 추상클래스를 상속받아 구현함
- 서블릿 컨테이너(Apache Tomcat, Jetty 등)에서 실행
3. HTML <form> 요소의 action 속성과 Servlet의 URL 매핑
- HTML 폼에서 <form action="Hello">이라고 선언하면, 사용자가 폼을 제출할 때 해당 폼 데이터가 서버로 전송
- 서블릿에서 @WebServlet("/Hello")로 매핑되어 있다면, 웹 브라우저는 폼 데이터를 가지고 "/Hello " 경로로 HTTP POST 요청을 보냄
- 이때 요청의 목적지 URL은 현재 웹 애플리케이션의 기본 URL과 " Hello " 경로를 합친 것
- 서블릿 컨테이너(Apache Tomcat)는 이 요청을 받아들이고 해당 Servlet 클래스의 service() 메서드, doGet() 메서드 또는 doPost() 메서드를 호출하여 응답(데이터 전송)
즉, HTML 폼의 action 속성 값과 Servlet의 @WebServlet 어노테이션에 지정된 URL이 매핑
4. HTML <form> 요소의 HTTP 메소드 2가지
1) get
- 폼 데이터를 요청 Html의 본문(body)에 포함시켜 서버로 전송
- 데이터는 사용자에게 보이지 않고, URL에 노출되지 않음
- 일반적으로 보안이 중요한 데이터를 전송할 때 사용
- 데이터 크기에 제한이 없음
2) post
- 폼 데이터를 URL의 쿼리 문자열(query string)에 포함시켜 서버로 전송
- 데이터가 URL에 노출되어 있으므로, 보안에 취약
- 일반적으로 데이터가 적고, 보안이 크게 중요하지 않을 때 사용
- URL 길이에 제한이 있으므로, 매우 큰 데이터를 전송하기에는 적합하지 않음
5. ServletResponse 인터페이스
- ServletResponse 인터페이스는 Java Servlet API에서 제공하는 인터페이스 중 하나
- 서블릿 컨테이너에 의해 구현
- 클라이언트의 요청에 대한 응답 생성하고 전송하기 위한 다양한 메서드를 정의
- 주요 메서드로는 getWriter()와 getOutputStream() 존재
ex) getOutputStream() 메서드: ServletOutputStream 객체를 반환하여 이진 데이터를 클라이언트에게 전송
6. .gerWriter() 메서드
- 서블릿의 ServletResponse 인터페이스에서 제공되는 메소드 중 하나
- 클라이언트의 요청에 대한 응답을 보내기 위한 출력 스트림(PrintWriter 또는 ServletOutputStream)을 생성
7. PrintWriter 객체
- 서블릿에서 클라이언트로 데이터를 출력, 전송하기 위한 객체를 생성
- PrintWriter 객체를 통해 서블릿은 HTML, 텍스트 등 다양한 형식의 데이터를 생성하여 클라이언트에게 전송
ex) PrintWriter out = response.getWriter(); // out의 PrintWriter의 참조변수