본문 바로가기

전체 글100

Security - LogoutFilter 로그아웃 요청을 하면 LogoutFilter가 요청을 받는다 AntPathRequestMatcher가 logout 요청 url 인지 확인한다. 일치하지 않으면 다음 필터로 넘어간다 일치하면 LogoutFilter가 SecurityContext로 부터 인증 객체 Authentication를 가져와서 LogoutHandler에게 전달한다. LogoutHandler가 몇개 있는데 그 중 SecurityContextLogoutHandler가 세션 무효화, 쿠키 삭제, SecurityContextHandler.clearContext()를 실행해서 인증객체를 null로 초기화한다. LogoutHandler가 성공적으로 종료가 되면 LogoutFilter는 SimpleUrlLogoutSuccessHandler를 호출.. 2022. 3. 29.
Security - Login Form 인증 요청이 들어오면 UsernamePasswordAuthenticationFilter를 거친다. AntPathRequestMatcher가 요청 URL 정보가 login(default) 인지 확인한다.(loginProcessingUrl("/login")) 매치되지 않는다면 다음 필터를 실행한다. URL 정보가 일치하면 Username + Password가 저장된 Authentication 인증 객체를 만든다. AuthenticationManager(인증 관리자)에 인증 객체를 넣어서 인증 처리를 실행한다. AuthenticationManager 내부에는 AuthenticationProvider 객체들을 가지고 있고, 그 중 하나를 선택해서 인증 처리를 위임한다. AuthenticationProvider 클래스.. 2022. 3. 29.
요청 메시지 - HttpEntity, @RequestBody HttpEntity, @RequestBody @ResponseBody 가 있다. HttpEntity는 요청 헤더와 바디를 직접 조회할 수 있다. @PostMapping("/request-body-string") public HttpEntity requestBody(HttpEntity httpEntity) throws IOException { String messageBody = httpEntity.getBody(); log.info("messageBody = {}", messageBody); return new HttpEntity("ok"); } @RequestBody : HTTP 메시지 바디를 직접 조회 @ResponseBody : 응답 결과를 HTTP 메시지 바디에 직접 담아서 전달할 수 있다. 물론.. 2022. 2. 19.
요청 파라미터 - @RequestParam, @ModelAttribute 요청 파라미터를 읽어올 수 있는 어노테이션들이다. queryString 혹은 HTML Form 으로 오는 데이터가 요청 파라미터이다. 메시지 바디를 조회하는 것은 HttpEntity가 지원한다. localhost:8080/request-param?username=abc&age=20으로 요청을 보내면 값을 읽을 수 있다. @RequestParam @ResponseBody @RequestMapping("/request-param") public String requestParam(@RequestParam("username") String memberName, @RequestParam("age") int memberAge) { log.info("username={}, age={}", memberName, me.. 2022. 2. 19.
멀티 쓰레드 클라이언트에서 요청을 하면 TCP/IP 연결이 되고 servlet이라는게 호출 된다. 이 서블릿을 누가 호출하냐. 바로 쓰레드라는 것이 호출한다. 쓰레드 애플리케이션 코드를 하나하나 순차적으로 실행하는 것을 쓰레드라고 한다. 즉 메인 메소드를 실행하면 main이라는 이름의 쓰레드가 실행되는 것. 그래서 쓰레드가 없다면 자바 애플리케이션을 실행할 수가 없다. 쓰레드는 한번에 하나의 코드 라인만 수행한다. 그래서 동시 처리가 필요하다면 쓰레드를 추가로 생성해야한다. 클라이언트 요청이 오면 WAS에서 쓰레드를 할당하고 그 쓰레드가 servlet 코드를 실행하는 것. 만약 다중 요청이 들어오는데 단일 쓰레드라면? 요청1에 대한 쓰레드를 할당하고 servlet을 실행하는데 어떤 이유에서 처리가 지연되고 있는 상황.. 2022. 2. 19.
멀티 쓰레드 클라이언트에서 요청을 하면 TCP/IP 연결이 되고 servlet이라는게 호출 된다. 이 서블릿을 누가 호출하냐. 바로 쓰레드라는 것이 호출한다. 쓰레드 애플리케이션 코드를 하나하나 순차적으로 실행하는 것을 쓰레드라고 한다. 즉 메인 메소드를 실행하면 main이라는 이름의 쓰레드가 실행되는 것. 그래서 쓰레드가 없다면 자바 애플리케이션을 실행할 수가 없다. 쓰레드는 한번에 하나의 코드 라인만 수행한다. 그래서 동시 처리가 필요하다면 쓰레드를 추가로 생성해야한다. 클라이언트 요청이 오면 WAS에서 쓰레드를 할당하고 그 쓰레드가 servlet 코드를 실행하는 것. 만약 다중 요청이 들어오는데 단일 쓰레드라면? 요청1에 대한 쓰레드를 할당하고 servlet을 실행하는데 어떤 이유에서 처리가 지연되고 있는 상황.. 2022. 2. 6.