[Web] JSP란? JSP 호출과정 / 기본객체 / EL / JSTL
·
Web
1. JSP 란? Java Server Page - HTML 코드에 Java 코드를 넣어 동적 웹페이지를 생성하는 웹 애플리케이션 도구 - JSP가 실행되면, Java Servlet으로 변환되며 웹 애플리케이션 서버에서 동작되면서 필요한 기능을 수행하고 생성된 데이터를 웹 페이지와 함게 클라이언트로 응답한다 - HTML 코드 작성이 편해지지만, 비즈니스 로직 또한 JSP 파일에 같이 존재 (→ SRP 어긴다 → 유지보수가 어려워진다) 2. JSP 호출과정 - 확장자가 *.jsp인 요청은 모두 JspServlet이 받는다 - 첫 번째 호출에만 JSP를 변환 → 컴파일 → 객체 생성 (시간 지연 有) 두 번째 호출부터는 객체 생성 없이 service() 메서드 응답 - JSP가 변경되면 다시 변환 → 컴파일..
[Web] 서블릿(Servlet)이란? JSP와 MVC 패턴으로의 변화
·
Web
HttpServletRequest 객체나 WAS에 대해 공부할 때 나온 Servlet이란 무엇일까? 어렴풋이 비즈니스 로직을 처리해서 결과를 전달해준다는 느낌은 오는데, 구체적으로 알아보자 그리고 서블릿을 어떻게 발전시켜 지금의 MVC 구조가 나왔는지도 알아보자! 1. 서블릿(Servlet) 이란? 동적 웹페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로도 체계적으로 다룰 수 있게 한다 1.1. 서블릿의 주요 특징 - 클라이언트의 Request에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트 - Java 스레드를 이용하여 동작 - MVC 패턴에서 Controller로 이용 - 컨테이너에서 실행 - 보안 기능을 적용하기 쉬움 - 기본..
[Spring] MVC 패턴이란? Model / View / Controller / 메인 메서드 반환타입
·
Spring
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
·
Java
모델 (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 객체
·
Spring
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)
·
Web
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..
[Web] WAS란? 동적 / 정적 콘텐츠, Tomcat 요청 처리 과정
·
Web
0. 정적 - 동적 컨텐츠와 Web Server - WAS - 정적 컨텐츠 (Static Contents) • 요청 받은 파일 경로에 따라 항상 동일한 file contents를 반환 • ex) index.html, cat.jpg, style.css, hello.js • Web Server는 정적 컨텐츠를 반환한다 (대표적인 Web Server 종류 : Apache, Nginx 등) - 동적 컨텐츠 (Dynamic Contents) • 파라미터의 내용에 맞는 동적인 contents(프로그램의 결과물)를 반환 • WAS는 DB 조회, 로직 처리 등의 프로그램을 통해 처리한 동적 컨텐츠를 반환한다 (대표적인 WAS 종류 : Tomcat) 1. WAS 란? Web Application Server - DB 조..
[Java] Reflection API 알아보기
·
Java
런타임 단계에서 클래스 정보를 알아야 할 때 사용하기 좋은 도구인 Reflection API에 대해 알아보자! 0. 왜 필요할까? public static void main(String[] args) { Object obj = new Hello(); obj.main(); // Error } - 자바는 컴파일 시점에 타입을 결정 - Object 타입인 obj는 Hello 객체를 받아도 main 메서드를 실행할 수 없다 - 이런 경우에 Reflection API를 이용해, 런타임에 클래스의 이름만으로 클래스를 로딩하여 멤버를 사용할 수 있다! 1. Reflection API란? -구체적인 클래스 타입을 알지 못해도 클래스의 정보(메서드, 타입, 변수 등)에 접근할 수 있게 해주는 Java API • java..
[Java] JVM 구조와 메모리 영역
·
Java
1. JVM 구조 1.1. 클래스 로더 (Class Loader) - JVM 내로 클래스파일 (.class) 을 동적으로 로드 - 링크를 통해 메모리에 바이트코드를 배치 • 메모리에 로딩할 때, 모든 코드를 한번에 올리는 것이 아니라 어플리케이션에서 필요한 경우 동적으로 로딩 1.2. 실행 엔진 (Execution Engine) - 메모리에 로딩된 바이트 코드를 기계어(Binary Code)로 변경하여 명령어 단위로 실행 - 인터프리터(Interpreter)와 JIT(Just-In-Time) 컴파일러 두 가지 방식을 혼합하여 사용 • Interpreter : 명령어를 하나씩 실행 • JIT : 바이트 코드 전체를 컴파일하여 Native Code로 변경하여 캐싱해 두었다가 실행 - GC (Garbage C..
[BOJ / 백준] 2933번 미네랄 파이썬(Python) 문제 풀이
·
Baekjoon
문제 문제 링크 : https://www.acmicpc.net/problem/2933 2933번: 미네랄 창영과 상근은 한 동굴을 놓고 소유권을 주장하고 있다. 두 사람은 막대기를 서로에게 던지는 방법을 이용해 누구의 소유인지를 결정하기로 했다. 싸움은 동굴에서 벌어진다. 동굴에는 미네랄 www.acmicpc.net 풀이 💡 idea 1. 왼쪽 → 오른쪽 / 오른쪽 → 왼쪽 순서에 맞게 미네랄을 파괴한다 2. 파괴한 미네랄의 인접한 미네랄 덩어리(클러스터)를 찾아 떠있는 상태인지 확인한다 - 파괴한 미네랄과 인접 미네랄 : 파괴 이전에 같은 클러스터 3. 해당 클러스터가 떠있는 상태라면 떨어뜨리기! - 위 그림에서 보라색 미네랄이 파괴되었을 때, 오른쪽과 같이 인접해있는 파란색 미네랄 덩어리(클러스터)가..