본문 바로가기
관리자

Programming-[Backend]

(421)
[스프링 웹MVC] 11. 스프링 MVC - 요청 정보 처리 기능 요청 URL에 따라 Controller를 매핑해봤으니, 이제 받아온 요청의 정보들을 처리하는 기능들에 대해서 알아본다. 몇가지 어노테이션과 기본 내용들만 학습하면 된다. 1. 헤더 정보 조회 @RequestHeader @RequestHeader 어노테이션을 이용하여 모든 헤더들의 정보를 MultiValueMap으로 받아올 수도 있고, 각 key값에 맞는 header 정보를 받아올 수도 있다. MultiValueMap은 Map과 유사한데, 하나의 key에 여러 값을 받을 수 있다. key값으로 조회하면 value값들의 배열을 반환한다. 요청 및 응답의 경우 같은 key에 여러 값을 받을 수 있으므로 MultiValueMap을 사용한다. @CookieValue 쿠키 정보를 받아올 수 있다. java/hell..
[스프링 웹MVC] 10. 스프링 MVC - 요청 매핑 1. @RequestMapping의 개념과 여러가지 속성 @RequestMapping은 controller에서 라우팅을 해준다. 클라이언트의 요청 정보를 쉽게 처리할 수 있도록 다양한 속성들을 제공한다. 속성들을 하나씩 공부해보자. URL 배열, 슬래시 처리 요청 주소를 중괄호 {} 안에 넣어서 여러 URL 요청을 받을 수도 있다. 그리고 "/hello-basic"의 URL로 요청하도록 지정했는데, URL 상으로는 완전히 다른, "/hello-basic/" 으로 슬래시를 하나 더 붙여서 요청을 보내더라도 해당 요청을 처리해주는 특징이 있다. 1 2 3 4 5 6 7 8 9 10 11 12 @RestController public class MappingController { private Logger l..
[스프링 웹MVC] 9. 스프링 MVC - 프로젝트 생성과 로깅 1. 프로젝트 생성 스프링 MVC도 이전 글에서 살펴본 ControllerV5와 똑같은 구조를 갖고 있다. 다만 FrontController의 이름이 DispatcherServlet이고, MyView등 강의에서 만든 일부 객체의 이름이 다르다. 이제 springMVC에 대해서 본격적으로 알아본다. 새롭게 프로젝트를 만든다. 기존에 프로젝트를 만들던 start.spring.io 사이트에서 만들면 된다. Gradle Project, Java는 11버전, Jar Packaing을 선택하고, 라이브러리는 Spring web, Thymeleaf, Lombok을 추가한다. jsp를 쓰거나, 별도의 tomcat 서버에 설치하기 위해서는 War 패키징을 하지만, 그냥 스프링에서 제공하는 내장 서버를 이용할려면 Jar ..
[스프링 웹MVC] 8. 프론트 컨트롤러(Front Controller) - 2. 컨트롤러 개선, MVC 패턴 요약 1. ControllerV4 ControllerV4에서는 controller에서 ModelView 객체를 FrontController에 반환해야만 했던 부분을 개선한다. 대신 로직을 처리한 객체를 model로 넘기고, viewName은 단순 String으로 반환하게 된다. ControllerV4 다른 Controller들과 똑같이 process 메서드를 작성하되, paramMap외에 두 번째 파라미터로 model 객체를 전달받는다. 이 부분은 FrontController에서 각 Controller들의 process 메서드를 호출할 때, Controller에서 FrontController로 전달할 로직을 처리한 객체를 담을 수 있도록 미리 빈 사물함(?)을 정의해놓는 것이라고 이해하면 된다. 1 2 3 p..
[스프링 웹MVC] 7. 프론트 컨트롤러(Front Controller) - 1. 컨트롤러 수정 1. 프론트 컨트롤러의 개념 이제 Controller의 공통적인 부분을 담당하는 Front Controller를 만들어본다. 여기서부터 Controller를 발전시켜나가다보면, 결국 스프링 MVC 프레임워크에 다다르게 된다. 기존에는 각 클라이언트가 필요한 정보에 따라 각 Controller에 요청하는 구조였지만, Front Controller로 Controller 간 공통적인 부분이 통합되어 모든 요청들이 Front Controller를 거치고 나서, 각 Controller 부분으로 전달되는 구조가 된다. 2. 프론트 컨트롤러 작성해보기(V1) 작성할 파일들의 구조는 다음과 같다. 각 페이지에 해당하는 컨트롤러인 MemberFormControllerV1, MemberListControllerV1, Me..
[TIL] 1:N 관계 DB를 SQL 문으로 합계로 조회하기 po라는 테이블과 pol 이라는 테이블이 1:N의 관계를 갖고 있다고 가정하자. 합계 구하기 다음과 같이 조회한다면 3개의 행 값(id = 1, 2, 3)인 값이 조회될 것이다. SELECT * FROM po po.id별로 조회되는 것을 확인할 수 있다. LEFT JOIN을 하면, 6개의 행 값이 조회된다. SELECT * FROM po LEFT JOIN pol on po.id = pol.po_id 갯수가 더 많은 pol 기준으로 조회되고, 이에 따라 po.id가 중복된 값들을 확인할 수 있다. 이렇게 LEFT JOIN이 된 상황에서, po.id의 갯수를 구함과 동시에 pol.id의 갯수 합계를 구하고자 하면 어떻게 해야할까? 예를 들어 위 그림에서 총 13개 행 중에 po.id가 중복되지 않는 갯수는 ..
[스프링 웹MVC] 6. MVC 패턴 적용 1. MVC 패턴 개념 MVC 패턴을 적용한다. 서블릿이나 JSP로 작성하던 방식들은 HTML 코드와 자바 코드가 혼재되어 유지보수에 좋지 않은 단점이 있었다. 이 통합된 코드를 컨트롤러(Controller)와 뷰(View)로 분리하는 것이 MVC 패턴의 개념이다. 또 다른 요소인 Model 까지의 기본 개념은 다음과 같다. Controller : HTTP 요청을 받고, 비즈니스 로직을 실행하는 부분이다. 비즈니스 로직을 호출해서 처리 결과를 Model에 담고, View 로직을 실행한다. 비즈니스 로직은 Service에 있다. Controller에서는 Service 객체를 호출하는 것이다. 그리고 Service 에서 Database에 접근하는게 일반적이다. View : Model에 담긴 데이터를 참고하여..
[스프링 웹MVC] 5. 서블릿, JSP 로 회원관리 웹앱 만들기 회원관리 웹 애플리케이션을 만든다. 서블릿, JSP 순서대로 만들어가면서 어떤 점이 개선되어야 하는지, 그리고 개선점이 어떻게 반영되어 현재의 Spring MVC에 도달하였는지 이해해보자. 앞서 HttpServletRequest, HttpServletResponse 객체에 대해 이해했다면, 코드는 길지만 쉬운, 실습 목적의 내용이다. 1. 회원관리 객체 생성 Member 클래스를 만든다. id, username, age를 필드로 갖는다. Member 클래스 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 31 32 33 package hello.servlet.domain.member; import lombok..