전체 글
-
핸들러 어댑터스프링/스프링 MVC 패턴 2023. 2. 12. 13:46
핸들러 어댑터란 여러 핸들러를 설정하고 그 중 하나를 선택해야 할 상황이 있을 때 핸들러를 매핑해줄 수 있는 장치이다. public interface MyHandlerAdapter { boolean supports(Object handler); ModelView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException; } 핸들러 어댑터 인터페이스를 만들어서 하나의 어댑터로 여러 사이트에 매핑 될 수 있다. public FrontControllerServletV5() { initHandlerMappingMap(); initHandlerAdapters()..
-
프론트 컨트롤러 패턴스프링/스프링 MVC 패턴 2023. 2. 10. 21:19
프론트 컨트롤러가 있기 전까지는 컨트롤러에 공통된 과정이 있더라도 클라이언트가 요청할 때마다 계속해서 반복해야만 했다. 하지만 프론트 컨트롤러를 도입한다면 공통된 컨트롤러는 프론트 컨트롤러에서 처리하고 이후에 각각의 컨트롤러로 넘어가서 반복작업을 하지 않아도 된다는 장점이 있다. 프론트 컨트롤러 - 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 - 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 - 이전에는 고객의 요청이 오면 서블릿 매칭으로 각각 연결이 됐는데, 모든 요청이 프론트 컨트롤러로 가고 그 프론트 컨트롤러에서 이후 컨트롤러로 가게된다. - 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 인터페이스 생성 public interface Controller..
-
MVC 패턴스프링/스프링 MVC 패턴 2023. 2. 10. 18:03
Model View Controller MVC 패턴은 서로 영역을 분리해서 따로 고유의 역할을 부여하는 것이다. 만약에 단순히 UI만 수정해야할 일이 있더라도 서블릿과 JSP는 모든 것이 들어있는 코드를 변경해야한다. MVC 패턴은 View와 Controller가 분리되어 있기 때문에 해당 코드만 고치면 되고 나머지는 손을 안대도 된다. 한 마디로 서로 영향을 주지 않는다는 것이다. 컨트롤러 : HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행. 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다. 모델 : 뷰에 출력할 데이터를 담아둔다. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해주는 덕분에 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 화면에 렌더링 할 수 있다. 뷰 : 모델에 담겨있..
-
JSP를 이용한 회원가입스프링/스프링 MVC 패턴 2023. 2. 10. 16:43
jsp는 html파일에 코드를 입력해서 웹 사이트를 구축하는 방식이다. 여기도 서블릿을 사용했을 때의 과정과 동일하게 가입, 저장, 목록 보여주기 순으로 진행하겠다. 서블릿을 사용할 때와 웹 사이트 구조나 결과가 완전 동일하다. 방식만 다르기 때문에 결과 캡쳐 사진은 생략 new-form.jsp username: age: 전송 처음에는 가입하기 위한 파일이다. localhost:8080/new-form.jsp 경로를 통해 웹 사이트를 등록하면 회원가입을 할 수 있는 파일이다. save.jsp 성공 id= username= age= 메인
-
서블릿을 이용한 회원가입 만들기스프링/스프링 MVC 패턴 2023. 2. 10. 15:55
서블릿을 이용해서 회원가입을 해볼 것이다. new-form @WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/members/new-form") public class MemberFormServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType..
-
서블릿 HTTP 응답 데이터스프링/스프링 MVC 패턴 2023. 2. 10. 14:41
@WebServlet(name = "responseHeaderServlet", urlPatterns = "/response-header") public class ResponseHeaderServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // [status-line] response.setStatus(HttpServletResponse.SC_BAD_REQUEST); // [response-header] response.setHeader("Content-type", "tex..
-
서블릿 HTTP 요청 데이터스프링/스프링 MVC 패턴 2023. 2. 10. 13:12
HTTP에 원하는 값을 요청해서 웹 사이트에 데이터를 보내는 방법이 있다. 1. GET 쿼리 파라미터 @WebServlet(name = "requestParamServlet", urlPatterns = "/request-param") public class RequestParamServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("[전체 파라미터 조회] - start"); request.getParameterNames().asIterator..
-
HTML, HTTP API, CSR, SSR스프링/스프링 MVC 패턴 2023. 2. 7. 16:39
정적 리소스 - 고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 제공 - 주로 웹 브라우저 HTML 페이지 - 동적으로 필요한 HTML 파일을 생성해서 전달 - 웹 브라우저 : HTML 해석 HTTP API - HTML이 아니라 데이터를 전달 - 주로 JSON 형식 사용 - 다양한 시스템에서 호출 - UI 클라이언트 접점 앱 클라이언트(아이폰, 안드로이드 등) 웹 브라우저에서 자바스크립트를 통한 HTTP API 호출 React, Vue.js 같은 웹 클라이언트 SSR - 서버 사이드 렌더링 (필수) - 서버에서 최종 HTML을 생성해서 클라이언트에 전달 HTML 최종 결과를 서버에서 만들어서 웹 브라우저에 전달 주로 정적인 화면에 사용 관련기술: JSP, Tymeleaf -> 주로 백엔드 개발..