1. 관심사의 분리 위의 코드는 요일을 출력해주는 코드로 크게 세 가지 영역으로 나눌 수 있다. 입력을 처리하는 부분, 입력받은 날짜를 가지고 요일을 계산하는 부분(실제 작업 처리), 계산한 결과를 출력하는 부분 이 하나하나를 관심사(concern)이라 부른다. 즉 main이라는 메서드는 3개의 관심사를 가지고 있다고 할 수 있다. OOP 5대 설계 원칙(SOLID) 중 첫 번째인 SRP(단일 책임원칙)에 의하면 '하나의 메서드는 하나의 책임만 진다'라는 뜻을 가진다. 여기서 책임은 관심사라 할 수 있다. 하지만 지금 위의 코드는 하나의 메서드에 세 가지의 관심사가 포함되어 있으므로 분리를 시켜줄 필요가 있다. 객체지향적으로 좋은 설계를 하려면 분리를 잘해야 한다. 분리는 아래의 3가지를 기준으로 한다...
1. 프로토콜이란(Pprotocol)이란? 서로 간의 통신을 위한 약속, 규칙 주고받을 데이터에 대한 형식을 정의한 것 어떤 형식으로 주고받을지 미리 약속을 해놔야 데이터를 주고받고 그 데이터를 해석할 수 있다. 2. HTTP(Hyper Text Transfer Protocol)란? HTTP는 텍스트 기반의 프로토콜이다. 단순하고 읽기 쉽다. 요청과 응답 사이에 텍스트 들이 왔다 갔다 하는 것이다. 상태를 유지하지 않는다는 특징이 있다.(stateless) - 클라이언트 정보를 저장 x 즉 같은 클라이언트가 요청을 여러번 보내도 서버는 같은 클라이언트라는 것을 구별하지 못한다. 상태를 저장하지 않기 때문에…. 앞의 요청과 뒤의 요청을 구별할 수 없다. 이것을 보안하기 위해서 하용하는 것이 쿠키와 세션이다..
클라이언트와 서버 - 클라이언트 : 서비스를 요청하는 애플리케이션(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..
원격 프로그램 실행 브라우저와 WAS가 있어야만 실행이 가능하다. 외부의 브라우저로 서버에 있는 프로그램을 실행하기 위해서는 두 가지 작업이 미리 필요하다. 1. 프로그램등록 : 프로그램을 외부에서 호출할 수 있게 미리 등록해 줘야한다. 2. URL과 프로그램을 연결시켜 줘야 한다. @Controller // 1. 프로그램 등록 public class Hello{ @RequestMapping("/hello") // 2. URL과 main()을 연결 public void main(){ System.out.println("Hello); } URL로 원격 프로그램을 호출하면 톰캣이 객체 생성을 한다. 이후 메서드 호출이 된다. 그러므로 main메서드가 인스턴스 메서드임에도 불구하고 호출이 될 수 있다. 메서드..