📕 제 2장 웹 프로그래밍 기초 다지기 💬 GET방식 - 웹 서버에 데이터를 보낼 때, URL에 쿼리 스트링의 형식으로 데이터를 전송한다 GET 요청의 발생 1. 웹 브라우저 주소창에 URL을 입력 2. 링크를 클릭하는 경우 3. 입력 form의 method 속성 값이 get인 경우 GET 요청의 장단점 - URL만으로 쉽게 웹 사이트에 접근할 수 있다 - 사용자가 입력한 데이터가 주소창에 그대로 노출 된다 → 보안에 취약 💬 POST방식 - 웹 서버에 데이터를 보낼 때, HTTP프로토콜의 메시지 본문(MessageBody)에 붙여서 전송한다 POST방식의 장단점 - 사용자의 입력값이 URL에 포함되지 않기 때문에 외부에 노출되지 않는다 - 데이터를 URL에 포함하지 않기때문에 URL만으로 결과 화면에 ..
📕 제 2장 웹 프로그래밍 기초 다지기 2.4 파일 업로드 - 웹 서버에 바이너리 데이터를 보내기 위해 고안된 멀티파트 인코딩 방법을 알아보자 - 이를 위한 태그의 설정 방법에 대해서도 함께 다루도록 한다 파일 업로드를 위한 태그 설정 : 멀티 파트 인코딩 태그의 enctype 속성 - 태그의 enctype 속성은 데이터가 서버로 제출될 때 해당 데이터가 인코딩 되는 방법을 명시한다 - 이 속성은 요소의 method 속성값이 “post”인 경우에만 사용할 수 있습니다. - 기본 값은 aplplication/x-www-form-urlencoded 을 사용한다 - 바이너리 데이터를 보내기 위해서는 multipart/form-data 으로 인코딩해야 한다 - 이미지나 동영상과 같은 바이너리 데이터를 전송해야 ..
📕 제 2장 웹 프로그래밍 기초 다지기 2.3 POST 요청 - 태그의 method 속성을 post로 지정하여 사용한다 - URL에 데이터가 포함되지 않아 외부에 노출되는 위험을 방지한다 - 메시지 본문에 데이터가 포함되므로, 실행 결과의 공유가 불가능하다 - 바이너리 및 대용량 데이터의 전송이 가능하다 POST 요청의 HTTP 프로토콜 확인 POST /web01/LoginServlet HTTP/1.1 # 요청 라인 Host: localhost:9999 Content-Length: 22 # Content-Length 헤더 ... Content-Type: application/x-www-form-urlencoded # Content-Type 헤더 ... # 공백 라인 id=tiger&password=lll..
📕 제 2장 웹 프로그래밍 기초 다지기 2.2 Get요청 URL에 데이터를 포함하므로 데이터 조회에 적합하다 데이터 전송에 특화된 방식이 아니므로, 바이너리 및 대용량 데이터 전송은 불가능하다 요청 라인과 헤드 필드의 최대 크기가 존재한다 - HTTP 사양에는 제한사항이 없다 - 대용량 URL로 인한 문제 발생 → 웹 서버에 따라 최대 크기가 제한된다 - Microsoft IIS 6.0+ : 16KB - Apache 웹 서버 : 8KB 💬 GET 요청이 발생하는 경우 1. 웹 브라우저 주소창에 URL을 입력하여 서버의 자원을 요청하는 경우 (예) http://localhost:9999/web02/GetTest.html → GetTest.html을 요청 2. 링크를 클릭하는 경우 3. 입력 form의 me..
📕 제 2장 웹 프로그래밍 기초 다지기 1-5. HTTP 클라이언트 만들기 package lesson02.client; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; public class SimpleHttpClient { public static void main(String[] args) throws Exception { // 1. 소켓 및 입출력 스트림 준비 Socket socket = new Socket("www.daum.net", 80); BufferedReader in = new BufferedReader(new InputStream..
📕 제 2장 웹 프로그래밍 기초 다지기 1-4. HTTP 응답 - 웹 브라우저가 요청하면 웹 서버는 그에 대한 작업을 수행하고, 응답 데이터를 보낸다 - 웹 서버가 응답한 내용에 대해 알아보자 (1) 상태 라인 (Status-Line) - 응답 메시지의 첫 라인은 응답 결과에 대한 상태 정보이다 - 프로토콜 버전과 상태 코드, 설명으로 구성된다 - 웹 어플리케이션을 개발하는 동안 자주 접하게 되는 응답 상태 코드에 대해 알아보자 (2) 응답 헤더 - 응답 데이터를 처리할 때 참고하도록 웹 브라우저에게 알려주는 정보를 담는다 - Content-Type 헤더는 서버가 웹 브라우저에 보내는 데이터의 형식을 나타낸다 - 웹 브라우저는 헤더의 값을 보고 데이터를 출력할지, 다운로드 창을 띄워야 하는지, 외부 프로..
📕 제 2장 웹 프로그래밍 기초 다지기 1-3. HTTP 요청 (1) 요청 라인(Request-Line) - 요청 메시지의 첫 라인에는 메서드와 요청하는 자원, 프로토콜 버전으로 구성된다 1-1. 메서드 - 요청하는 자원에 대해 웹 서버에게 내리는 명령 - 메서드에는 GET, POST, HEAD, PUT, DELETE, TRACE, CONNECT, OPTIONS 등이 있다 1-2. 요청 URI - HTML 파일이나 이미지, 동영상 등이 있는 가상의 경로를 의미한다 - 웹 서버는 식별자인 요청 URI를 이용해 필요한 자원을 찾는다 - 이미지에는 기본문서를 의미하는 / 를 작성했지만, 자원을 요청하는 경우 경로를 명시한다 (예) /img/test.jpg 1-3. HTTP버전 - HTTP버전은 요청 정보가 어..
📕 제 2장 웹 프로그래밍 기초 다지기 1-2. HTTP 모니터링 HTTP 프록시 - 웹 브라우저와 웹 서버 사이에 주고받는 데이터를 살펴보기 위해서는 HTTP 프록시 프로그램이 필요하다 - 프록시 프로그램의 구동원리는 아래의 그림과 같다 - 웹 브라우저가 웹 서버에게 요청을 하면 HTTP프록시가 대신 서버에 전달한다 - 서버로부터의 응답도 HTTP 프록시가 대신 웹 브라우저에 전달한다 - HTTP 프록시는 웹 브라우저와 웹 서버의 중간에서 요청과 응답을 중계해준다 - 그렇기 때문에 HTTP 프록시 프로그램을 사용해 클라이언트와 서버 사이에서 주고받는 데이터를 확인할 수 있다 HTTP 프록시 모니터 프로그램의 종류 - Charles : https://www.charlesproxy.com/ - Fiddle..
📕 제 2장 웹 프로그래밍 기초 다지기 1-1. HTTP 프로토콜 - 웹 브라우저와 웹 서버 사이의 데이터 통신 규칙 - 웹 페이지의 링크를 클릭하면 웹 브라우저가 보낸 데이터를 분석하여 요청받은 일을 처리하고 응답한다 - 웹 브라우저에서 요청한 파일을 찾아 보내주며, 데이터를 보낼 때에는 HTTP 응답 형식에 맞추어 보낸다 - HTTP 프로토콜은 단순히 파일을 전송하는 것 뿐만아니라 - 원격 컴퓨터에 로딩되어 있는 함수나 객체의 메서드를 호출할 때에도 사용된다 HTTP 프로토콜 응용 기술 1. SOAP(Simple Object Access Protocol) - HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다 - SOAP은 웹 서비스에서 기본..
web.xml 파일의 구조(2) 서블릿 매핑 WAS는 프로그램이 실행되자마자, web.xml를 찾아 내부 코드를 확인하고 객체를 생성한다 정확히는 , 태그 내부의 코드를 확인하고 서블릿 객체를 생성한다 즉, Servelet의 객체를 servlet-name에 지정된 별칭으로 생성한다 이러한 과정을 서블릿 매핑 이라고 말한다 기본 구조에는 서블릿 매핑을 위한 코드가 없으므로, 직접 입력해주어야 한다 먼저 컨테이너(WAS)에게 객체를 생성할 서블릿의 이름과, 서블릿이 어떤 패키지에 들어있는지를 알려준다 서블릿의 패키지 경로(FQCN)는 태그 안에 작성하고 서블릿의 이름(Alias)은 태그 안에 작성한다 서블릿의 이름(Alias), 패키지 패키지 경로(FQCN)는 태그 안에 작성해야 한다 servlet-clas..