전체 글
-
TIL 40th dayTIL(Today I Learned) 2021. 11. 30. 19:27
Spring MVC 제공기능 뷰리졸버 핸들러 어댑터를 통해 논리뷰 이름을 획득 -> ViewResolver 호출 -> 랜더링(JSP 실행) Controller 스프링 MVC를 사용할 수 있도록하는 어노테이션 Component를 포함(자동 빈 등록) @RequestMapping 핸들러와 어댑터를 지원 요청 정보를 매핑 해당 URL 호출 메서드 형식의 컨트롤러(핸들러)를 한곳에 통합할 수 있다.(관리가 수월) 중복되는 URL을 클래스 위에 RequestMapping("URL")로 선언할 수 있다. ModelAndView 논리뷰와, 랜더링할 때 필요한 model(파라미터 값을 저장하는) 기능을 포함한다. GetMapping, PostMapping HTTP 메서드인 Get, Post 기능을 제공한다. Reque..
-
TIL 39th dayTIL(Today I Learned) 2021. 11. 29. 23:47
spring mvc 기존에 해왔던 프론트 컨트롤러와 스프링 mvc는 비슷하거나 거의 같다. 다만, 이름만 다를 뿐이다. 스프링mvc는 핸들러 매핑, 핸들러 어댑터 등의 기능을 제공한다. 핸들러 매핑 핸들러 매핑을 통해 컨트롤러(핸들러)를 조회한다. 0순위인 RequestMappingHandlerMapping(가장 많이 사용)과 1순위인 BeanNameUrlHandlerMapping(요즘엔 거의 사용하지 않는다.)(빈의 이름으로 핸들러를 찾는다.)이 있다. 핸들러 어댑터 핸들러 매핑으로 조회된 핸들러를 핸들러어댑터를 통해 실행한다. 0순위 RequestMappingHandlerAdapter(가장 많이 사용) 1순위 HttpRequestHandler 2순위 SimpleControllerHandlerAdapt..
-
문자열 공백 url 인코딩하기자료구조 2021. 11. 28. 23:14
문자열 공백 인코딩 조건 문자열 길이가 정해졌고, 문자열 길이를 늘리지 않으면서 공백 하나당 %20으로 인코딩해주어라 해결방법) 문자열 안에 있는 문자들을 맨 끝으로 채워주면서 빈 공간이 생기면 %20을 채워주는 방식으로 해결 포인터와 인덱스를 사용 인덱스는 맨끝부터 포인터는 실제 문자열 끝자리에 둔다.포인터를 돌리면서 인덱스에 복사를 한다. 복사를 마치고 나면 포인터와 인덱스를 한칸씩앞으로 옮겨서 배열 전체를 돌 수 있게 설정해준다. 공백이 모두 사라지면 포인터와 인덱스가 같은 자리에 두어진다.
-
HTTP 메서드HTTP 2021. 11. 28. 22:42
쿼리 파라미터를 통한 데이터 전송 GET, 주로 정렬 필터(검색어) 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원가입, 상품 주문, 리소스 등록, 리소스 변경 등 클라이언트에서 서버로 데이터 전송 4가지 상황 정적 데이터 조회(이미지, 정적 텍스트 문서) 동적 데이터 조회(주로 검색, 게시판 목록에서 정렬 필터) HTML FORM을 통한 데이터 전송(POST, GET 방식, 회원 가입, 상품 주문) HTTP API를 통한 데이터 전송(회원 가입, 상품 주문, 데이터 변경, 서버 to 서버, Ajax, JSON) HTML FORM 데이터 전송 파일 전송(multipart/form-data) HTTP API 데이터 전송 메시지 바디를 통해서 데이터 전송 React, VueJs 같은 웹 ..
-
MVC 프레임워크 생성Spring 2021. 11. 28. 19:47
FrontController 패턴 생성 FrontController를 생성함으로써 더이상 컨트롤러에 서블릿을 사용하지 않아도 된다. 프론트 컨트롤러만 서블릿으로 설정해두고 요청에 맞는 컨트롤러를 찾아서 호출해주는 방식이다. 공통처리가 가능하다. View 분리 getRequestDispatcher 처럼 모든 컨트롤러에서 뷰로 이동하는 부분에 중복이 발생하므로 별도로 뷰를 처리하는 객체를 만든다.(MyView) 서블릿 종속성 제거, 뷰 이름 중복 제거(논리 뷰, 물리 뷰) 컨트롤러는 서블릿이 필요없다. Map을 이용해 파라미터 정보를 넘기면 되기 때문이다. 뷰의 논리 이름만 입력하면 자동으로 물리 뷰를 생성하도록 설정해줄 수 있다.(viewResolver) 서블릿 종속성을 제거하기 위해 뷰를 렌더링 할 때 ..
-
TIL 38th day자료구조 2021. 11. 28. 19:30
MVC 프레임워크 v5(어댑터 패턴) Object handler가 있어야 원하는 인터페이스를 적용 가능 controller.process()에는 ControllerV3 인터페이스가 적용되므로 파라미터에 값에 Map Map은 빈 Map이므로 요청 받은 값을 Map에 채워주기 위해 createParamMap 메소드를 선언하고 변수로 설정해준 다음 process안에 인자 값으로 넣음 만약 ControllerV3가 필요한 핸들러라고 가정해보자. 이 때는 ControllerV3에 적합한 handle 로직을 짜야하기 때문에 return을 mv로 변환해서 반환해줘야 한다. 어댑터 선택 과정은 이러하다 supprots 메소드를 통해서 적합한 인터페이스 규격을 찾아주고 그 규격을 handle에 넘겨준다. V3 인터페이스..
-
문자열 치환자료구조 2021. 11. 27. 23:35
문자열 치환 조건 : 가지고 있는 문자열의 종류와 갯수가 같아야한다. 대소문자를 구별하는가, 공백의 유무를 확실히해야한다. 대소문자를 구별하고 공백을 문자로 구별했을 때, 두개의 문자열을 정렬하고 한자씩 비교하는 방법이 있다. ASCII 코드를 이용한 문자열 치환 128개의 index를 만들어놓고 순차적으로 돌면서 문자열을 비교해준다. index가 비어있다면 1을 채워넣어주고 해당하는 index에 같은 값이 존재한다면 -1을 해주는 방식으로 처리한다. 만약 문자열이 치환되었다면 index는 0이 출력되어야한다.
-
TIL 37th day(2021.11.27)TIL(Today I Learned) 2021. 11. 27. 20:40
MVC 한계 포워드 중복, 사용하지 않는 코드, 공통 처리가 어렵다 해결방법) 프론트 컨트롤러 패턴 도입 MVC 프레임워크 생성 FrontController 생성 ViewDispatcher 메서드 생성 서블릿을 사용하지 않고 컨트롤러 생성, 논리 뷰 이름만으로 물리뷰 호출, HTTP 요청 -> FrontController에서 컨트롤러를 조회해서 매핑 -> 컨트롤러 호출 -> ModelView 반환(논리 뷰 이름 반환) viewResolver에서 논리 뷰를 물리 뷰로 반환 MyView에서 request.getAttribute()로 데이터를 조회하고 모델의 데이터를 꺼내서 request.setAttribute()에 담아둔뒤 JSP로 포워드해서 JSP를 렌더링한다. FrontController 패턴 특징 프론..