목록Spring (9)
celina의 이것저것
현재 대세는 JPA라고는 하지만, 여전히 MyBatis가 쓰이는 곳도 많고, MyBatis도 쓸줄 알아야향후 JPA도 잘 이해할 수 있을 것같아서 v1은 MyBatis로 진행하였다. MyBatis를 사용하여 개발하는 방법은 두 가지 방식이 있다.1. Controller -> Service -> Mapper -> DB2. Controller -> Service -> Repository -> Mapper -> DB 1. Controller -> Service -> Mapper -> DB: Service에서 Mapper를 직접 주입받아 사용한다. @Service public class UserService { private final UserMapper userMapper; // Mapper 직접 ..
1. 서블릿 필터 애플리케이션 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사 라고 한다.예를들면, 쇼핑몰 페이지에서, 로그인을 하지 않은 사용자에게는 상품 관리 버튼이 보이지 않아야한다.그런데 생각해보면, 등록, 수정, 삭제, 조회 등등 페이지 모두를 다 로그인 로직을 거쳐야한다.이런 관심사를 서블릿 필터/스프링 인터셉터 를 통해 해결한다. 필터의 흐름HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러필터가 호출되고 서블릿이 호출된다. 필터는 특정 URL 패턴에 적용할 수 있다.여기서 서블릿은 디스패처 서블릿이다! 필터 제한HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 //로그인 사용자HTTP 요청 -> WAS -> 필터(적절하지 않은 요청이라 판단, 서블릿 호출X)..
1. 쿠키로그인한 유저의 상태를 유지하기 위해서는 쿠키라는 것을 사용하면 유지할 수 있다. 쿠키에는 두가지 종류가 있다.1. 영속 쿠키: 만료 날짜를 입력하면 해달당 날짜까지 유지2. 세션 쿠키: 만료 날짜를 생략하면 브라우저 종료시까지 유지 쿠키 생성// 로그인 컨트롤러@PostMapping("/login")public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response) { if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember =..
등장 배경이 패턴이 없을때에는 하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링을 모두 처리했다. 이렇게 되면 단순히 UI만 바꾸는데도 비즈니스 로직이 함께 있는 파일을 수정해야한다. 즉, 또한 비즈니스 로직 하나를 수정해야하는데 수천줄의 HTML코드가 함께 있다... Model View Controller컨트롤러: HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다.모델: 뷰에 출력할 데이터를 담아둔다. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해주는 덕분에 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 되고, 화면을 렌더링 하는 일에 집중할 수 있다.뷰: 모델에 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중..
1. HTTP 요청 데이터 - HtttpServletRequest1. GET - 쿼리 파라미터/url**?username=hello&age=20**메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달예) 검색, 필터, 페이징등에서 많이 사용하는 방식2. POST- HTML Formcontent-type: application/x-www-form-urlencoded메시지 바디에 쿼리 파리미터 형식으로 전달 username=hello&age=20예) 회원 가입, 상품 주문, HTML Form 사용3. HTTP message body에 데이터를 직접 담아서 요청 content-type: application/x-www-form-urlencoded메시지 바디에 쿼리 파리미터 형식으로 전달 user..
서블릿이란?자바를 애플리케이션에서 클라이언트의 요청을 처리하고 응답을 반환하는 역할을 하는 하나의 클래스이다. 서블릿을 통해 할 수 있는 일들은 다음과 같다. 1. HTML폼에 사용자가 입력을 할 수 있다.사용자가 입력한 데이터가 폼을 통해 서버로 전송됨, 사용자가 아이디, 비밀번호를 입력하고 확인 버튼을 누르면 HTTP로 서블릿에게 데이터가 전송되고, 서블릿은 데이터를 사용하여 로그인 로직을 처리한다. 2. 데이터베이스에 쿼리를 날린다.서블릿은 외부 서버 중 하나인 데이터베이스와의 연결도 담당한다. JDBC API를 사용해 Connection 객체를 생성하고 PreparedStatment 객체 등을 사용하여 SQL 쿼리를 디비에 전송한다. 3. 동적 웹 환경 구성서버 측에서 데이터를 기반으로 HTML을..
서두 싱글톤을 보장하기 위해 @Configuration을 붙이고 @Bean 을 등록하는건 귀찮다.게다가 서비스가 커지면 하나하나 다 붙이는게 힘들다.그래서 이것을 자동으로 간소화하기 위한게 등장한다.-> @ComponentScan과 @Autowired @ComponentScan (컴포넌트 스캔)Spring에서 클래스에 @Configuration, @RestController, @Service 등의 어노테이션을 선언하면 스프링은 해당 어노테이션들을 스캔해서 빈으로 등록해준다. 이러한 역할을 하는 것이 @ComponentScan 어노테이션이다. @ComponentScan 은 단어 그대로 @Component 어노테이션이 붙은 클래스들을 스캔하여 스프링 빈으로 등록하는데, 위에 언급된 어노테이션들은 모두..
AppConfig란?구현 객체를 생성하고 연결하는 책임을 가지는 별도의 클래스이다. 이 클래스는 기획자의 역할을 하는 클래스이다. 애플리케이션의 모든 설정을 정의하는 클래스다.@Configurationpublic class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderServiceImpl( memberRepository(), discountPolicy())..