일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- algorithms
- 정보처리기사
- git
- 항해99
- 책리뷰
- 필기
- 스터디
- post
- 성적프로그램
- LeetCode
- 2020년 제4회 정보처리기사 필기 문제 분석
- 함수형 코딩
- 서평
- 코드숨
- 2020년 일정
- java
- Jackson
- Real MySQL
- hackerrank
- 알고리즘
- 뇌정리
- sqldeveloper
- 미니프로젝트
- Til
- 주간회고
- 회고
- If
- 2020년 정보처리기사 4회
- jsp
- Python
- Today
- Total
목록분류 전체보기 (174)
조컴퓨터
###뇌 정리용 글### 두 가지 프레임워크를 비교해 본다. 직접 만든 프레임워크 -> 스프링 MVC 비교 - FrontController -> DispatcherServlet - handlerMappingMap -> HandlerMapping - MyHandlerAdapter -> HandlerAdapter - ModelView -> ModelAndView - viewResolver -> ViewResolver - MyView -> View DispatcherServlet 구조 org.springframework.web.servlet.DispatcherServlet DispatcherServlet 은 스프링 MVC 의 핵심이다. DispatcherServlet 서블릿 등록 - DispatcherServ..
###뇌 정리용 글### 만약 어떤 개발자는 ControllerV3 방식으로 개발하고 싶고, 어떤 개발자는 ControllerV4 방식으로 개발하고 싶다면 어떻게 해야할까? public interface ControllerV3 { ModelView process(Map paramMap); } public interface ControllerV4 { String process(Map paramMap, Map model); } 이때 필요한 것이 어댑터 패턴이다. 지금까지 우리가 개발한 프론트 컨트롤러는 한 가지 방식의 컨트롤러 인터페이스만 사용할 수 있다. ControllerV3, ControllerV4 는 완전히 다른 인터페이스이다. 따라서 호환이 불가능하다. 마치 v3 와 v4 는 서로 규격이 다른 11..
###뇌 정리용 글### FrontController 패턴 도입 (=DispatcherServlet) - v1 내부 로직은 기본 서블릿과 거의 같다. 아래 그림의 1, 2번 작업을 진행할 프론트 컨트롤러만 생겨났다. View 분리 - v2 모든 컨트롤러에서 뷰로 이동하는 부분에 중복이 있고, 깔끔하지 않다. 아래의 중복 코드를 깔끔하게 분리하기 위해 별도로 뷰를 처리하는 객체를 만든다. String viewPath = "/WEB-INF/views/new-form.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); *MyView public class ..
디자인패턴은 코딩을 하는 사람들이 효율적으로 만들어지는 일련의 패턴들을 모아서 정형화 시켜놓은 것을 말한다. MVC 패턴이 탄생하게 된 계기 또한 하나의 서블릿, 순수 JSP 만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하다 보니 각각의 페이지들이 너무나 많은 역할을 하게 되고, 결과적으로 유지보수가 어려운 데에 있어 생겨났다. 그리고 MVC 패턴은 라이프 사이클 관리를 위해 탄생했다. 예를 들어, UI 를 일부 수정하는 일과 비즈니스 로직을 수정하는 일은 각각 다르게 발생할 가능성이 매우 높은데에 비해 대부분의 케이스에 있어서 서로에게 영향을 주지 않는다. 이렇게 변경에 대한 라이프 사이클이 다른 부분을 하나의 코드로 관리하는 것은 유지보수에 있어서 좋지 않다. MVC 패턴은 JSP 기능을 살려주는 ..
갑자기 궁금해져서 공부한다. // Member.java public class Member { private String username; private int age; // Overloading // Constructor1 public Member() { } // Constructor2 public Member(String username, int age) { this.username = username; this.age = age; } } 파라미터가 있는 생성자를 만들었는데, 왜 매개변수(파라미터)가 없는 기본 생성자를 선언할까? 1) 상속받아야 할 때 해당 클래스를 상속받는 경우 에러가 발생한다. 오류 메세지는 Implicit super constructor Parent() is undefined ..
HttpServletResponse 역할 - HTTP 응답 메시지 생성 - HTTP 응답 코드 지정 - 헤더 생성 - 바디 생성 - 편의 기능 제공 - Content-Type, 쿠키, Redirect *hello.servlet.basic.response.ResponseHeaderServlet 생성 @WebServlet(name = "responseHeaderServlet", urlPatterns = "/response-header") public class ResponseHeaderServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throw..
HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법을 알아보자. 주로 다음 3가지 방법을 사용한다. - GET - 쿼리 파라미터 - /url?username=hello&age=20 - 메시지 바디 없이, URL 의 쿼리 파라미터에 데이터를 포함해서 전달 - 예) 검색, 필터, 페이징 등에서 많이 사용하는 방식 *전체 파라미터 조회 @WebServlet(name = "requestParamServlet", urlPatterns = "/request-param") public class RequestParamServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServle..
요청마다 쓰레드 생성의 단점 보완 - 특징 - 필요한 쓰레드를 쓰레드 풀에 보관하고 관리한다. - 쓰레드 풀에 생성 가능한 쓰레드의 최대치를 관리한다. 톰캣은 최대 200개 기본 설정 (변경 가능) - 사용 - 쓰레드가 필요하면, 이미 생성되어 있는 쓰레드를 쓰레드 풀에서 꺼내서 사용한다. - 사용을 종료하면 쓰레드 풀에 해당 쓰레드를 반납한다. - 최대 쓰레드가 모두 사용중이어서 쓰레드 풀에 쓰레드가 없으면? - 기다리는 요청은 거절하거나 특정 숫자만큼만 대기하도록 설정할 수 있다. - 장점 - 쓰레드가 미리 생성되어 있으므로, 쓰레드를 생성하고 종료하는 비용(CPU) 이 절약되고, 응답 시간이 빠르다. - 생성 가능한 쓰레드의 최대치가 있으므로 너무 많은 요청이 들어와도 기존 요청은 안전하게 처리할 ..