본문 바로가기
관리자

Programming-[Backend]/Spring

(76)
[스프링 웹MVC] 7. 프론트 컨트롤러(Front Controller) - 1. 컨트롤러 수정 1. 프론트 컨트롤러의 개념 이제 Controller의 공통적인 부분을 담당하는 Front Controller를 만들어본다. 여기서부터 Controller를 발전시켜나가다보면, 결국 스프링 MVC 프레임워크에 다다르게 된다. 기존에는 각 클라이언트가 필요한 정보에 따라 각 Controller에 요청하는 구조였지만, Front Controller로 Controller 간 공통적인 부분이 통합되어 모든 요청들이 Front Controller를 거치고 나서, 각 Controller 부분으로 전달되는 구조가 된다. 2. 프론트 컨트롤러 작성해보기(V1) 작성할 파일들의 구조는 다음과 같다. 각 페이지에 해당하는 컨트롤러인 MemberFormControllerV1, MemberListControllerV1, Me..
[스프링 웹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..
[스프링 웹MVC] 4. HTTP 응답 정보 : 서블릿 - HttpServletResponse HttpServletResponse는 서버에서 클라이언트로 전달하고자 하는 응답 메시지를 작성하기 위한 기능들을 제공하는 객체이다. 기본적으로 HTTP 응답코드 지정, 헤더, 바디 생성 기능을 해준다. 또한 편의기능으로 Content-Type 지정, 쿠키 지정, Redirect 기능을 제공한다. 1. 헤더에 정보 담기 헤더 헤더에 정보를 담을 수 있다. .setStatus(), .setHeader() 등을 사용해보자. 응답 결과는 브라우저의 Network 탭에서 확인할 수도 있지만, postman으로 편하게 조회해볼 수도 있다. HttpServletResponse.SC_OK와 같이 의미를 바로 전달할 수 있는 상수 타입을 사용할 수 있는 것을 확인하자. 그리고 .setHeader()뿐 아니라 setCon..
[스프링 웹MVC] 3. HTTP 요청 정보 : 서블릿 - HttpServletRequest 서블릿이 제공하는 요청에 대한 정보를 담고 있는 HttpServletRequest 객체에 대해서 더 자세히 알아보자. 1. Header 정보 Header Start Line 정보 HttpServletRequest에서는 아래와 같은 다양한 메서드를 제공한다. 브라우저에서 localhost:8080/request-header?username=charlie 로 접속하여 결과를 출력해보자. 그리고 출력 함수를 [Ctrl + Alt + m] 단축키로 printStartLine이라는 메서드로 뽑아내자. RequestHeaderServlet 파일 일부 - printStartLine 메서드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 @WebServlet(..
[스프링 웹MVC] 2. 프로젝트 생성과 웹서블릿 기본 개념 1. 프로젝트 세팅 프로젝트 생성을 위해 스프링부트 initializer 사이트(start.spring.io)로 이동하여 다음과 같이 프로젝트를 GENERATE한다. IntelliJ에서 초기 세팅은 이전 작성글과 같이 해주면된다. https://whitepro.tistory.com/298 다만 여기서는 lombok을 기본으로 전제로 프로그램을 작성할 것이기 때문에, 사진과 같이 환경설정에서 AnnotationProcessor를 enabled로 변경해주도록 한다. 혹시라도 lombok 관련 오류가 발생한다면, Settings > Plugins > Lombok이 설치되어 있는지 확인한다. 2. 프로젝트 생성 쓰레드를 실행하는 ServletApplication(main method가 있는 파일)에서 @Serv..
[스프링 웹MVC] 1. 웹 애플리케이션 이해 1. 웹서버(WEB)와 웹 애플리케이션 서버(WAS) HTTP와 정적 리소스 거의 모든 통신이 HTTP를 기반으로 한다! HTML, TEXT, 이미지, 음성, 파일, JSON 등 대부분의 데이터가 인터넷의 HTTP라는 프로토콜(규약)을 기반으로 해서 통신한다. 정적 리소스란, 서버 컴퓨터 내에 저장되어 있는 HTML, 이미지, 영상 등으로 클라이언트에서 이런 파일에 대한 요청을 하면, 서버에서는 파일을 전송해주는 방식으로 서버를 구성한다. 클라이언트와 서버간 상호작용을 통해 정보 및 자료가 작성되는게 아니고, 단순히 서버에 존재하는 파일이기 때문에 정적 리소스라는 용어를 사용한다. 정적 리소스를 전달해주는 서버를 웹서버(WEB)라고 한다. WEB 서버와 WAS 반면, 웹 애플리케이션 서버(WAS)란, 웹..
[스프링 기초] 17. 빈 스코프 : 웹 스코프와 프록시 1. 웹 스코프 웹스코프의 특징과 종류 스프링은 주로 웹 기술에 적용되므로, 웹과 관련된 스코프가 따로 지정되어 있다. 웹 스코프는 웹 환경에서만 동작한다는 특징이 있다. 웹 스코프의 종류는 다음과 같다. request : HTTP 요청 하나가 들어오고 나갈 때까지 유지된다. 각 HTTP 요청마다 개별적으로 인스턴스가 생성되고 관리된다. session : HTTP session과 동일한 주기를 갖는다. application : 서블릿 컨텍스트와 동일한 주기를 갖는다. websocket : 웹 소켓과 동일한 주기를 갖는다. 각 스코프는 생명주기만 다르고, 동작 방식은 거의 같다. 강의에서는 request 스코프를 예제로 학습해본다. 웹 스코프 연습해보기 : 웹 Logger 만들기 웹 스코프는 프로토타입 스..