Back-end/Spring

    PRG Post/Redirect/Get

    PRG Post/Redirect/Get

    도입 물건을 주문하는 서비스를 개발하거나 회원을 등록하는 서비스를 개발할 때 HTTP의 Post 메소드를 주로 사용한다. 이 때, Post로 상품을 주문하도록 하고, 웹페이지를 바로 랜더링했다고 생각하면 매우 끔찍한 일이 벌어진다. 왜냐면 최종적인 HTTP가 Post이기 때문에 만약 사용자가 결제 후 랜더링된 페이지에서 새로고침을 누르면 중복해서 결제가 진행되기 때문이다. Post - Redirect - Get PRG를 사용해야하는 이유는 도입부분에서 매우 자세하게 설명이 되어있다. 클라이언트가 form tag에 데이터를 입력하고 주문을 하면 Post로 데이터가 넘어와 서버에서 해당 부분을 처리하게 된다. 이렇게 처리가 된 경우 최종적인 HTTP입력이 Post이므로 새로고침시 계속해서 Post가 실행되는..

    Server Side Rendering (Thymeleaf)

    Server Side Rendering (Thymeleaf)

    도입 서버 개발자가 웹페이지를 구성하여 보여주는 기능을 SSR이라고 한다. SSR은 여러가지 방법으로 구현될 수 있는데 그 기술 중 네츄럴 템플릿인 Thymeleaf를 알아보도록 하자. SSR(Server-Side Rendering) 서버 개발자가 보여주고 싶은 웹페이지를 구성하여 보여주는 방법을 SSR이라고 한다. 서버를 활용하여 웹페이지를 랜더링하기 때문에 CSR(Client-Side Rendering) 보다는 페이지를 생성하여 보여주는 것보다 느리지만, 데이터를 가져와 웹페이지의 콘텐츠를 모두 추가하여 보여주는 면에서는 더 빠르다. Thymeleaf SSR을 구성하는 방법 중 하나로 Thymeleaf가 있다. 이 기술의 특징은 네츄럴 템플릿 이라는 점이다. Html의 tag안에 동적으로 서버에서 처..

    HTTP Message Converter

    HTTP Message Converter

    도입 HTTP의 바디에 값을 넘겨줄 때 view를 활용하여 html을 생성해서 보내줄 수도 있고 간단하게 json이나 String 형식으로 넘겨줄 수 있다. json이나 String형식으로 넘겨줄때는 HTTP Message Converter를 사용하면 편리하게 넘겨줄 수 있다. 오늘은 HTTP Message Converter를 알아보도록 하겠다. HTTP Message Converter HttpMessageConverter는 requset로 넘어온 body 데이터 값을 받아오거나 혹은 response로 데이터를 body에 보낼 때 적절하게 변환해주는 역할을 수행한다. 예를들어 @ResponseBody annotation이 붙어있는 메소드가 실행이 될 때 적절한 HTTP Message Converter를 ..

    SSR Response, Response Body

    SSR Response, Response Body

    도입 서버의 개발자가 사용자에게 페이지를 구상하여 보여주는 것을 SSR(Server Side Rendering)이라고 한다. 여러가지 종류가 있지만 나는 주로 Thymeleaf를 사용하여 처리한다. 이번에 공부한 내용은 동적인 웹페이지를 위해 SpringMVC에서 데이터를 넘겨주는 방법과 Response Body를 알아보겠다. View로 데이터 넘겨주는 방법 Thymeleaf로 데이터를 넘겨주는 다양한 방법을 알아보고자 한다. @RequestMapping("/response-view-v1") public ModelAndView responseViewV1(){ ModelAndView mav = new ModelAndView("response/hello") .addObject("data","hello!");..

    Request Body 받아오기

    Request Body 받아오기

    Client가 Server로 혹은 Server가 Server로 Request를 할 수 있다. 이번 포스팅에서는 Request가 왔을 때 Body를 String과 Json방식으로 받아오는 두가지 방법을 확인하겠다. 김영한님의 MVC 강의를 수강 후 작성된 포스팅이다. 1. Body가 String인 경우 Servlet의 모든 기능을 지원하기 때문에 Servlet처럼 받는 것도 가능하다. 하지만 이 경우 불필요하게 HttpServletRequest를 모두 받아야하므로 비효율적이다. 따라서 원하는 부분만 받아서 실행할 수 있다. @PostMapping("/request-body-string") public void requestBodyString(InputStream inputStream, Writer resp..

    Request Parameter 가져오기

    Request Parameter 가져오기

    도입 Spring MVC는 굉장히 편리하게 Request Parameter를 받을수 있다. 과거 Servlet에서는 HttpRequest 객체로부터 getParameter를 받았던 것과 유사하게 받을 수도 있고, 더욱 편리하게 받을 수 도 있다. 이번 포스팅에서는 Servlet에서 Parameter를 받는 것을 시작으로 Spring MVC가 편리하게 받는 방법까지 알아보도록 하겠다. Request Parameter 받는 방법 1. Servlet처럼 받기 @RequestMapping("/request-param") public void requestParam(HttpServletRequest request, HttpServletResponse response) throws IOException { Stri..

    스프링 빈 등록방법과 사용예시

    스프링 빈 등록방법과 사용예시

    Spring Bean이란? Spring의 Bean은 Spring IOC Container가 관리하는 객체들을 의미합니다. 따로 new 연산을 통해 객체를 생성하지 않아도 되고, Spring IOC Container에게 알려주기만 하면 객체를 만들어 사용해 줍니다. Spring Bean을 사용하면 여러 클래스에서 따로 new연산을 하여 동일한 여러 객체를 만들 필요도 없어 메모리 활용에 효과적입니다. Spring IOC Container에서 가지고 있는 동일한 인스턴스만 사용하기 때문에 많은 이점을 얻을 수 있습니다. 그렇다면 이번 시간에는 Spring Bean에 등록하는 방법을 알아보도록 하겠습니다. Spring Bean 등록 방법? 등록하는 방법은 크게 두가지가 있습니다. Component Scan 직..

    Test Case 만들기

    Test Case 만들기

    이번 포스팅에서는 서비스를 생성하고, 동작이 원활히 수행되는지 테스트를 해야합니다. main 메소드를 사용하여 출력하기 직접 DB에 넣고 실행해보기 등등 다양한 방법으로 테스트를 할 수 있습니다. 이번 시간에는 Spring으로 Service를 만들며 굉장히 편리한 Test Case를 활용하여 테스트를 수행하는 방법을 알아보도록 하겠습니다. Test Case test파일에서 Class를 생성하여 주시고 작업을 수행하면 됩니다. 메소드에 @Test라는 anotation만 붙여주고 사용하면 됩니다. 예시로 간단한 스펙의 서비스를 만들어보겠습니다. public int join(Member member) { nameCheck(member); repository.save(member); return member.g..

    Static,MVC,API

    Static,MVC,API

    이 글은 김영한 개발자님의 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 강의를 듣고, 배운 내용을 제가 필요할 때 찾기위해 요약한 글 입니다. Static static? 웹을 html 그대로 static으로 보여주는 방법. 'resources/static/' 경로에 html파일을 직접 넣어주면 됨. 스프링 부트에서 항상 Controller가 있는지 확인하고, 없으므로 resources/static/에서 원하는 html을 찾아서 웹브라우저에 올려줌. 접근하기 위해서는 html 확장자 까지 작성해야함. 이 때, hello-static에 접근하고 싶으면, /hello-static.html로 검색해야함. MVC MVC? Model, View, Controller로 하는 역할을 나..

    Project 생성, View, Build

    Project 생성, View, Build

    이 글은 김영한 개발자님의 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 강의를 듣고, 배운 내용을 제가 필요할 때 찾기위해 요약한 글 입니다. Spring Project 생성 순서 start.spring.io로 들어간다. 세팅을 수행한다. 이 때, add dependencies에서 Spring Web을 반드시 추가한다. (템플릿 엔진은 여러가지 종류가 있음) 스프링 프로젝트를 생성한다. IntelliJ를 사용하여 생성한 프로젝트를 실행한다. 최종 세팅 Maven과 Gradle 프로젝트의 차이? Maven Maven은 Apache의 Ant의 대안인 빌드관리 도구이다. 특징으로는 라이브러리를 사용할 때 굉장히 편리하다는 것이다.(라이브러리에서 다른 라이브러리가 필요한 경우가 ..