반응형 Develop233 [스프링 MVC] 뷰 리졸버 지난 번에 만들었던 OldController를 수정해서 뷰 리졸버의 작동을 살펴보자. ( 프로젝트 전체: https://github.com/yeon-06/inflearnSpring/tree/master/mvc1 ) OldController @Component("/springmvc/old-controller") public class OldController implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse res) throws Exception { System.out.println("OldController.handleRequest"); return new .. 2021. 5. 26. [Java] static과 synchronized 흔히 static 키워드는 multi-thread 환경에서 문제가 생기고, multi-thread 접근을 방지하기 위한 방법으로는 synchronized의 사용이 있다. static만 쓰거나, synchronized만 쓰거나, 둘 다 쓰거나... 이런 경우가 헷갈려서 따로 정리해본다. static 메모리에 한 번 할당되며 프로그램 종료 시 해제 GC과 관여하지 않는 영역의 메모리에 저장됨 객체 지향적이지 않아서 Java에서는 사용 지양을 권장 interface 구현에 사용할 수 없어 재사용성이 떨어짐 multi-thread 환경에서도 공유됨 설정 파일 정보, 자주 사용하고 절대 변하지 않는 변수(이건 final static을 쓰면 좋다) 등에 사용 메모리에 대한 보충 설명 ▼ 더보기 JVM의 메모리 영역.. 2021. 5. 26. [스프링 MVC] 핸들러 매핑, 핸들러 어댑터 핸들러 매핑과 핸들러 어댑터가 어떤 것들이 어떻게 사용되는지 확인해보자. Controller 인터페이스와 HttpRequestHandler 핸들러(컨트롤러)를 통해 예시를 들겠다. Controller 인터페이스 과거 Spring에서 사용했던 인터페이스 @Controller 어노테이션과는 전혀 다름 public interface Controller { ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception; } 지난 게시글에서 살펴봤던 스프링 MVC 구조를 다시 살펴보자. (글 순서: https://github.com/yeon-06/inflearnSpring/tree/master/.. 2021. 5. 24. [스프링 MVC] 스프링 MVC 구조, DispatcherServlet 목차 1. 기존 프로젝트의 구조 2. 스프링 MVC 구조 3. DispatcherServlet 1. 기존 프로젝트 구조 여태껏 만든 프로젝트의 구조를 한번 정리해보자. ( 프로젝트는 https://github.com/yeon-06/inflearnSpring/tree/master/mvc1 참조) 핸들러 조회: Handler 매핑을 통해 요청 url에 매핑된 핸들러(컨트롤러) 조회 핸들러 어댑터 조회: 핸들러를 처리할 수 있는 핸들러 어댑터 조회 핸들러 어댑터 실행: handler(handler) 핸들러 실행: 핸들러 어댑터가 실제 핸들러 실행 ModelView 반환: 핸들러 어댑터가 핸들러의 반환 정보를 ModelView 형태로 변환해서 반환 viewResolver 호출 MyView 반환: viewReso.. 2021. 5. 24. [Spring] Path with "WEB-INF" or "META-INF" 에러 Path with "WEB-INF" or "META-INF" 에러 에러 코드 전문 ▼ 더보기 2021-05-20 16:35:32.017 WARN 8656 --- [nio-8080-exec-2] o.s.w.s.r.ResourceHttpRequestHandler : Path with "WEB-INF" or "META-INF": [WEB-INF/views/new-form.jsp] 2021-05-20 16:35:32.045 DEBUG 8656 --- [nio-8080-exec-2] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [.. 2021. 5. 21. [Java] Collections와 Map 코딩 테스트를 풀때 효율성 문제에서 제일 헷갈리는게 Collections 같다. '자바 성능 튜닝 이야기' 책에 의하면 각 클래스의 효율성 자체는 크게 나지는 않지만... 어느 상황에 어떤 컬렉션을 쓰는 것이 적절한지 헷갈리니까 정리해두겠다. 이 글은 컬렉션 프레임워크를 대충 쓰고는 있었지만 서로의 차이점을 확실히 알고 싶은 사람에게 추천한다. 사용법이 아닌 개념과 이해를 위한 설명을 위주로 작성한다. 컬렉션 프레임워크(Collection Framework)란? 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화해 클래스로 구현한 것 Collection Framework의 계층 Collection fra.. 2021. 5. 21. [MVC] 어댑터 추가 110v 코드에는 220v 코드를 꽂을 수 없다. 어댑터를 사용하면 220v 코드도 110v에서 사용할 수 있도록 해준다. 이처럼 코드에서도 호환을 도와주는 어댑터를 추가할 수 있다. 자세한 설명은 '어댑터 패턴'에 대해 공부해보길 바란다. V3 Controller 활용하기 먼저는 v3에서 만든 컨트롤러를 사용할 수 있도록 하겠다. v3 코드: https://yeonyeon.tistory.com/105 [MVC] Model 분리 현재 코드의 문제점 컨트롤러는 매번 사용하지도 않는 HttpServletRequest, HttpServletResponse를 받는다. "/WEB-INF/views/new-form.jsp" 같은 경로에서 "/WEB-INF/views" 같이 경로가 반복된다. 현재 서블릿에.. yeo.. 2021. 5. 19. [Eclipse] 프로젝트 유형 변경하기 Eclipse에 import한 프로젝트가 사용하는 것은 Gradle, Maven, Spring 등등 다양하다. 하지만 Eclipse가 자동적으로 Java Project로만 인식해서 프로젝트 전체에 빨간 X에 뜨는 경우가 있다. 잘 모를때는 원하는 유형의 프로젝트를 새로 만들어서 파일 내용을 복붙했으나... SVN이나 Git같은 도구를 써서 여러 사람과 함께 사용하는 경우엔 새로 만들수도 없다ㅠㅠ 알고보니 프로젝트 유형을 바꾸는건 정말 어렵지 않다. 단, 플러그인은 이미 설치되어 있다는 가정 하에 진행해야 한다. ex: Gradle Project일 경우, Gradle 관련 플러그인이 이미 설치되어있어야 함 프로젝트 우클릭 - Configure - 원하는 버전 선택 ex: Gradle Project로 변경하.. 2021. 5. 19. [MVC] Controller 단순화 v3까지 설계한 것은 구조적으로 좋은 설계이다. 하지만 개발자들 입장에서는 항상 ModelView 객체 생성 반환해야해서 좀 번거롭다. 이를 좀 더 단순화하기 위해 코드를 변경해보겠다. 이전 코드: yeonyeon.tistory.com/105 [MVC] Model 분리 현재 코드의 문제점 컨트롤러는 매번 사용하지도 않는 HttpServletRequest, HttpServletResponse를 받는다. "/WEB-INF/views/new-form.jsp" 같은 경로에서 "/WEB-INF/views" 같이 경로가 반복된다. 현재 서블릿에.. yeonyeon.tistory.com 이번 글은 코드 전문을 공개하기보다 어느 부분이 어떻게 바뀌었는지 위주로 짚어보겠다. (코드 전문: https://github.co.. 2021. 5. 13. 이전 1 ··· 15 16 17 18 19 20 21 ··· 26 다음 반응형