인프런/스프링 MVC 1편19 7)스프링 MVC 시작하기(버전1 ~ 버전3) ,Http api와 Rest api의 차이 직접 MVC프레임워크를 만들면서 컨트롤러를 만들었는데 그 컨트롤러들을 @RequestMapping 기반의 Spring MVC 컨트롤러로 바꿔보자. 어노테이션기반 스프링 컨트롤러도 버전업을 하면서 개선되어가는 모습을 살펴본다. SpringMemberFormControllerV1 (버전1 , 멤버등록 컨트롤러) @Controller public class SpringMemberFormControllerV1 { @RequestMapping("/springmvc/v1/members/new-form") public ModelAndView process() { return new ModelAndView("new-form"); //프론트컨트롤러인 DispatchServlet이 이 값을 반환받아 뷰리졸버를 찾아 뷰를 .. 인프런/스프링 MVC 1편 2023. 1. 18. 6)스프링 MVC (구조이해),핸들러 매핑과 핸들러 어댑터,뷰 리졸버 Spring MVC (구조 이해) 이전 시간에 직접만든 MVC 프레임워크랑 실제 스프링 MVC를 비교해보자. Spring MVC 구조 FrontController -> Dispatcher Servlet 직접 MVC 프레임워크를 만들때 프론트 컨트롤러는 서블릿으로 만들었다. 서블릿의 urlPatterns(어떤 url을 받을것인지)로 * 기호를 이용하여 원하는 http요청들을 다 받아냈고, 요청에 대해 핸들러를 조회해서 찾아오고, 핸들러 처리할 어댑터도 조회해오고 하면서 진행했다. Spring MVC에서는 Dispatcher Servlet으로 이름만 다르고 하는일은 동일하다. (사전적의미 Dispatch -> 보내다(파견보내다) ,Dispatcher 보내고,배치하는것을 관리하는사람 즉 Dispatcher S.. 인프런/스프링 MVC 1편 2023. 1. 18. 5)MVC 프레임워크 만들어보기(리팩토링하면서 버전업 v1~v5) MVC 프레임워크를 단계적으로 업그레이드 시켜보면서 만들어볼것이다. 결국 끝까지 업그레이드를 하게 되면 Spring MVC와 유사한 구조가 될것이다. 직접 MVC프레임워크를 만들어보고, 업그레이드해보면 나중에 Spring MVC를 배울때 좀더 쉽게 이해할수 있을것이다. 프론트 컨트롤러 소개 이전 강의때 서블릿을 이용해서 컨트롤러를 만들었다. 그때는 http 요청마다 컨트롤러를 만들어줘야했고, 그래서 공통적으로 들어가는 코드가 반복되었다. 프론트컨트롤러를 도입하면 프론트컨트롤러에 공동로직을 몰아두고 프론트컨트롤러를 통해 나머지 컨트롤러로 이동하게끔한다. (프론트 컨트롤러만 서블릿이다.(요청을 받아야하니까), 나머지 컨트롤러는 서블릿을 사용하지않아도 된다.( 요청을 받을 필요가없으니까)) 프론트 컨트롤러 도.. 인프런/스프링 MVC 1편 2023. 1. 17. 4)서블릿,JSP,MVC패턴 적용 서블릿으로 간단한 회원관리 웹어플리케이션을 만들것이다. 그다음은 JSP, 그다음은 MVC패턴으로 만들어볼것이다. 어떤 불편한점이 있어서 MVC패턴이 탄생했는지 알아보고 MVC패턴에 대해 공부해보자. 회원이라는 엔티티 == 도메인모델을 만들어준다. Member.java @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.. 인프런/스프링 MVC 1편 2023. 1. 16. 3)HttpServletRequest,HttpServletResponse Host~ Content-Type 부분이 헤더정보 HttpServeletRequest 객체는 http요청메시지를 편리하게 읽어들이는 기능에다가 부가기능을 제공한다. HttpServletRequest - 기본 사용법 http요청메시지 첫번째 라인에 나오는 정보들, HttpServletRequest객체를 이용하여 가져오기 @WebServlet(name = "requestHeaderServlet",urlPatterns = "/request-header") public class RequestHeaderServlet extends HttpServlet { //헤더정보관련해서 공부용 서블릿 @Override protected void service(HttpServletRequest request, HttpServ.. 인프런/스프링 MVC 1편 2023. 1. 15. 2)서블릿,서블릿컨테이너 일반적으로 Jar지만 JSP공부를 하기위해 이 프로젝트는 War를 선택한다. generate해서 프로젝트 파일받아서 인텔리제이로 열어주고 plugin에서 롬복이 깔려있는지 체크하고 , build시 실행이 gradle로 되는것을 인텔리제이로 바꿔주고, 어노테이션 처리가 잘되게끔 체크해줘야한다. 서블릿을 등록하고 사용해보자. 스프링 부트 서블릿 환경 구성 @ServletComponentScan //서블릿 자동등록 어노테이션, 자동빈등록에 쓰는 @ComponentScan과 같이 , 현재 패키지이하를 모두 뒤져서 서블릿을 찾아, 등록시켜준다. @SpringBootApplication public class ServletApplication { public static void main(String[] args).. 인프런/스프링 MVC 1편 2023. 1. 13. 1)웹서버,웹 어플리케이션 서버,웹 시스템 구성,서블릿,멀티스레드,서버사이드 렌더링,서버 사이드 렌더링 HTTP란? 클라이언트에서 서버로, 서버에서 클라이언트로 데이터를 전송할때 http라는 프로토콜기반으로 동작한다. 그래서 대부분의 데이터는 http기반으로 주고 받는다. 웹 서버(Web Server) 정적 리소스 => 정적 html,css,js,이미지,영상과 같은것들 http 요청이 오면 , 정적 리소스 같은 html데이터를 응답해주는 서버 웹 어플리케이션 서버(WAS - Web Application Server) 웹서버는 정적으로 보여주기때문에 , 특정 사용자마다 다른것을 보여주거나 그런걸 할 수없다. 하지만 웹어플리케이션 서버(was)는 프로그램 코드를 실행해서 어플리케이션 로직을 수행하기 때문에 사용자에 따라서 다른걸 보여줄 수 있다. 웹서버는 정적리소스를 웹 어플리케이션서버(was)는 어플리케이션.. 인프런/스프링 MVC 1편 2023. 1. 13. 이전 1 2 다음