개인 공부/spring
-
spring[15] 직접 만든 MVC Framework와 Spring MVC Framework 비교개인 공부/spring 2021. 6. 13. 09:06
Spring MVC와 내가 만든 미니 MVC 지금까지 만든 MVC 프레임워크와 실제 Spring 프레임워크를 비교해보자. 지금까지의 구조를 잘 정리하고 이해했다면 우리가 만든 구조와 다른점이 거의 없다는 것을 알 수 있다. 위 그림과 아래 그림의 차이는 FrontController라는 이름 대신 DispatcherServlet이란 이름 차이일뿐 둘다 Servlet을 상속받아서 사용되는것도 똑같다. 그럼 실제 코드로 어떻게 동작하는 구조인지도 살펴보자 Spring MVC 실제 동작 구조 Dispatcher Servlet 동작 구조 Spring MVC도 프론트 컨트롤러 패턴으로 구현되어 있다. Spring의 프론트 컨트롤러가 바로 DispatcherServlet이다. 그리고 이 DispatcherServle..
-
spring[14] Servlet의 MVC Framework 만들기개인 공부/spring 2021. 6. 12. 13:26
지금까지 공부한 MVC spring하면 mvc 패턴의 framework로 잘 알고 있다. 하지만 이번에는 spring은 사용하지 않고 지금까지 공부한 servlet을 활용하여 mvc 패턴을 구현해보려고 한다. 위 그림과 같이 기존의 MVC 패턴으로 구현한 Servlet은 client의 하나의 url 호출이 있을때 하나의 매칭되는 하나의 servlet에서 controller와 같이 정보를 넘겨주는 방식이였다. 하지만 작동하는 servlet을 url마다 생성해야하고 하는 동작은 url의 값을 읽어와 view와 연결시켜주는 코드는 사용자가 요청한 서비스 로직을 제외하면 계속해서 반복되어지는 코드가 발생했다. 그래서 이 상황을 더 개발자스럽게 해결하기 위해 FrontController 패턴이 등장했다. Fron..
-
spring[13] Servlet의 MVC 패턴 적용개인 공부/spring 2021. 6. 9. 22:08
MVC 패턴이 등장한 이유 하나의 서블릿이나 JSP만으로 비지니스 로직과 뷰 렌더링까지 모두 처리하게 되면 유지보수가 어려워진다. 또한 뷰와 서비스 로직은 변경 사이클이 다르다. 예를 들어 화면이 변경됨에 따라 기능이 변경되지 않을 수 있고 기능이 변경됨에 따라 화면이 변경되지 않을 경우가 있기 때문이다. MVC란 Model : view에 출력할 데이터를 담아둔다. model 덕분에 view는 비지니스 로직이나 데이터 접근에 대해 몰라도 되고 화면 렌더링에 집중할 수 있다. View : 모델에 담겨있는 데이터를 사용하여 화면을 렌더링하는 일에 집중한다. Controller : HTTP 요청을 받아 파라미터를 검증하고 비지니스 로직을 실행한다. 그리고 View에 전달할 결과 데이터를 model에 담는다. ..
-
spring[12] Servlet, jsp를 사용하여 웹 페이지 구현개인 공부/spring 2021. 6. 7. 22:00
기본 프로젝트 생성 간단한 회원가입 어플리케이션을 만들기 위해 Member class를 만든다. @Getter @Setter public class Member { private Long id; private String username; private int age; public Member() { } public Member(String username, int age) { this.username = username; this.age = age; } } Member 객체를 저장할 Repository를 생성하는데 실제 DB와 연결은 하지 않고 Map으로 휘발성 메모리로 사용한다. 하지만 일반 Map은 동시에 접속하여 사용했을때 문제가 되기 때문에 실무에서는 ConcurrentHashMap, Atomi..
-
spring[11] Servlet - response(응답)개인 공부/spring 2021. 6. 6. 09:40
HTTP 응답 메세지 생성 HTTP Response에서 우리가 해야할 작업은 HTTP 응답코드 지정 헤더 생성 바디 생성 편의 기능 제공 Content-Type 쿠키 Redirect 다음과 같다. 그럼 코드로 위의 작업들을 어떻게 수행하는지 확인해보자. import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import ..
-
spring[10] Servlet - request(요청)개인 공부/spring 2021. 6. 6. 08:40
Servlet의 데이터 요청 방식 GET - query parameter url?name=이름&age=10 메세지 바디 없이 url의 쿼리 파라미터를 사용하여 데이터를 전달 검색, 페이징, 필터에 주로 사용됨 POST - Form content-type: application/x-www-form-urlencoded 메세지 바디에 쿼리 파라미터 형식으로 전달 회원가입, 상품주문, form 데이터를 전달 받을 때 사용 HTTP message body 주로 json 데이터를 전달 HTTP API에서 사용 GET - query parameter import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import java..
-
spring[9] Servlet - 서블릿의 구조와 정보개인 공부/spring 2021. 6. 5. 08:25
Servlet이란 서블릿이란 개발자가 HTTP 메세지로 통신할때 필요한 기본 과정들이 존재하는데 그 과정을 간소화 시켜주고 개발자는 핵심 비지니스 로직에 집중할 수 있게 도와주는 기능을 말한다. 서블릿이 없을땐 위의 삭제된 과정들을 개발자가 직접 코드로 만들어야하는데 우리는 서블릿을 사용함으로 이 작업들을 축소하고 핵심 비지니스 로직에만 집중할 수 있다. 그렇다면 이 서블릿은 누가 제공하는걸까? 서블릿은 was에서 HTTP 메세지를 받았을 때 서블릿 컨테이너를 통해 개발자가 요청과 응답을 사용하기 쉽게 만들어준다. 그럼 was에서 제공해주는 서블릿 컨테이너가 없다고 가정하고 코드로 한번 서블릿의 구조를 살펴보자 servlet을 직접 설정 servlet을 직접 구현할거지만 정말 옛날처럼 어노테이션의 도움 ..
-
spring[8] web application 이란 (web server와 was)개인 공부/spring 2021. 6. 2. 22:02
Web Server (웹 서버) http 기반으로 동작 정적 리소스와 was에서 제공하지 않는 부가 기능들 제공 HTML, CSS, JS, 이미지, 영상 등 정적 파일 로딩 Apache, Nginx Web Application Server (웹 어플리케이션 서버) http 기반으로 동작 정적 리소스 제공 가능 프로그램 코드를 실행해서 어플리케이션 로직 수행 tomcat, jetty, undertow 웹 서버(web server)와 웹 어플리케이션 서버(was)의 차이 웹 서버는 주로 정적 리소스 제공을 담당하고 was는 어플리케이션 로직 수행을 담당한다. 현대에는 둘의 경계가 애매해짐. 그 이유는 was가 혼자서 web server의 기능을 커버할 만큼 컴퓨터의 성능이 향상되었기 때문 그럼에도 web s..