Spring
-
서블릿, JSP, MVC 패턴
서블릿 만으로 회원관리 웹 만들기 싱글톤 패턴은 객체를 단 하나만 생성해서 공유해야 하므로 생성자를 private 접근자로 막음 request로 받은 데이터로 Member객체를 만들어 저장 후, html로 응답한다. 서블릿 덕분에 동적으로 원하는 HTML을 마음껏 만들 수 있지만 매우 비효율 적이고 복잡하다. 이것이 템플릿 엔진이 나온 이유이다. 템플릿 엔진을 사용하면 HTML 문서에서 필요한 곳만 코드를 적용해서 동적으로 변경할 수 있다. 템플릿 엔진에는 JSP, Thymeleaf, Freemarker, Velocity 등이 있다. JSP로 회원관리 웹 만들기 JSP는 자바 코드를 그대로 다 사용할 수 있다. 자바의 import 문과 같다. 이 부분에는 자바 코드를 입력할 수 있다. 이 부분에는 자바 ..
2023.08.10
-
서블릿
Hello 서블릿 - 스프링 부트는 서블릿을 직접 등록해서 사용할 수 있도록 @ServletComponentScan 을 지원한다. @WebServlet 서블릿 애노테이션 name: 서블릿 이름 urlPatterns: URL 매핑 - HTTP 요청을 통해 매핑된 URL이 호출되면 서블릿 컨테이너는 service 메서드를 실행한다. HttpServletRequest역할 HTTP 요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편하다. 서블릿은 개발자 대신에 HTTP 요청 메시지를 파싱한다. 그리고 그 결과를 HttpServletRequest 객체에 담아서 제공한다. 파싱이란 - 데이터를 분해 분석하여 원하는 형태로 조립하고 다시 빼내는 프로그램을 말한다. POST요청은 포스트맨을 통해 받아볼 ..
2023.07.13
-
웹 애플리케이션 이해
쓰레드 - 애플리케이션 코드를 하나하나 순차적으로 실행하는 것 - 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행 - 쓰레드는 한번에 하나의 코드 라인만 실행한다. 만약에 요청마다 쓰레드를 생성하면 동시 요청을 처리할 수 있고, 하나의 쓰레드가 지연되어도, 나머지 쓰레드는 정상 동작한다. 하지만 쓰레드 비용은 매우 비싸고, 고객 요청이 너무 많으면, CPU, 메모리 임계점을 넘어서 서버가 죽을 수 있다. 쓰레드 풀 - 필요한 쓰레드를 쓰레드 풀에 보관하고 관리한다. - 쓰레드가 필요하면, 생성되어 있는 쓰레드를 꺼내서 사용한다. - 사용을 종료하면 쓰레드를 반납한다. 쓰레드가 이미 생성되어 있으므로, 쓰레드를 생성, 종료하는 비용이 절약되고 응답 시간이 빠르다. 생성 가능한 쓰레드의..
2023.07.12
-
HTTP -3
HTTP 상태코드 요청이 잘 처리되었는지 응답이 올 때 알려주는 기능이다. 1xx(informational) = 요청이 수신되어 처리 중 2xx(Successful) = 요청 정상 처리 3xx(Redirection) = 요청이 완료하려면 추가 행동이 필요 4xx(Client Error) = 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 5xx(Server Error) = 서버 오류, 서버가 정상 요청을 처리하지 못함 리다이렉션 이해 - 영구 리다이렉션 - 특정 리소스의 URI가 영구적으로 이동 ex) /members => /users301, 308301 = 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있다.308 = 301과 기능이 같음, 본문이 유지된다. - 일시..
2023.07.05
-
HTTP - 2
HTTP 메서드 URI는 리소스만 식별한다. 리소스와 해당 리소스를 대상으로 하는 행위를 분리 - 리소스 : 회원 - 행위 : 조회, 등록, 삭제, 변경 리소스는 명사, 행위는 동사 (미네랄을 캐라) 행위의 구분은 GET, POST 같은 HTTP 메서드로 구분한다. HTTP 메서드 - GET, POST GET : 리소스 조회 POST : 요청 데이터 처리, 주로 등록에 사용 PUT : 리소스를 대체, 해당 리소스가 없으면 생성 PATCH : 리소스 부분 변경 (회원의 이름을 바꾸거나 등등) DELETE : 리소스 삭제 GET - 서버에 전달하고 싶은 데이터는 query (쿼리 파라미터, 쿼리 스트링)를 통해서 전달 - 메시지 바디를 사용해서 데이터를 전달할 수 있지만 권장하지 않음 POST - 메시지 바..
2023.07.04