-
#1 JSP Project 02(Blog) - 기본지식JSP 2021. 6. 25. 12:56
210625 유투버 '데어프로그래밍'님 강의 참조
1.웹 서버 vs 웹 어플리케이션서버
- 웹 서버 - 'HTTP' 주소로 접근이 가능한 폴더. 이 폴더를 웹서버처럼 가능케 하는것이 '아파치'
- 웹 어플리케이션 서버 - 'HTTP' + 'HTML' 기반의 웹브라우저가 읽지못하는파일(e.g. jsp)을 자체적으로 변환하여 브라우저가 읽을 수 있는 'HTML'로 변환시켜주는 어플리케이션(프로그램) 서버 (e.g. 톰켓), 즉 변환,컴파일,실행까지 해주는 프로그램
2. Stateless
- 웹브라우저는 'HTTP 프로토콜'을 기반으로 하며 이 약속은 문서(HTML) 공유가 목적이다. 즉 브라우저상에서는 모든것들은 'HTML'로 이루어진다. 이때 요청은 'REUQEST' / 응답은 'RESPONSE'로 이루어진다.
- 여기서 중요한 포인트가 'STATELESS'이다. 클라이언트와 서버간에 요청/응답은 1번만 으루어지고 끝나면 반드시 선이 끊어지는것이 'STATELESS' 상태. 자원공유가 주 목적이기때문에 자원의 공유가 끝나면 서버를 끊고 서버 부하를 최소화 시키는게 목적('STATEFUL'은 그 반대 개념)
3. HTTP 헤더와 바디 그리고 MIME 타입
- 헤더 - 클라이언트/서버 간에 요청/응답이 있을 때 서버가 클라이언트에게 어느 파일형태로 응답을 해야하냐고 나타내는 부븐
- 바디 - 시리얼 라이저블을 통해 직렬화된 데이터가 담김
- 즉, 헤더를 보고 바디를 분석 할 수 있다. 이때 헤더를 보고 이 파일에대한 설명이 'MIME TYPE'이라고 부른다. 헤더에는 해당파일의 'content-type'을 가지고 있는데 이것을 'MIME TYPE'이라 부른다(e.g. avi -> video/x-msvideo)
4. MIME TYPE 실습
//필터가 @WebServlet통해 맵핑을 해준다 //localhost:8080/blog/test하면 여기로 들어온다 @WebServlet("/test") public class ApiServerTest extends HttpServlet { private static final long serialVersionUID = 1L; public ApiServerTest() { super(); } //GET/POST요청시 톰켓이 함수 파라미터를 분석해서 던져준다. //요청에 단순 응답이면 'GET' = 'SELECT' protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } //요청에 데이터를 저장이면 'POST' = 'INSERT' protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //content-type을 분석해야하면 getContentType을 써야함 //현재 요청데이터의 context-type : x-www-form-urlencoded String food = request.getParameter("food"); String method = request.getParameter("method"); //insert가 DB에 잘되는지 항상 체크 int result = 2; // 1이면 정상 PrintWriter out = response.getWriter(); if(result==1) { out.println("{\"food\":"+food+",\"method\":"+method+"}"); } else { out.println("{\"error\":\"fail\"}"); } out.flush(); } }
- 1이면 정상
- 2이면 에러
지금까지 테스트는 context-type이 'x-www-form-urlencoded'라고 나와 있기 때문에 어떤식으로 클라이언트/서버가 서로 요청과 응답을 해야하는지 쉽게 할 수 있다.
하지만 json으로 던지게되면 아래와 같이 나온다. Json용으로 코드를 짤수있지만 코드길이 및 구조가 너무나도 길어지기때문에 아무도 그렇게 짜지않고 요청과 응답시에 이미 바디/헤더/MIME으로 구분을해서 서로 상호응답을 하도록 설계되어있다.
'JSP' 카테고리의 다른 글
#1 JSP Project 06(Blog) - 로그인/로그아웃 (0) 2021.06.30 #1 JSP Project 05(Blog) - Ajax(회원가입 계속) (0) 2021.06.30 #1 JSP Project 04(Blog) - 회원가입 (0) 2021.06.27 #1 JSP Project 03(Blog) - 프로젝트 전체 구조 (0) 2021.06.26 #1 JSP Project 01(Blog) - 환경설정 (0) 2021.06.24