스프링MVC

· Spring/mvc
프론트 컨트롤러 패턴 소개 공통의 관심사를 별도로 모으는 소위 문지기 역할을 하는 것을 controller앞에 도입한다. 프론트 컨트롤러 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 입구를 하나로 공통 처리 가능 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨. 스프링 웹 MVC와 프론트 컨트롤러 스프링 웹MVC의 핵심도 바로 프론트컨트롤러이며 스프링 웹MVC의 DispatcherServlet이 프론트 컨트롤러 패턴으로 구현되어 있음 프론트 컨트롤러 도입 전 과 후의 아키텍쳐 Goal : 기존 코드를 최대한 유지하면서, 프론트 컨트롤러를 도입해본다. 먼저 구조를 맞추어두고 점진적으로 리팩토링을 한다. 프론트..
· Spring/mvc
MVC 패턴의 개요 너무 많은 역할 : 하나의 서블릿이나 JSP만으로 비지니스 로직과 뷰 렌더링까지 모두 처리하게 되면 유지보수가 어려워진다. 변경의 라이프 사이클 : UI와 비지니스 로직을 수정하는 일은 다르게 발생하고 서로에게 영향을 주지 않으므로 유지보수에 부적합 기능 특화 : 특히 JSP와 같은 뷰 템플릿 화면은 렌더링하는데 최적화 ModelViewController MVC 패턴이란 하나의 서블릿이나 JSP로 처리하던 것을 컨트롤러(Controller)와 뷰(View)라는 영역으로 역할을 나누는 것을 의미한다. 구분 역할 컨트롤러 HTTP 요청을 받아 파라미터를 검증하고 비지니스로직을 호출한다. 그리고 뷰에 전달할 결과 데이터를 조회하여 모델에 담는다 모델 뷰에 출력할 데이터를 담아둔다. 뷰가 필..
· Spring/mvc
JSP로 회원 관리 웹 어플리케이션을 만들어 보자 JSP 라이브러리 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' //JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper:' implementation 'javax.servlet:jstl:1.2' //JSP 추가 끝 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-..
· Spring/mvc
회원 관리 웹 어플리케이션 요구사항 회원정보 이름 : username 나이 : age 기능 요구사항 회원 저장 회원 목록 조회 본격적으로 서블릿으로 회원 관리 웹 어플리케이션을 만들어 보자 회원 도메인 모델 package hello.servlet.domain.member; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Member { private Long id; private String username; private int age; Member(){ } public Member(String username, int age){ this.username = username; this.age = age; } } 위의 패키..
· Spring/mvc
HTTP 응답 메세지는 주로 다음 내용을 담아서 전달한다 단순 텍스트 응답 writer.println("ok"); HTML 응답 HTTP API - MessageBody JSON 응답 HTML 응답 @WebServlet(name="responseHtmlServlet", urlPatterns = "/response-html") public class ResponseHtmlServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Content-Type: text/html; cha..
· Spring/mvc
HttpServletResponse 역할 HTTP 응답 메세지를 생성한다 HTTP 응답코드 지정 헤더 생성 바디 생성 편의기능 제공 Content-Type, 쿠키, Redirect 직접 헤더 정보 출력해보기 @WebServlet(name="responseHeaderServlet", urlPatterns = "/response-header") public class ResponseHeaderServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //[status-line] res..
· Spring/mvc
HttpServletRequest 역할 HTTP 요청 메세지를 개발자가 편리하게 사용할 수 있도록 HTTP를 파싱한다. 그리고 그 결과를 HttpServletRequest객체에 담아서 제공한다. HTTP 요청 메세지 POST /save HTTP/1.1 Host: localhost:8080 Content-Type: application/x-www-form-urlencoded username=rosieposie&age=22 START LINE HTTP 메소드 URL 쿼리 스트링 스키마, 프로토콜 헤더 헤더 조회 바디 form 파라미터 형식 조회 message body 데이터 직접 조회 임시 저장소 기능 해당 HTTP 요청이 시작부터 끝날 때까지 유지되는 임시 저장소 기능 저장 : request.setAttr..
· Spring/mvc
** 톰캣서버를 설치하고 서블릿 코드를 클래스 파일로 빌드해서 올리는 과정은 번거로우니 내장 톰캣이 있는 스프링부트 환경에서 진행 1. HelloServlet.java 생성 HttpServlet을 상속을 받고 @WebServlet 컴포넌트를 사용하여 name과 urlPatterns를 지정해준다. ctrl+o를 해서 protected service 메서드를 만든다. 이 서블릿이 호출이되면 서비스 메서드가 호출이 되도록 !!! 그리고 스프링 실행하자마자 에러 등장 ㅋㅋㅋㅋㅋㅋㅋ 아래는 에러 문구 Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: 내가 작성한 코드는 없었고 컴포넌트, 메서드는..
· Spring/mvc
스프링프로젝트 쉽게 생성해주는 https://start.spring.io/ 로 접속하여 아래와 같이 세팅하고 Generate 클릭 ** Jsp를 사용할 것이기 때문에 war로 패키징을 선택 보통 jar 사용시에는 내장 톰캣(스프링부트) = 스프링부트가 빌드된 결과에 톰캣 서버를 내장해서 바로할 때 사용한다. war도 동일하게 위와 같이 되지만, 톰캣 서버를 별도로 설치하고 별도로 war에 빌드해서 넣을 때 사용함!!! 2. 생성된 zip파일을 사용할 폴더에 넣고 압축해제 3. 인텔리제이에서 오픈선택 후 servlet -> build.gradle 오픈! ** 프로젝트가 오픈이 되면 꼭 build.gradle 파일에서 패키징이 war로 되어있는지 확인할 것! plugins { id 'org.springfra..
· Spring/mvc
정적리소스 고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 제공 주로 웹 브라우저 HTML 페이지 동적으로 필요한 HTML 파일을 생성해서 전달 웹브라우저 : HTML 해석 -> 나의 정보(동적인 정보)가 담긴 HTML을 내려줌 HTTP API HTML이 아니라 데이터를 전달 주로 JSON 형식 사용 (xml 일 수도 있음) 다양한 시스템에서 호출 데이터만 주고 받음. UI 필요 시 클라이언트 별도 처리 앱 클라이언트 to 서버, 웹 클라이언트 to 서버, 서버 to 서버 (ex. 사용자 서버 -> 계좌 검증 서버) CSR (Client Side Rendering) 서버에서 index.html 파일을 클라이언트에 보내주면 일반적인 csr프레임워크 (리엑트, 뷰, 앵귤러)는 body안의 id="..
dev_rosieposie
'스프링MVC' 태그의 글 목록 (2 Page)