전체 글
[Web] 서버 성능 테스트 종류와 도구 및 대규모 트래픽 상황 대비
0. 성능 테스트의 필요성 - 서버 개발을 완료하고 오류 없이 동작한다고 해도, 실제 서비스에서는 많은 사람들이 동시에 서버에 접속하기 때문에 서버에 부하 발생 - 이 과정에서 여러 문제점이 발견될 수 있다- 또한, 서비스가 운영되는 과정에서 서비스 트래픽이 성장세에 있을 때 추가적인 자원이 필요할 수도 있다- 서버 개발자는 이러한 문제점을 사전에 방지하기 위해 성능 테스트가 필요하다 1. 성능 테스트 (Performance Test)시스템 구성 요소가 특정 상황에서 어떤 성능을 보이는지 확인하기 위해 수행되는 테스트제품의 리소스 사용, 확장성 및 안정성을 검증할 수 있다- 성공적인 성능 테스트는 DB, 네트워크, SW, HW 등과 관련된 대부분의 성능 문제를 예측한다- 성능 테스트의 종류에는 ..
[Spring] JSP와 Spring에서의 Forward와 Redirect : InternalResourceView / RedirectView
JSP에서 한 서블릿에서 다른 서블릿 / JSP로 요청를 전달할 때 사용하는 방법인 Forward & Redirect에 대해 알아보고, Spring에서 이들을 어떻게 처리하는지 알아보자! 1. Forward "내가 물어보고 알려줄게" - 웹 애플리케이션에서 한 서블릿에서 다른 리소스(Servlet, JSP, HTML)로 요청을 전달 (총 요청 1번) - 클라이언트로 요청을 전달하는 것이 아니라 서버 내 다른 리소스 호출 - 기존 request 정보가 유지되어 조회 가능 1.1. Forward 예시 코드 @Controller public class TestController { @GetMapping("/test") public String test(HttpServletRequest request) { ..
[Spring] URL 매핑 : URL 패턴 Servlet URL Mapping / DispatcherServlet
1. URL 패턴 - URL 패턴 규칙을 생각하고 매핑 설정을 해야, 예상한 Servlet / Controller으로 요청할 수 있다 - Servlet과 Spring 모두 아래 URL 패턴 규칙을 사용 가능하다 (1. 2. ... : 우선순위) 종류 URL pattern 매칭 URL 1. exact mapping /test/hello.do http://localhost/syun/test/hello.do 2. path mapping /test/* http://localhost/syun/test/ http://localhost/syun/test/hello http://localhost/syun/test/hello.do http://localhost/syun/test/cat 3. extension mappin..
[Web] 서블릿 필터 (Servlet Filter)
서블릿 필터(Servlet Filter)란? Client로부터 Server로 요청이 들어오기 전, 서블릿을 거쳐 필터링 하는 것 - 공통적인 요청 전처리와 응답 후처리에 사용 • 인증, 로깅, 인코딩 등 • 전처리 / 후처리 코드의 중복 제거에 유용하다 - 보통 하나의 필터를 사용하지만 여러 개의 필터를 사용할 수 있다 • Filter1 전처리 → Filter2 전처리 → Servlet → Filter2 후처리 → Filter1 후처리 Filter 인터페이스 필터를 설정하는 FilterConfig, FilterChain, Filter 객체 필요 - FilterConfig, FilterChain 인터페이스를 상속받은 클래스들은 웹 컨테이너가 구현 - Filter에 필요한 건사용자 정의 필터 클래스는 ja..
[Web] JSP란? JSP 호출과정 / 기본객체 / EL / JSTL
1. JSP 란? Java Server Page - HTML 코드에 Java 코드를 넣어 동적 웹페이지를 생성하는 웹 애플리케이션 도구 - JSP가 실행되면, Java Servlet으로 변환되며 웹 애플리케이션 서버에서 동작되면서 필요한 기능을 수행하고 생성된 데이터를 웹 페이지와 함게 클라이언트로 응답한다 - HTML 코드 작성이 편해지지만, 비즈니스 로직 또한 JSP 파일에 같이 존재 (→ SRP 어긴다 → 유지보수가 어려워진다) 2. JSP 호출과정 - 확장자가 *.jsp인 요청은 모두 JspServlet이 받는다 - 첫 번째 호출에만 JSP를 변환 → 컴파일 → 객체 생성 (시간 지연 有) 두 번째 호출부터는 객체 생성 없이 service() 메서드 응답 - JSP가 변경되면 다시 변환 → 컴파일..
[Web] 서블릿(Servlet)이란? JSP와 MVC 패턴으로의 변화
HttpServletRequest 객체나 WAS에 대해 공부할 때 나온 Servlet이란 무엇일까? 어렴풋이 비즈니스 로직을 처리해서 결과를 전달해준다는 느낌은 오는데, 구체적으로 알아보자 그리고 서블릿을 어떻게 발전시켜 지금의 MVC 구조가 나왔는지도 알아보자! 1. 서블릿(Servlet) 이란? 동적 웹페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로도 체계적으로 다룰 수 있게 한다 1.1. 서블릿의 주요 특징 - 클라이언트의 Request에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트 - Java 스레드를 이용하여 동작 - MVC 패턴에서 Controller로 이용 - 컨테이너에서 실행 - 보안 기능을 적용하기 쉬움 - 기본..
[Spring] MVC 패턴이란? Model / View / Controller / 메인 메서드 반환타입
0. 관심사의 분리 - OOP 5대 설계원칙 : SOLID • SRP : 단일 책임의 원칙 (하나의 메서드는 하나의 책임(Concern)) - 좋은 객체지향 설계를 위한 분리 1. 관심사 분리 2. 변하는 것(Common) / 변하지 않는 것(Uncommon) 분리 3. 공통코드 (중복코드) 1. MVC 패턴이란? - 소프트웨어를 Model - View - Controller의 3가지 구성 요소로 구분한 개발 방법론이다 - 사용자가 Controller를 조작 → Controller는 Model을 통해 데이터를 가져옴 → 데이터를 바탕으로 View를 통해 시각적 표현을 제어하여 사용자에게 전달 - Model : 정보 및 데이터 부분. 데이터와 관련한 값과 기능을 가지는 객체 - View : 입력값, 체크박..
[Java] Model : DTO / VO / DAO / Utility
모델 (Model) 이란? - 객체지향 프로그래밍에서 클래스를 역할에 따라 부르는 이름 - [현실적]객체_Object = [프로그래밍적] 클래스_Class = [소프트웨어공학적] 모델_Model - 모델의 종류 1. 시작 클래스 2. DTO, VO Model : 데이터를 담는 (이동) 모델 3. DAO Model : 데이터 처리(DB)를 하는 모델 4. Utility Model : 도움(Utility)을 주는 모델 DTO / VO Model Data Transfer Object, Value Object - 데이터를 하나로 묶어야 하는 경우, 데이터를 하나로 수집하는 바구니 역할을 하는 모델 ex. 자동차 관련 14개의 변수를 14개의 매개변수로 메서드에 전달 → CarDTO 클래스 생성하여 매개변수 1개..
[Spring] HttpServletRequest, HttpServletResponse 객체
HttpServletRequest - HTTP 프로토콜의 요청 정보를 서블릿에 전달하기 위해 사용 - 헤더정보, 파라미터, 쿠키, URI, URL 등의 정보를 읽어들이는 메서드 포함 - Body의 Stream 읽는 메서드 포함 - 예제 코드 Enumeration enum = request.getParameterNames();// 파라미터 이름들 (iterator) Map paramMap = request.getParameterMap(); // 파라미터 값들 map 형태로 (key-value) String[] yearArr = request.getParameterValues("year"); // name이 "year"인 value 모두 String year = request.getParameter("yea..
[Web] HTTP 응답 상태코드와 요청 메서드(GET / POST)
HTTP 응답 상태코드의 의미 상태코드 의미 1xx Informational (클라이언트-서버 간 정보 교환 목적, 잘 사용되지 않는다) 2xx Success 3xx Redirect (다른 URL 요청) 4xx Client Error (ex. 404 Not Found: 클라이언트가 잘못 요청한거임) 5xx Server Error (ex. 서버 처리 중 에러, 클라이언트 요청은 정상) GET - 주로 데이터를 읽거나(Read) 검색(Retrieve)할 때 사용되는 메서드 • ex. 검색엔진에서 검색 단어 전송, URL 내 제품 ID - Query String을 통해 데이터를 전달 (소용량, Body 내용 없음) • URL에 데이터가 노출되기 때문에 보안에 취약하다 POST - 주로 새로운 리소스를 생성(C..