1. Argument Resolver란? - 사용자가 임의의 값을 컨트롤러의 메소드 인자로 전달할 때 사용됨 - 예를 들어, 세션에 저장되어 있는 값 중 특정 이름의 값을 메소드 인자로 전달하는 경우 즉, 어떠한 요청이 컨트롤러에 들어왔을 때, 요청에 들어온 값으로부터 원하는 객체를 만들어내는 일을 Argument Resolver가 간접적으로 해줄 수 있음 예를 들어, 사용자가 로그인되어 있을 때, 올바른 사용자인지 확인해야 함. 사용자가 가진 토큰이 유효한 토큰인지 검증을 거친 후, 토큰에 저장된 id를 꺼내 LoginMember라는 객체로 만들어내는 과정이 필요 -> 이때 ArgurmentResolver를 사용할 수 있음 Argument Resolver와 Interceptor의 차이점 - Argume..
1. 인터셉터(Interceptor)란? 1. Filter 요청이 들어오면, web.xml과 같은 파일에 등록된 필터를 거침 요청을 받아내기 전, 응답을 보내기 전 필터가 수행됨 2. DispatcherServlet 이후 DispatcherServlet에 넘어감 선처리 작업 후, HandlerMapping을 통해 어떤 Handler가 동작해야 하는지 찾고 실행하도록 함 Handler를 실행할 때, HandlerInterceptor를 거침 이후 View의 정보를 반환받아, ViewResolver를 통해 View를 찾고 응답함 인터셉터 (Interceptor) - Interceptor는 DispatcherServlet에서 Handler(Controller)로 요청을 보낼 때, Handler에서 Dispatc..
세션 관련 애노테이션 @SessionAttributes 와 @ModelAttribute - @SessionAttributes 파라미터로 지정된 이름과 같은 이름이 @ModelAttribute에 지정되어 있을 경우, 메소드가 반환하는 값은 세션에 저장됨 - 아래의 예제는 세션의 값을 초기화하는 목적으로 사용됨 @SessionAttributes("user") public class LoginController { @ModelAttribute("user") public User setUpUserForm() { return new User(); } } - @SessionAttributes의 파라미터와 같은 이름이 @ModelAttribute에 있을 경우, 세션에 있는 객체를 가져온 후 클라이언트로 전송받은 값을..
1. 웹에서의 상태 유지 기술 - HTTP 프로토콜은 상태 유지가 되지 않는 프로토콜 - 웹 브라우저(클라이언트)의 요청에 대한 응답을 하고 나면, 해당 클라이언트와의 연결을 지속하지 않음 - 상태 유지를 위해 Cookie와 Session 기술이 등장함 쿠키 - 사용자 컴퓨터에 저장 - 저장된 정보를 다른 사람 또는 시스템이 볼 수 있는 단점 - 유효시간이 지나면 사라짐 세션 - 서버에 저장 - 서버가 종료되거나 유효시간이 지나면 사라짐 쿠키의 동작 이해 1. 클라이언트가 WAS에게 요청 2. WAS는 쿠키 생성 3. WAS는 쿠키를 포함하여 클라이언트에게 응답함 4. 클라이언트는 다음 요청 시 쿠키를 포함하여 요청함 5. WAS는 쿠키를 받아서 검사함 세션의 동작 이해 1. 클라이언트가 WAS에게 요청..
1. @RestController - Spring MVC가 제공함 - Spring 4에서 Rest API 또는 Web API를 개발하기 위해 등장한 애노테이션 - 이전 버전의 @Controller와 @ResponseBody를 포함함 MessageConverter - 자바 객체와 HTTP 요청 및 응답 바디를 변환하는 역할 - @ResponseBody, @RequestBody - @EnableWebMvc로 인한 기본 설정 ex) 외부에서 전달받은 JSON 메소드를 내부에서 사용할 수 있는 객체로 변환하기 ex) 컨드롤러가 리턴한 객체를 JSON으로 변환해서 클라이언트에게 전달할 수 있도록 하기 JSON 응답하기 - 컨트롤러의 메소드에서는 JSON으로 변환될 객체를 반환함 - jackson 라이브러리를 추가..
0. 방명록 만들기 실습 - Spring JDBC를 이용한 DAO 작성 - Controller + Service + DAO - 트랜잭션 처리 - Spring MVC에서 form 값 입력받기 - Spring MVC에서 redirect하기 - Controller에서 jsp에게 전달한 값을 JSTL과 EL을 이용해 출력하기 요구사항 요구사항 1 - 방명록 정보는 guestbook 테이블에 저장됨 - id는 자동으로 입력됨 - id, 이름, 내용, 등록일을 저장함 요구사항 2 - http://localhost:8080/guestbook 을 요청하면 자동으로 /guestbook/list로 리다이렉트 함 - 방명록이 없으면 건수는 0이 나오고, 아래에 방명록을 입력하는 form이 보여짐 요구사항 3 - 이름과 내용..
0. 배경 URL은 다르지만 중복되는 부분이 있다면? 중복되는 부분을 별도의 객체나 메소드로 분리해서 Controller에서 처리하도록 -> Service 객체로 구현하고 컨트롤러는 Service 객체를 사용하도록 함 1. Service 객체란? - 비즈니스 로직을 수행하는 메소드를 가지고 있는 객체 - 보통 하나의 비즈니스 로직은 하나의 트랜잭션으로 동작함 2. 트랜잭션이란? - 하나의 논리적인 작업 - 원자성, 일관성, 독립성, 지속성 JDBC 프로그래밍에서 트랜잭션 처리 방법 - DB에 연결된 후, Conenction 객체의 setAutoCommit 메소드에 false를 파라미터로 지정 - 입력, 수정, 삭제 SQL을 실행한 후, 모두 성공했을 경우 Connectino이 가지고 있는 commit()..
Spring MVC를 이용한 웹 페이지 작성 실습 - Exam 1 목표 웹 브라우저에서 http://localhost:8080/mvcexam/plusform 이라고 요청을 보내면 서버는 웹 브라우저에게 2개의 값을 입력받을 수 있는 입력 창과 버튼이 있는 화면을 출력한다. 웹 브라우저에 2개의 값을 입력하고 버튼을 클릭하면 http://localhost:8080/mvcexam/plus URL로 2개의 입력값이 POST방식으로 서버에게 전달한다. 서버는 2개의 값을 더한 후, 그 결과 값을 JSP에게 request scope으로 전달하여 출력한다. Spring MVC가 지원하는 메소드 인수 애노테이션 @RequestParam - Mapping된 메소드의 Argument에 붙일 수 있는 애노테이션 - @Re..
1. MVC란? - Model-View-Controller - Model: 뷰가 렌더링 할 때 필요한 데이터. 사용자가 요청한 상품 목록이나 주문 내역 등 - View: 실제로 보여지는 부분. 모델을 사용해서 렌더링을 함. - Controller: 사용자의 액션에 응답하는 컴포넌트. 모델을 업데이트하고 다른 액션을 수행함 MVC Model 1 아키텍처 - 브라우저가 요청하면, 해당 요청을 JSP가 받음 - 요청만큼 JSP 페이지가 존재해야 함 - Java Bean을 통해 DB와 연결됨 - 문제점: JSP 자체에 HTML, JAVA 코드가 섞여있음. 유지보수가 어려움 MVC Model 2 아키텍처 - 요청을 Servlet이 받게 함 - Servlet이 Java Bean을 통해 DB에서 데이터를 꺼내옴 - ..
1. Spring JDBC란? - JDBC 프로그래밍을 보면 반복되는 개발 요소가 있음 (드라이버 로드하고 Connection, Statement, ResultSet 객체 생성 등) - 이러한 JDBC의 모든 저수준 세부사항을 Spring이 처리해줌 개발자가 해야 할 일 Spring JDBC 패키지 org.springframework.jdbc.core - JdbcTemplate 및 관련 Helper 객체 제공 org.springframework.jdbc.datasource - DataSource를 쉽게 접근하기 위한 유틸 클래스, 트랜잭션매니저 및 다양한 DataSource 구현을 제공 org.springframework.jdbc.object - RDBMS 조회, 갱신, 저장 및 안전하고 재사용 가능한 ..