본문 바로가기

백엔드 개발

관심사 분리와 MVC 패턴의 원리(1) 1. 클래스의 매개변수 정보를 보여주는 예제 public class MethodInfo { public static void main(String[] args) throws Exception{ // 1. YoilTeller 클래스의 객체를 생성 // YoilTeller 클래스의 모든 정보를 가진 클래스 객체 생성 (Yoilteller 설계도 훔쳐옴) Class clazz = Class.forName("com.fastcampus.ch2.YoilTellerMVC"); // 정보들을 이용해 YoilTeller의 객체를 생성 (설계도 사본으로 구현) Object obj = clazz.newInstance(); // 2. YoilTeller의 모든 매소드 정보를 가져와서 배열에 저장 Method[] methodA.. 더보기
관심사 분리와 MVC 패턴 (실습) MVC 패턴에 3가지 경우가 있음. Controller Method 의 반환 타입에 따라 나뉨 (1)String 반환형 //년월일을 입력하면 요일을 알려주는 프로그램 @Controller public class YoilTellerMVC { //http://localhost/ch2/getYoilMVC?year=2021&month=10&day=21 @RequestMapping("/getYoilMVC") //String 반환 메소드 -> 반환에 사용할 view를 지정 public String main(int year, int month, int day, Model model) throws IOException { // 유효성 검사, 년 월 일이 바르게 입력되지 않았다면, 에러를 표시하는 view를 이용해라 i.. 더보기
관심사 분리와 MVC 패턴에 대해 더보기
HTTP에서 Binary File을 전송하기 위한 방법 (MIME, Base64) 1. HTTP에서 왜 일반적으론 Binary File을 전송할 수 없는가? (1) 파일 종류 구분 Binary 파일 텍스트 파일 저장하는 내용 문자와 숫자 모두 저장 문자만 저장 가능 데이터 읽을 때 적힌 그대로 읽는다 . 문자 -> 문자로 읽음, 숫자 -> 숫자로 읽음 숫자는 문자로 변환 해서 읽는다. 문자 -> 문자 숫자 -> 문자 데이터 쓸 때 적힌 그대로 쓴다. 문자 -> 문자 숫자 -> 숫자 숫자도 문자로 변환 했기 때문에 문자만 쓴다. 문자 -> 문자 예시 이미지, 동영상 파일, 프로그램 글로 적힌 것 (2)왜 HTTP 에선 Binary file을 못 읽는가? HTTP는 텍스트 기반의 프로토콜, 일반적으로 텍스트 파일을 읽기 위해 디자인 되었다. 따라서 바이너리 파일을 읽으려면 다른 방법이 필.. 더보기
HTTP 요청과 이론 HTTP란 무엇인가? 요청메세지와 응답메세지의 구조, 내용이 어떻게 되는가? 1. HTTP란 무엇인가? HTTP (Hyper Text Transfer Protocol) : 텍스트 기반 전송 프로토콜이다. (1) Protocol (프로토콜)이란? Protocol은 데이터를 주고 받는 형식에 대한 약속이다. 코치와 투수가 사인을 약속했다고 치자. 모자는 번트 대기, 코는 희생 플라이를 쳐라, 귀 만지면 히트 앤 런 해라 이다. 두 사람이 서로 맞춘 사인이 프로토콜의 일종이다. 만약 투수가 사인들을 안 외웠다면 코치가 아무리 사인을 보내도 못 알아 먹을 것이다. 이와 마찬가지로, 클라이언트와 서버간에 프로토콜이 안 맞춰져 있으면, 클라이언트에서 아무리 요청을 보내도, 서버는 그 내용을 읽을 수 없다. (2) .. 더보기
설정 파일 - server.xml 과 web.xml 원격 프로그램을 서버에 설치 하려면 1. 서블릿에 프로그램 등록 2. URL과 등록된 프로그램 연결 이 필요했다. 스프링이 없던 옛날 옛날에는 이 모든 작업을 xml에서 했다. 이 복잡한 작업이 Spring의 Annotation으로 대체 된 것이다. 1. xml 설정 파일의 종류 이름 역할 특징 톰캣설치경로/conf/server.xml Tomcat 서버 설정 파일 스프링 프로젝트에 보이는 server.xml은 톰캣의 conf 폴더에 있는 server.xml의 복사본이다. 따라서 스프링 프로젝트에서 커스터 마이징 해도 본체에는 영향이 가지 않는다. 이를 이용해 하나의 프로젝트에 대해 여러가지 다른 서버 설정을 하고 돌릴 수 있다. (테스트 서버 설정, 베타 서버 설정 등 ) 톰캣설치경로/conf/web.x.. 더보기
클라이언트와 서버 1. 클라이언트에서 요청을 보내고 서버에서 해당 요청에 맞는 서비스를 어떻게 제공하는지 그 과정에 대해 자세히 다룸 2. 요청문 쿼리를 자세히 살펴보고, 요청에서 같이 보내온 값을 사용하는 자바 명령어에 대해 배움 1. 클라이언트와 서버 상호작용 과정 (1) 서버 요청이 포트에 들어오기 까지 Binding : 하나의 포트가 하나의 서버와 연결되어 있는 상태를 말한다. (서버와 포트는 1 대 1 연결만 가능하다.) listening : 하나의 서버가 포트에서 요청을 기다리고 있는 상태를 말한다. 파일 서버는 파일 서비스 제공, 이메일 서버는 이메일 서비스 제공, 웹 서버는 브라우저를 통해서 받을 수 있는 모든 서비스를 제공 ** WAS (Web Application Service)란? 웹 어플리케이션을 서.. 더보기
HTTP 요청과 응답 (예제) 1. 브라우저 새로 고침 할 때마다 랜덤 주사위가 나오는 예제 package com.fastcampus.ch2; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; // 해당 자바 클래스를 컨트롤러로 등록 // 컨트롤러로 등록하면, 브라우저(view)에서 어떤 요청이 왔을 때, // 이 클래스의 내용(model)과 일치하면 이 클래스를 쓰겠다고 선언하는 것임. // Contr.. 더보기