Goal : 상속이 무엇인지 알아보고, 코드에서는 어떻게 구현되는지 알아본다. 상속이란? 객체 지향 프로그래밍(OOP)에서, 상속(inheritance)은 객체들 간의 관계를 구축하는 방법이다. 클래스로 객체가 정의되는 고전 상속에서, 클래스는 기반 클래스, 수퍼클래스, 또는 부모 클래스 등의 기존의 클래스로부터 속성과 동작을 상속받을 수 있다. 그 결과로 생기는 클래스를 파생 클래스, 서브클래스, 또는 자식 클래스라고 한다. 상속을 통한 클래스들의 관계는 계층을 형성한다. 프로토타입 기반 프로그래밍에서는, 객체가 클래스를 따로 정의할 필요 없이 다른 객체로부터 직접 정의될 수 있다. 이러한 특징을 차등 상속이라고 부른다. 백문이 불여일타. 코드로 개념을 이해해보자! 예제 1. 필수 값이 없는 부모 클래..
window용 sts 단축키 구분 단축키 ctrl + shift + r 특정 파일 검색 및 조회 ctrl + shift + o import class ctrl + shift + f 자동 정렬 control + d 해당라인 삭제 control + l 해당라인으로 이동 control + w 해당 작업 파일 작업라인에서 제거 control + m project exploer 노출 및 비노출 control + e 최근 작업 파일 조회 control + f 해당 파일 내에서 특정 문자열 검색 control + h 전체 파일 내에서 특정 문자열 검색 alt + 방향키 위 해당라인 한 줄 위 방향으로 alt + 방향키 아래 해당라인 한 줄 아래 방향으로 alt + shift + r 해당 변수와 동일한 변수 선택 후 ..
view 분리 개요 모든 컨트롤러에서 뷰로 이동하는 부분이 중복이다. String viewPath = "/WEB-INF/views/members.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); 해결방안 중복을 해결하기 위해 별도로 뷰를 처리하는 객체를 만든다. Goal : 기존 코드를 최대한 유지하면서, 뷰를 분리해본다. View 분리 v2 구조 아키텍쳐 MyView 객체 hello/servlet/web/frontcontroller/MyView.java package hello.servlet.web.frontcontroller; import jav..
프론트 컨트롤러 패턴 소개 공통의 관심사를 별도로 모으는 소위 문지기 역할을 하는 것을 controller앞에 도입한다. 프론트 컨트롤러 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 입구를 하나로 공통 처리 가능 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨. 스프링 웹 MVC와 프론트 컨트롤러 스프링 웹MVC의 핵심도 바로 프론트컨트롤러이며 스프링 웹MVC의 DispatcherServlet이 프론트 컨트롤러 패턴으로 구현되어 있음 프론트 컨트롤러 도입 전 과 후의 아키텍쳐 Goal : 기존 코드를 최대한 유지하면서, 프론트 컨트롤러를 도입해본다. 먼저 구조를 맞추어두고 점진적으로 리팩토링을 한다. 프론트..
Goal : 구성이 무엇인지 알아보고, 코드에서는 어떻게 구현되는지 알아본다. 요구사항 Fan Class State (Member Variables) make radius; color; isOn; speed; Constructors Fan(String make, double radius, String color) Behaviour(Member Methods) void switchOn() void switchOff() void setSpeed() String toString() using String.format method state, constructor, methods Fan Class package com.in28mins.oop; public class Fan { //state (3 importan..
MVC 패턴의 개요 너무 많은 역할 : 하나의 서블릿이나 JSP만으로 비지니스 로직과 뷰 렌더링까지 모두 처리하게 되면 유지보수가 어려워진다. 변경의 라이프 사이클 : UI와 비지니스 로직을 수정하는 일은 다르게 발생하고 서로에게 영향을 주지 않으므로 유지보수에 부적합 기능 특화 : 특히 JSP와 같은 뷰 템플릿 화면은 렌더링하는데 최적화 ModelViewController MVC 패턴이란 하나의 서블릿이나 JSP로 처리하던 것을 컨트롤러(Controller)와 뷰(View)라는 영역으로 역할을 나누는 것을 의미한다. 구분 역할 컨트롤러 HTTP 요청을 받아 파라미터를 검증하고 비지니스로직을 호출한다. 그리고 뷰에 전달할 결과 데이터를 조회하여 모델에 담는다 모델 뷰에 출력할 데이터를 담아둔다. 뷰가 필..
JSP로 회원 관리 웹 어플리케이션을 만들어 보자 JSP 라이브러리 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' //JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper:' implementation 'javax.servlet:jstl:1.2' //JSP 추가 끝 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-..
알고리즘이란? 문제를 해결하기 위한 것으로, 명확하게 정의되고 순서가 있는 유한 개의 규칙으로 이루어진 집합 세 값의 최댓값 구해보기 package com.in28minutes.algorithm; import java.util.Scanner; public class Max3 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.println("세 정수의 최대 값을 구합니다"); System.out.print("a의 값 : "); int a = stdIn.nextInt(); System.out.print("b의 값 : "); int b = stdIn.nextInt(); System.out.pr..
Goal : 생성자는 무엇인지 알아보고 메서드와 차이를 알아본다. Constructor 생성자란 ? 생성자(영어: constructor, 혹은 약자로 ctor)는 객체 지향 프로그래밍에서 객체의 초기화를 담당하는 서브루틴을 가리킨다. 생성자는 객체가 처음 생성될 때 호출되어 멤버 변수를 초기화하고, 필요에 따라 자원을 할당하기도 한다. 객체의 생성 시에 호출되기 때문에 생성자라는 이름이 붙었다. 생성자는 대체로 멤버 함수와 같은 모양을 하고 있지만, 값을 반환하지 않는다는 점에서 엄밀한 의미의 함수는 아니다. A constructor is a member function of a class that is called for initializing objects when we create an object..
HTTP 응답 메세지는 주로 다음 내용을 담아서 전달한다 단순 텍스트 응답 writer.println("ok"); HTML 응답 HTTP API - MessageBody JSON 응답 HTML 응답 @WebServlet(name="responseHtmlServlet", urlPatterns = "/response-html") public class ResponseHtmlServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Content-Type: text/html; cha..