bdfgdfg
HTTP Header, body, MIME타입 본문
클라이언트-서버간의 데이터 송수신
기본적으로 클라이언트와 서버간의 데이터를 송신을 위해서는 내가 어떠한 형태의 데이터를 보내건 byte Array에 담아서 데이터를 송신해야한다. 이러한것을 직렬화(Serialization)이라고함.
반대로, 상대방측이 byteArray에 담긴 데이터를 보냈고, 이 byteArray가 어떤 형식이었다는것을 서로가 약속한다면 그것을 읽어들이는 측에서는 약속을 토대로 byteArray에 담긴 데이터를 해석하면 된다.
이를 역직렬화(Deserialization)이라고 한다.
-> 그래서 프로토콜(protocol)이 중요하다. 서로가 데이터를 주고받을 때 어떻게 해석할래?가 주요관건
HTTP메시지도 마찬가치다.
웹 환경에서는 이 HTTP라는 프로토콜을 통해서 서로가 데이터를 해석하는 것.
또한 보내는데이터가 다양한데(avi,html,json,xml등등..)
그 데이터의 타입이 무엇인지?등에 대한 정보를 헤더정보에 포함해서 요청 및 응답을 한다.
-> 어떤 데이터를 던져줄 때 이 데이터의 타입(형식)을 MIME 타입(Content-Type)이라고도 함.
--> https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types MIME TYPE
-> 만약 던져주는게 HTML 형식의 String으로 보냈는데, MIME타입을 text/html이 아닌 text/plain과 같이 보내면 html String 그 자체(평문)를 응답받은측에서 해석해버린다.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// text/plain타입으로 MIME설정.
response.setContentType("text/plain; charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<h1>html 문자열 전송</h1>");
out.println("</body>");
out.println("</html>");
//out.println("{\"error\":\"fail\"}");
out.flush();
}
text/html로 보내는경우.
-> 클라이언트가 서버에 요청할때는 Content-Type이 중요하지않음. 서버에서 어떤식으로 요청할지는 작업당시에 정하면 되니(혹은 API문서를 통해 이렇게 요청해야한다고 강제), 근데 응답은 중요. 받아서 해석하는건 웹브라우저니깐.
HTTP메시지는 요청(Request)과 응답(Response)에 따라 메시지형태가 조금다른데 그것은
https://blog.naver.com/allstar927/90161809512 여기에 깔끔히 설명이 되어있음.
'웹프로그래밍 > JSP_Servlet' 카테고리의 다른 글
FrontController (0) | 2023.11.01 |
---|---|
웹 서버(web server) vs 웹애플리케이션 서버(was),stateless (0) | 2023.10.31 |
JSP 이해 (0) | 2023.10.30 |
톰캣 프로젝트 Add 안되는경우 (0) | 2023.10.25 |
모델2(MVC) 방식 작업 (0) | 2023.08.13 |