본문 바로가기
반응형

분류 전체보기1065

[TIL] : 90 일일 배움을 위한 Today I Learned ! Spring Boot Spring Boot 강의를 인프런에서 김영한님 강좌로 전부 다 구매했다. 이걸 30일 안에 들으면서 복습하려니까 엄청 빡쎄다. 계산을 해 본 결과 하루에 3시간 분량의 강의를 들어야 하는데 3시간 공부? 문제 없다. 하지만 복습하면서 이해하고 전 날에 코딩한 내용을 복습하는데 시간이 너무 많이 들어간다. 앞으로 다른 공부도 해야 하는데 이걸 어쩌나.. 고민이 깊어지고 있다. 2022.01.24 - [Framework/Spring Boot] - [Spring Boot] : Spring MVC 구조 확인하기 2022.01.24 - [Framework/Spring Boot] - [Spring Boot] : 스프링이 제공하는 핸들러 매핑과.. 2022. 1. 24.
[프로그래머스] : x만큼 간격이 있는 n개의 숫자 파이썬 풀이 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 문제 설명 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 제한 조건 xnanswer 25[2,4,6,8,10] 43[4,8,12] -42[-4, -8] 입출력 예 def solution(x, n): answer = [] for i in range(1, n+1): answer.append(x*i) return answer; 정답 풀이 x부터 시작해서 x씩 증가하는 식을 우선 만들어야 한다. for i in range(1, n+1): 을 통해.. 2022. 1. 24.
[JavaScript] : 자바스크립트 기초 파트 const a = 5; const b = 2; let myName = "juhyeon"; console.log(a + b); console.log(a * b); console.log(a / b); console.log("hello " + myName); myName = "Oh JU HYEON" console.log("Your new name is " + myName); const는 값을 바꿀 수 없다. let은 값을 변경할 수 있다. 업데이트가 허용되야 하는 변수는 let, 그 외 변수는 const를 사용한다. 주로 const를 사용하길 추천하고 가끔은 let도 괜찮다. 하지만 가능하면 var는 안 쓰는 게 좋다. 왜냐하면 코드에서 무엇을 원하는지 알기가 어려워진다. let something; conso.. 2022. 1. 24.
[Spring Boot] : Spring MVC 실용적인 방식 활용 이번에는 전 방식에서 Model을 도입하고 ViewName을 직접 변환하고 @RequestParam을 사용한다. @Controller @RequestMapping("/springmvc/v3/members") public class SpringMemberControllerV3 { 이번에도 마찬가지로 클래스 단위에서 @RequestMapping을 통해 Bean을 경로 이름으로 등록해주었다. @RequestMapping("/new-form") public ModelAndView newForm() { return new ModelAndView("new-form"); } 위 코드를 @RequestMapping(value = "/new-form", method = RequestMethod.GET) public St.. 2022. 1. 24.
[Spring Boot] : Spring MVC 컨트롤러 통합하기 강의를 진행할 때 마다 코드가 점점 깔끔해지고 있다. 이번에는 메서드 단위로 @RequestMapping을 적용하여 컨트롤러 클래스를 유연하게 하나로 통합하는 공부를 한다. @Controller @RequestMapping("/springmvc/v2/members") public class SpringMemberControllerV2 { private MemberRepository memberRepository = MemberRepository.getInstance(); } 우선 자체 클래스에는 @RequestMapping을 적용시키고 @Controller를 적용해 준다. 이 아래 메서드 단위로 각 컨트롤러를 가져와 통합시키는 것이다. @RequestMapping("/new-form") public Mo.. 2022. 1. 24.
[Spring Boot] : Spring MVC 시작 스프링이 제공하는 컨트롤러는 어노테이션 기반으로 동작해 매우 유연하고 실용적이다. 원래 예전에 여러 프레임워크들이 있었는데 @RequestMapping 기반의 어노테이션 컨트롤러가 등장하면서 MVC 부분에서 스프링이 흥하게 되었다고 한다. 실무에서 주로 사용하는 핸들러 매핑과 어댑터는 RequestMappingHandlerMapping과 RequestMappingHandlerAdapter이라고 한다. 이번에는 기존에 사용한 컨트롤러를 @RequestMapping 기반의 스프링 MVC 컨트롤러로 바꿔보는 진도를 나간다. @Controller public class SpringMemberFormControllerV1 { @RequestMapping("/springmvc/v1/members/new-form").. 2022. 1. 24.
[Spring Boot] : 뷰 리졸버에 대해서.. 이번에는 뷰 리졸버이다. @Component("/springmvc/old-controller") public class OldController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("OldController.handleRequest"); return new ModelAndView("new-form"); } } View를 사용하기 위해 마지막에 return 라인을 추가해 주었다. 이렇게 하고 실행을 하면 페이지는 오류가 나지만 print문은 출력이 되는.. 2022. 1. 24.
[Spring Boot] : 스프링이 제공하는 핸들러 매핑과 어댑터 지금은 잘 사용하지 않는 스프링이 제공하는 간단한 핸들러 매핑과 어댑터에 대해 공부한다. public interface Controller{ } 전에는 이렇게 인터페이스 컨트롤러를 만들어서 안에서 ModelAndView를 사용해 주었지만 사실 인터페이스 컨트롤러와 @Controller는 전혀 다르다. 코드를 통해 알아본다. @Component("/springmvc/old-controller") public class OldController implements Controller { } @Component를 사용하여 스프링 빈의 이름을 URL로 해둬서 핸들러 매핑이 가능하도록 해준다. 이렇게 만들면 스프링 빈도 등록이 된 것이고 빈의 이름으로 URL을 매핑하게 되는 것이다. 컨트롤러가 호출되기 위해 2가.. 2022. 1. 24.
[Spring Boot] : Spring MVC 구조 확인하기 직접 만들어 보았던 MVC 프레임워크와 스프링 MVC를 비교했다. 사실 전에 만들었던 MVC프레임워크크 스프링 MVC 구조와 똑같다고 한다. 클라이언트 → 프론트 컨트롤러 → 핸들러 매핑 정보 → 핸들러 어댑터 목록 → 핸들러 어댑터 → 핸들러 → 핸들러 어댑터에서 다시 프론트 컨트롤러 → 뷰 리졸버 호출 → View 반환 → render(model) 호출 → HTML 응답 이런 식이다. 다른점은 FrontController가 스프링 MVC에서는 DispatcherServlet이라는 것과 기존에 스프링 MVC에 이미 있어서 이름을 살짝 바꿔준 항목들 뿐이다. DispatcherServlet이 스프링 MVC의 핵심이다. 디스패처 서블릿은 부모 클래스에서 HttpServlet을 상속 받아 사용하고, 서블릿으.. 2022. 1. 24.
[TIL] : 89 일일 배움을 위한 Today I Learned ! Spring Boot 인프런 강의를 들으면서 컨트롤러를 완성시켜 나가고 있다. 예전에 어떻게 쓰였는지 부터 발전하는 과정을 거쳐오는 동안 사용했던 방식을 그대로 재현해 주는 것 같은데 좋은 점이 어떻게 발전해 왔는지 경험할 수 있으니 단계별로 이해를 하면 조금 더 수월하게 알 수 있는 것 같다. 2022.01.23 - [Framework/Spring Boot] - [Spring Boot] : 단순하고 실용적은 ModelView 객체의 중복을 제거한 컨트롤러 코딩 2022.01.23 - [Framework/Spring Boot] - [Spring Boot] : Controller를 여러 방식으로 구현하기 위해 사용한 Adapter pattern 프로그래머스.. 2022. 1. 23.
[프로그래머스] : 소수 찾기 파이썬 풀이 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 문제 설명 n은 2이상 1000000이하의 자연수입니다. 제한 조건 nresult 104 53 입출력 예시 입출력 예 #1 1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환 입출력 예 #2 1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환 입출력 예시 설명 def solution(n): ch=[0]*(n+1) cnt=0 for i in range(2, n+1): if ch[i]==0: cnt+=1 for j in range(i, n+1, i): ch[j]=1 answer = cnt.. 2022. 1. 23.
[Spring Boot] : Controller를 여러 방식으로 구현하기 위해 사용한 Adapter pattern 컨트롤러를 여러 방식으로 구현하고 싶을 떄 활용하는 방버에 대해 공부했다. 컨트롤러를 여러 방식으로 구현하기 위해 어댑터 패턴을 활용한다. 지금까지 강의를 통해 공부한 내용은 한 가지 방식의 컨트롤러 인터페이스만 사용할 수 있었는데 어댑터 패턴을 통해 다양한 방식의 컨트롤러를 처리할 수 있도록 변경해 줄 수 있다. public interface MyHandlerAdapter { boolean supports(Object handler); ModelView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException; } 인터페이스 어댑터 예시 코드이다. s.. 2022. 1. 23.
[Spring Boot] : 단순하고 실용적은 ModelView 객체의 중복을 제거한 컨트롤러 코딩 강의에서 컨트롤러를 점점 완성시켜 나가는 형식으로 만들어 가는데 전 강의에서 소개한 컨트롤러는 서블릿 종속성 제거와 경로 중복 제거 등 잘 설계는 했지만 ModelView 객체를 생성하고 반환해야 하는 부분에 대한 번거로움이 있다. 강의에서는 좋은 아키텍처도 중요하지만 개발자가 편하게 사용할 수 있는 것도 중요하다고 강조한다. 때문에 전에 번거로웠던 부분을 조금 더 개선한 버전의 컨트롤러를 코딩을 해본다. 먼저 구조는 이렇다. 클라이언트가 HTTP를 프론트 컨트롤러에 요청한다. 프론트 컨트롤러는 매핑 정보를 통해 컨트롤러를 조회하고 알맞는 컨트롤러에 paramMap, model을 파라미터로 호출하고 컨트롤러는 ViewName을 반환해준다. 그럼 프론트 컨트롤러는 다시 viewResolver를 호출하고 v.. 2022. 1. 23.
[TIL] : 88 일일 배움을 위한 Today I Learned ! Spring Boot 프론트 컨트롤러가 조금 어렵다. Model 추가해서 사용하는 파트가 어려운 것 같고 아직 완벽하게 이해는 하지 못 했다. 복습을 하고 블로그에 올리긴 했는데 추가로 강의를 한, 두번 더 돌려 보면서 익혀야할 것 같다. 2022.01.22 - [Framework/Spring Boot] - [Spring Boot] : Front Controller 구현해보기 2022.01.22 - [Framework/Spring Boot] - [Spring Boot] : Controller에서 View 이동 시 중복되는 부분 리펙터링하기 2022.01.22 - [Framework/Spring Boot] - [Spring Boot] : Model 추가해서.. 2022. 1. 22.
[프로그래머스] : 직사각형 별찍기 파이썬 풀이 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 문제 설명 n과 m은 각각 1000 이하인 자연수입니다. 제한 조건 5 3 입력 예시 ***** ***** ***** 출력 예시 a, b = map(int, input().strip().split(' ')) for i in range(b): for j in range(a): print("*", end='') print() a와 b의 값을 받아서 직사각형 별을 찍는다. 5 3을 입력 받아 split로 공백을 기준으로 나누어 a와 b에 값을 받는다. for문을 두 번 돌려 *을 찍어주고 end=’’를 통해 한 라인으로 출력이 되도록 설정해 주었고 j f.. 2022. 1. 22.
[Spring Boot] : Model 추가해서 Front Controller에서만 Servlet 사용하기 이번 파트는 반복해서 봐야한다. 어려운 부분이 확실히 있는 것 같다. 우선, 서블릿 종속성을 제거해 주었다. Controller에서 HttpServletRequest와 HttpServletResponse가 안 쓰이는 경우가 종종 있었는데 그것을 해결해 주었다. 요청 파라미터 정보를 Map으로 넘겨 Controller가 Servlet을 몰라도 동작하도록 하였다. request 또한 강의에서 model로 사용했고 따로 Model 객체를 만들어 반환하도록 했다 이렇게 하면 코드가 단순해지고 테스트 코드 작성도 간단해 진다고 한다. 중복되는 것은 서블릿 관련만 있는 게 아니었다. 뷰 이름(경로) 또한 중복되고 있었다. 컨트롤러에서 뷰의 논리 이름을 반환하고 실제 물리 위치는 프론트 컨트롤러에서 처리하도록 단순화.. 2022. 1. 22.
[Spring Boot] : Controller에서 View 이동 시 중복되는 부분 리펙터링하기 컨트롤러에서 뷰로 이동하는 부분에 중복이 있어 깔끔하지 않다. String viewPath = "/WEB-INF/views/new-form.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); 계속 dispatcher 부분을 중복해서 적어주고 있는데 이런 부분을 깔끔하게 리펙터링하기 위해서는 별도로 뷰를 처리하는 객체를 만들어 줘야한다. 이렇게 되면 클라이언트가 HTTP 요청을 했을 때 Front Controller가 매핑 정보를 확인해서 알맞는 Controller를 호출해 주고 Controller는 뷰를 처리하는 객체를 반환해 준다. 다시 Front .. 2022. 1. 22.
[Spring Boot] : Front Controller 구현해보기 Front Controller를 추가해서 구조를 맞추고 리펙터링 해 나간다. 프론트 컨트롤러를 추가하면 클라이언트가 HTTP 요청을 넣었을 때 프론트 컨트롤러가 받고 URL 매핑 정보에서 컨트롤러를 조회한 뒤 알맞는 컨트롤러를 호출해 주게 된다. 그럼 호출된 컨트롤러가 JSP forward를 통해 JSP로 보내주고 HTML 응답을하게 되는 것이다. public interface ControllerV1 { void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; } 우선 서블릿과 비슷한 모양의 컨트롤러 인터페이스를 생성해 준다. 각 컨트롤러들은 이 인터페이스 컨트롤러를 .. 2022. 1. 22.
[TIL] : 87 일일 배움을 위한 Today I Learned ! Spring Boot 스프링 부트 강의를 하루 3시간 분량정도 듣고 복습을 하기로 했다. 내년이나 내 후년에 취업을 위해 열심히 공부해야겠다. 이번에는 MVC 패턴 맛 보기? 정도 파트를 공부했다. 이제 곧 진짜 MVC 활용을 할 것 같은데 재밌을 것 같아 빨리 공부해 보고 싶은 마음이 많다. 자바스크립트랑 파이썬 코테, CS지식 채우기 등 공부할 게 많지만 우선 남은 1월과 2월은 스프링 부트 공부에 집중하려고 한다. 스프링 부트와 JPA까지는 1회독 정도 하면서 복습하고 포스팅하는 쪽으로 계속 공부를 진행할 것 같다. 2022.01.21 - [Framework/Spring Boot] - [Spring Boot] : 회원 정보를 간단하게 저장하고 조회를.. 2022. 1. 21.
[Spring Boot] : Front Controller란? Front Controller 도입 전에는 클라이언트가 각 컨트롤러를 호출하는 형식으로 사용을 했는데 프론트 컨트롤러 도입 후에는 클라이언트가 프론트 컨트롤러를 호출하면 프론트 컨트롤러가 호출에 맞는 컨트롤러를 연결해 주는 역할을 하게 된다. 즉, 프론트 컨트롤러 패턴을 활용하면 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받고 요청에 맞는 컨트롤러를 찾아서 호출하는 입구가 한 개가 되는 것과 같다. 이렇게 되면 공통 처리가 가능하고 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다고 한다. 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부하였습니다. 2022. 1. 21.
[Spring Boot] : MVC 패턴 적용해보고 한계 체크하기(3) MVC 패턴을 사용하면 확실히 컨트롤러와 뷰의 역할을 명확히 구분이 가능하다. 때문에 코드들이 깔끔해지고 직관적으로 된다. 하지만 컨트롤러에는 중복이 많이 있고 필요 없는 코드들이 아직 존재한다. 전 글에서도 dispatcher.forward() 부분이 중복되어서 내가 복사 붙여넣기로 글을 적었다고 쓴 것 같은데 그런 부분이 예시이다. 아직 이렇게 중복이 잦은 코드들이 존재한다. 그리고 사용하지 않는 코드들도 있었다. 예를 들면 HttpServletRequest와 HttpResponse가 그렇다 위에 불러와 놓고 사용하지 않는 경우가 있었고 이 두개는 테스트 코드를 작성하기도 어렵다고 한다. 추가로 기능이 복잡해 질 수록 컨트롤러에서 공통으로 처리해야 하는 부분도 늘어날 것인데 이 경우 메서드를 항상 호.. 2022. 1. 21.
반응형