전체 글

우리는 웹 브라우저를 사용할 때, 클라이언트 인터넷 서버 위와 같은 통신을 사용한다. 이때, HTTP 프로토콜이라는 응용 계층의 프로토콜을 사용하여 통신한다. 아래는 스프링 MVC를 시작하기 앞서 알아두어야 할 기초 개념들을 설명해 놓았다. 1. 웹 서버란? 2. 웹 애플리케이션 서버란? 3. 웹 서버와 웹 애플리케이션 서버의 사용 4. 웹 애플리케이션 서버의 서블릿에 대하여 5. 쓰레드 풀 천천히 살펴보자. 1. 웹 서버란? 웹 서버는 HTTP기반으로 동작하는 정적 리소스(HTML, CSS, JS, 이미지, 영상)을 다루는 서버이다. 2. 웹 애플리케이션 서버란? WAS(Web Application Server)는 웹서버 + 프로그램 코드이다. 예시로 톰캣이 있다. 3. 웹 서버와 웹 애플리케이션 서버..
지금까지는 스프링MVC에서 request, response를 다루는 방법을 알아보았다. 이번 글은 그 과정에서 파라미터로 받는 객체(Model, HttpEntity), return 값(url, String) 등은 어떻게 처리되는지에 대하여 알아볼 것이다. 위의 그림 간단 설명 1. 요청이 들어오면, 핸들러 조회 후 핸들러 어댑터는 알맞은 핸들러(컨트롤러)를 호출하여, 로직을 수행한다. 이때, Argument Resolver는 컨트롤러에 필요한 객체를 생성하고 파라미터로 전달해준다. 2. 핸들러에서 return 하는 반환값은 ReturnValue Handler가 값을 변환하고 처리해서 view로 보여주게 된다. =====================================================..
지금까지는 HttpRequest에 대해서 다루는 방법을 알아보았다. Request를 통해 데이터가 들어오면 Controller에서는 매핑을 통해 제일 먼저, RequestParam이나 body의 json 데이터를 받고, 처리 후 view나(return "view") json, text 등(@ResponseBody)을 반환한다. 이때, 반환하는 view는 정적, 혹은 동적으로 반환될 수 있는데, 이것을 알맞게 응답해주는 방법을 알아볼 것이다. 1. 정적 resource(view) 스프링의 파일 구조를 보면, src/main/resources가 있다. resources아래에는 static과 templates가 있는데, -static : 정적 view가 들어갈 수 있음 -templates : 동적 view가 ..
HTML Form 형식의 데이터는 요청 파라미터로 인정되어 getParameter나, @RequestParam을 통해 받아줄 수 있었다. 하지만, HTTP 요청 메시지처럼 Body에 바로 담겨오는 데이터는 받을 수 없었다. 지금부터 위의 말처럼 Body에 바로 담겨오는 HTTP 요청 메시지를 다뤄보는 것을 배워보겠다. ============================================================================================ 1. 요청 메시지 -- 단순 텍스트 요청 메시지는 body에 포함되어 요청으로 오게 된다. 이때 body에 단순 텍스트가 오게 되면, 우리는 Stream의 형태로 받아주어야 한다. *************************..
지금까지 요청 매핑을 알아보았다. 1. 리소스와 HTTP 메소드를 통해 큰 틀을 설계해보았다. 2. GET, POST 등의 메소드 사용 방법을 알아보았다. 하지만, 실질적으로 그 메소드를 사용할 때 어떻게 데이터를 다루는지에 대해서는 아직 모른다. 이제부터 데이터를 다루는 방법을 알아본다. -데이터를 다루는 방법을 알아본 후 설계된 매핑과 같이 사용을 하는 방법을 알아보겠다.(이번 글은 데이터를 다루는 방법만) 코드를 보기에 앞서, 클라이언트에서 서버로 요청 데이터를 전달할 때 주로 사용하는 방법이 있다. 1. GET - 쿼리 파라미터를 통한 데이터 전달 ex)localhost:8080/mapping/users?username=jeong&age=20 -?뒤에 들어가는 부분이 쿼리 파라미터이다. -GET방..
· 알고리즘
문제: input.txt 파일에 있는 10만 개의 데이터를 읽어서 퀵 정렬을 한 후, 정렬된 데이터를 output.txt에 저장해라. 퀵 정렬이란? 1. 피벗을 기준으로 모든 배열안의 큰 수를 오른쪽, 작은 수를 왼쪽에 정렬한다. 2. 그 후 마지막 작은 수(피벗기준)의 위치와 피벗의 위치를 바꿔준다. 3. 0~(바뀐 위치 - 1), (바뀐 위치 +1)~마지막으로 분할 후 다시 퀵정렬을 각각해준다. i를 low+1이라 정의, j를 top이라 정의 여러 경우들 1. 1,2,3같이 이미 정렬이 되어 있는 경우 2. 2,1같이 i, j가 같은 곳에서 시작되는 경우 3. 1,2같이 i, j가 같은 곳에서 시작되고, 정렬이 되어있는 경우 ->i가 top을 넘어갈 수 있으면, 해결된다. #include void q..
클라이언트에서 요청이 들어올 때, 특정 url을 인식하고, 메소드를 실행시켜주는 것을 매핑이라고 한다. 보통 @RequestMapping("/url") public String Basic(){ log.info("Basic"); return "viewname"; } 위와 같은 형태의 코드로 이루어져 있다. -localhost:8080/url 시 Basic 메소드 실행 후(log 출력) viewname이라는 html 파일이나 뷰를 보여준다. @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); @RequestMapping("/hello-basic") public Strin..
평소 input과 output의 확인을 위해서 System.out.println() 같은 콘솔을 통해 확인하는 방법을 사용한다. 하지만, 이는 결국 리소스를 사용해야하므로, 실무나 운영시스템에서는 사용하지 않는다. 우리는 input과 output을 사용하기 위해 logging을 사용할 수 있다. package hello.springmvc.basic; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController //..
쥐4
결국 이기는 개발자