25/03/25 (화)
목이 아픈게 서서히 낫고있습니다.
주짓수를 슬슬 갈수도있겠네요.
오늘은 새로운 조 편성과 드디어 백엔드를 본격적으로 공부하는 날입니다.
힘내서 집중해보겠습니다.
강의
- 강의 목차
스프링 프레임워크 (17일), REST API (10일)
- HTTP, Servlet, JSP (2일)
- Spring 배경지식, DI, AOP (2일)
- Spring MVC + DB + Mybatis (7일)
- JPA (4~5일)
- Spring Boot + DB + JPA (5일)
- Spring Boot + REST + jUnit + Secutiry + OAuth2 + AWS 연동 (5일)
AWS (3일)
- HTTP 개요
https://developer.mozilla.org/ko/docs/Web/HTTP/Guides/Overview
HTTP 개요 - HTTP | MDN
HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버
developer.mozilla.org
프로토콜 구조
- TCP : 데이터가 다 도착했나 검사 (웹사이트)
- UDP : 데이터 로스 어느정도 인정 (라디오)
- HTTP의 가장 큰 특징 : 상태를 저장하지 않음 (Stateless), 세션은 있음
- 전형적인 HTTP 세션
요청 메서드
- GET, POST, OPTIONS
응답 상태 코드
- 2XX(긍정적), 3XX(진행이 더 필요), 4XX(Request가 잘못된 상황), 5XX(Backend 오류)
- HTTP 메시지
헤더
- Access-Control-Allow-Origin
- HTTP 쿠키
- 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각
- 브라우저는 그 데이터 조각들을 저장해 놓았다가, 동일한 서버에서 재 요청 시 저장된 데이터 함께 전송
- 두 요청이 동일한 브라우저에서 들어왔는지 아닌지 판단할 때 주로 사용
- stateless한 HTTP 프로토콜에서 상태 정보를 기억시켜 줌 (로그인 상태 유지할 때 사용)
- 목적 : Session management, Personalization, Tracking
Client 기억
- Cookie only (문자열)
- Session (Cookie 필요/객체)
Cookie와 Session은 HTTP의 Stateless를 극복하기 위해 탄생
- HTTP 리다이렉트
- URL Redirection 또는 Forwarding은 페이지 단위의 실제 리소스, 폼 혹은 전체 웹 애플리케이션이 다른 URL에 위치하고 있는 상태에서 링크를 존속시키는 기술
- 3XX의 코드를 지님
Redirection
Forwarding
Servlet
- Tomcat
- Java 기반의 서블릿 컨테이너이자 웹 서버. JSP/Spring으로 웹사이트를 구축한다면 톰캣은 거의 반드시 사용 됨
- Apache : Web Server / Static
- Tomcat : Web Application Server / Dynamic
- main()을 Tomcat이 실행
- tomcat이 어떻게 우리가 작성한 코드를 실행할 수 있을까?
- Container vs Component <= 양쪽이 서로 미리 약속한 규칙이 존재
- 우리는 그 규칙대로 코딩
- Postman
- Rest API 테스팅 툴
- HttpServlet service()가 get, post 등 method를 확인하고 난 뒤 HelloServelt의 doGet, doPost를 호출
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
response.getWriter().append("<html><body><h1>Your username : " + username + "</h1></html>");
String password = request.getParameter("password");
System.out.println("Password : "+password);
}
JSP
- jsp는 compiler에 의해 servlet 변환
- HTML like 코드 <= Html 안에 java 코드를 위치
- sub url 방식 vs job parameter 방식 ( 프론트엔드와 협업 약속차이 )
package tomcat.tomcat;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
//도메인 업무를 서블릿으로 처리
//단순 CRUD를 위한 서블릿을 각각 만들지 않고, 업무별 세부 처리를 하나의 서블릿에서 처리하는 방식
// 1. sub url로 구분
// @WebServlet("/book/*")
// 도서목록 : /book/list
// 도서상세 : /book/detail
// 도서등록 : /book/insert
// 도서...
// 2. 업무 구분자를 parameter(job)로 사용
// 도서목록 : /book?job=list
// 도서상세 : /book?job=detail
// 도서등록 : /book?job=insert
// 도서...
// @WebServlet("/book/*")
@WebServlet("/book")
public class BookServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
//여러 요청을 처리
//sub url
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// System.out.println(request.getRequestURI());
// System.out.println(request.getContextPath());
//
// String job = request.getRequestURI().substring(request.getContextPath().length());
// switch(job) {
// case "/book/list" : list(); break;
// case "/book/detail" : detail(); break;
// case "/book/insert" : insert(); break;
// }
// }
//job parameter
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String job = request.getParameter("job"); //client에서 무조건 job이 전달된다
switch (job){
case "list" : list(); break;
case "detail" : detail(); break;
case "insert" : insert(); break;
}
}
private void list(){ System.out.println("list()"); }
private void detail(){ System.out.println("detail()"); }
private void insert(){ System.out.println("insert()"); }
}
마무리
- WorkShop
- (개인별) 자기소개(static)를 localhost tomcat 프로젝트로 전환하기
- 프로젝트명 : IntroduceMyself
- 조별 취합 시 구현 기능인 참여(form)을 변형해서 친구 맺기 기능을 (form) 구현
- html의 form element의 입력값 또는 선택값을 servlet에서 읽고 출력 (tomcat console)
- 기타 추가 기능은 알아서
- 정리
- TCP/IP
- TCP : 전송 조절 프로토콜(데이터 전달 보증O, 순서)
- IP : 인터넷 프로토콜(패킷 전달 여부 보증X, 순서X)
- 송신자가 수신자에게 IP 주소를 사용하여 데이터를 전달하고, 그 데이터가 제대로 갔는지, 제대로 받았다고 연락은 오는지에 대한 얘기를 하는 것
- Sesseion : 둘 이상의 개체가 정보 교환을 할 때, 개체들이 연결되어 있다는 것에 대한 정보
- Java EE와 Jakarta EE : 엔터프라이즈 애플래케이션 개발, 실행 하기 위한 기술과 환경 제공
- Jakarta EE는 Eclipse가 Java EE(오픈 소스)를 가져오며 이름을 바꿈(Java 저작권)
- 엔터프라이즈 애플리케이션 : 조직 운영의 다양한 프로세스 간소화, 자동화 하도록 설계된 대규모 소프트웨어 솔루션
- Servlet : 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술
- 비동기 처리 : 프로세스의 완료를 기다리지 않고 동시에 다른 작업을 처리하는 방식
- JavaServer Pages (JSP) : HTML 코드에 Java 코드를 넣어 동적웹페이지 생성하는 언어
- JSP가 실행되면 자바 서블릿으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능 수행
- 생성된 데이터 웹페이지와 함께 클라이언트로 응답
'LG 유플러스 유레카 > 스프링 프레임워크' 카테고리의 다른 글
[45일 차] 스프링 프레임워크 (Spring MVC) (0) | 2025.04.01 |
---|---|
[44일 차] 스프링 프레임워크 (Spring DI/AOP) (0) | 2025.03.31 |
[42일 차] 스프링 프레임워크 (BookManager Servlet + JSP(MVC)) (0) | 2025.03.26 |