1. 관심사의 분리 위의 코드는 요일을 출력해주는 코드로 크게 세 가지 영역으로 나눌 수 있다. 입력을 처리하는 부분, 입력받은 날짜를 가지고 요일을 계산하는 부분(실제 작업 처리), 계산한 결과를 출력하는 부분 이 하나하나를 관심사(concern)이라 부른다. 즉 main이라는 메서드는 3개의 관심사를 가지고 있다고 할 수 있다. OOP 5대 설계 원칙(SOLID) 중 첫 번째인 SRP(단일 책임원칙)에 의하면 '하나의 메서드는 하나의 책임만 진다'라는 뜻을 가진다. 여기서 책임은 관심사라 할 수 있다. 하지만 지금 위의 코드는 하나의 메서드에 세 가지의 관심사가 포함되어 있으므로 분리를 시켜줄 필요가 있다. 객체지향적으로 좋은 설계를 하려면 분리를 잘해야 한다. 분리는 아래의 3가지를 기준으로 한다...
텍스트 파일 vs 바이너리 파일 데이터는 크게 숫자와 문자로 구분된다. 텍스트 파일과 바이너리 파일의 구별 메모장에 넣었을 때 읽기 어려운 파일이 바이너리 파일이다. 문자와 숫자가 같이 섞여 있기 때문에❗깨진 것은 전부 숫자이다. 파일종류 쓰기 읽기 바이너리 문자 → 문자 숫자 → 숫자 문자 → 문자 숫자 → 숫자 텍스트 문자 → 문자 숫자 → 문자 문자 → 문자 문자 → 숫자 바이너리 파일 : 데이터를 있는 그대로 읽고 쓴다. 텍스트 파일 : 숫자를 문자로 변환 후 쓴다. 예를 들어 바이너리 파일은 숫자 15에 대해서 그대로 15로 쓰지만 텍스트 파일은 숫자 15를 '1' '5' 이런식으로 변환한다. 텍스트 파일의 장점은 사람이 이해하기 쉽다. 바이너리 파일은 사람이 봐서는 이해하기 힘들다. MIME(..
1. 프로토콜이란(Pprotocol)이란? 서로 간의 통신을 위한 약속, 규칙 주고받을 데이터에 대한 형식을 정의한 것 어떤 형식으로 주고받을지 미리 약속을 해놔야 데이터를 주고받고 그 데이터를 해석할 수 있다. 2. HTTP(Hyper Text Transfer Protocol)란? HTTP는 텍스트 기반의 프로토콜이다. 단순하고 읽기 쉽다. 요청과 응답 사이에 텍스트 들이 왔다 갔다 하는 것이다. 상태를 유지하지 않는다는 특징이 있다.(stateless) - 클라이언트 정보를 저장 x 즉 같은 클라이언트가 요청을 여러번 보내도 서버는 같은 클라이언트라는 것을 구별하지 못한다. 상태를 저장하지 않기 때문에…. 앞의 요청과 뒤의 요청을 구별할 수 없다. 이것을 보안하기 위해서 하용하는 것이 쿠키와 세션이다..
톰캣의 설정 파일 - server.xml, web.xml -톰캣 설치경로/conf/server.xml: Tomcat 서버 설정 파일 -톰캣 설치경로/web.xml: Tomcat의 모든 web app의 공통 설정 -웹앱 이름/WEB-INF/web.xml: web app의 개별 설정 WEB-INF -> web.xml(개별 설정 담당) WEB-INF -> web.xml은 서블릿을 등록 및 URL 매핑 작업을 하는 파일이다. XML설정을 애너테이션으로 변경 가능한데 스프링에서는 등록하는 것을 @Controller 대신하고, URL매핑은 @RequestMapping 대신한다. 서블릿에서는 @WebServlet을 사용 원래는 위와 같이 XML에서 등록하고 매핑하고를 해야 하지만 여러 사람이 XML 파일을 건드려야 ..
클라이언트와 서버 - 클라이언트 : 서비스를 요청하는 애플리케이션(or 컴퓨터) - 서버 : 서비스를 제공하는 애플리케이션(or 컴퓨터) HttpServletRequest @Controller public class RequestInfo{ @RequestMapping("/requestInfo") public void main(HttpServletRequest request){ Syste.out.println("request.getMethod()=" + request.getMethod()); } } 위와 같이 서블릿에서 메서드의 매개변수에는 request 및 response를 필수적으로 적어줘야 했지만 스프링에서는 필요한 매개변수만 넣을 수 있다. 필요한 매개변수만 적으면 스프링이 알아서 메서드의 매개변수..
HttpServletRequest 메서드 @Controller public class RequestInfo { @RequestMapping("/requestInfo") // public static void main(String[] args) { public void main(HttpServletRequest request) { System.out.println("request.getCharacterEncoding()="+request.getCharacterEncoding()); // 요청 내용의 인코딩 System.out.println("request.getContentLength()="+request.getContentLength()); // 요청 내용의 길이. 알수 없을 때는 -1 System.ou..