본문 바로가기

Programming/스프링

(17)
[김영한 스프링 MVC 1] 스프링 MVC - 구조 이해 스프링 MVC 전체 구조 직접 만든 MVC 프레임워크 - 실제 스프링 MVC 구조 비교 FrontController → DispatcherServlet handlerMappingMap → HandlerMapping MyHandlerAdapter → HandlerAdapter ModelView → ModelAndView viewResolver → ViewResolver MyView → View DispatcherServlet 스프링 MVC의 핵심 DispacherServlet => 부모 클래스에서 HttpServlet을 상속받아 사용, 서블릿으로 동작 (DispatcherServlet → FrameworkServlet → HttpServletBean → HttpServlet) 스프링 부트는 Dispache..
[김영한 스프링 MVC 1] MVC 프레임워크 만들기 프론트 컨트롤러 패턴 소개 프론트 컨트롤러 도입 전 프론터 컨트롤러 도입 후 특징 프론트 컨트롤러 서블릿 하나로 클라이언트 요청 받음 → 프론트 컨트롤러가 요청에 맞는 컨트롤러 찾아 호출함 공통 처리 → 나머지 컨트롤러들은 서블릿 사용하지 않아도 됨 스프링 웹 MVC 스프링 웹 MVC의 DispatcherServlet => 프론트 컨트롤러 패턴으로 구현됨 프론트 컨트롤러 도입 ControllerV1 package hello.servlet.web.frontcontroller.v1; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRespo..
[김영한 스프링 MVC 1] 서블릿, JSP, MVC 패턴 회원 관리 웹 애플리케이션 요구사항 회원 정보 나이 : age 이름 : username 기능 요구사항 회원 저장, 회원 목록 조회 클래스 회원 도메인 모델 package hello.servlet.domain.member; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Member { private Long id; // 회원 저장소에서 id 할당시킴 private String username; private int age; public Member() { } public Member(String username, int age) { this.username = username; this.age = age; } } 회원 저장..
[김영한 스프링 MVC 1] 서블릿 프로젝트 생성 JSP 실행하기 위해서 WAR 패키징 선택 Hello 서블릿 스프링부트 환경에서 서블릿 등록, 사용하기 서블릿 등록 @WebServlet(name="helloServlet", urlPatterns = "/hello") //서블릿 이름, url 매핑 public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("HelloServlet.service"); System.out.println("req = " + req); S..
[김영한 스프링 MVC 1] 웹 애플리케이션 이해 웹 서버, 웹 애플리케이션 서버 웹 => HTTP 기반 HTTP에 모든 것 전송 (HTML, TEXT, 이미지, 영상, JSON, XML 등) 서버 간 데이터 전송 시에도 대부분 HTTP 사용 웹 서버 HTTP 기반으로 동작 정적 리소스 제공, 기타 부가 기능 정적 HTML, CSS, JS, 이미지, 영상 ex) NGINX, APACHE 웹 애플리케이션 서버 (WAS) HTTP 기반으로 동작 웹 서버 기능 포함 (정적 리소스 제공 가능) 프로그램 코드를 실행해서 애플리케이션 로직 수행 - 동적 HTML, HTTP API (JSON) - 서블릿, JSP, 스프링 MVC ex) 톰캣(Tomcat) Jetty, Undertow 웹 서버 - WAS 차이점 웹 서버 : 정적 리소스(파일) WAS : 애플리케이션 ..
[스프링] 컨트롤러 파라미터 어노테이션 - 클라이언트 → 서버 참고: https://kingchan223.tistory.com/128 https://ttl-blog.tistory.com/257 스프링부트 프로젝트 당시에는 프론트 단과 JSON 데이터를 주고받으면서 Controller에서 @RequestBody와 @PathVariable만 주로 사용했었다. 최근에는 @ModelAttribute 등 다양한 어노테이션을 사용해보게 되었고, 이러한 어노테이션들을 잘 아는 상태에서 활용하고자 정리해보기로 했다. 일단은 클라이언트 → 서버 방향의 데이터 전달 방식부터! (@RequestParam, @ModelAttribute, @PathVariable, @RequestPart, @RequestBody) 1. GET 요청 파라미터 / HTML form 데이터 @RequestPa..
김영한 ORM 표준 JPA 프로그래밍 (기본) - 엔티티 매핑 객체-테이블 매핑: @Entity, @Table 필드-컬럼 매핑: @Column 기본키 매핑: @Id 연관관계 매핑: @ManyToOne,@JoinColumn => 다음 장 객체와 테이블 매핑 @Entity => JPA를 사용해 테이블과 매핑할 클래스 / JPA의 관리 받음 기본 생성자 필수 (public 또는 protected) final 클래스, enum, interface, inner 클래스 사용 X 저장할 필드에 final 사용 X 속성 (name) : JPA에서 사용할 엔티티 이름 지정 (기본값) 클래스 이름 그대로 사용 ex. Member 같은 클래스 이름이 없으면 가급적 기본값 사용 @Table : 엔티티와 매핑할 테이블 지정 속성 기능 기본값 name 매핑할 테이블명 엔티티 이름 catal..