Filter (javax.servlet.Filter)🔹 역할웹 애플리케이션에서 요청과 응답을 가로채는 역할을 합니다.주로 보안, 인코딩, 로깅, 인증, 권한 검사 등에 사용됩니다.서블릿 컨테이너 레벨에서 동작하며, DispatcherServlet 앞에서 실행됩니다.🔹 동작 방식클라이언트 요청이 들어오면 Filter가 가장 먼저 실행됩니다.필터에서 요청을 변형하거나, 로깅 등을 수행할 수 있습니다.chain.doFilter(request, response)를 호출하면 다음 필터 또는 서블릿으로 요청이 전달됩니다.응답이 생성되면 다시 Filter에서 응답을 조작할 수 있습니다.import jakarta.servlet.*;import jakarta.servlet.annotation.WebFilter;imp..
HTTP 프로토콜은 비연결지향 : 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 response 리턴 후 연결 해제 웹 페이지에서 머무르는 동안 사용자의 정보를 유지하기 위해 세션, 쿠키를 사용 Session 웹 서버에 접속한 후 서버에서 상태를 유지하는 기술 로그인 상태 사용자 정보가 서버에 저장되어 쿠키보다 보안성 높음 웹 브라우저 캐시에 저장되어 브라우저 종료 시 세션 삭제 Controller 메서드에 HttpSession, HttpServletRequest.getSession() 사용 Cookie 클라이언트에 파일로 사용자 정보를 저장하는 기술 로그인 ID 저장, 팝업 제한 사용자 정보가 클라이언트에 저장되어 보안성 낮음 일정 기간 동안 저장 가능 Controller 메서드에 ..
MVC Model-View-Controller 소프트웨어 아키텍처 패턴 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. Spring MVC @EnableWebMvc : 스프링 MVC 사용을 위한 다양한 Bean 설정을 추가 해준다 WebMvcConfigurer 인터페이스 : 스프링 MVC의 개별 설정을 조정할 때 사용 DefaultServlet, ViewResolvers DispatcherServlet은 웹 브라우저의 요청을 받기 위한 창구 역할, 요청 흐름을 제어하는 역할 스프링 컨테이너를 생성 : HandlerMapping, HandlerAdapter, ViewResol..
Connection Pool 일정 개수의 DB 커넥션을 미리 만들어두는 기법 커넥션을 사용하는 시점에서 커넥션을 생성하는 시간을 아낄 수 있다. 동시 접속자가 많더라도 커넥션을 생성하는 부하가 적기 때문에 더 많은 동시 접속자를 처리할 수 있다. DataSource 커넥션 풀 기능을 제공하는 JDBC 모듈의 구현 클래스 Spring에서 DB 연동은 DataSource를 사용해서 DB Connection을 구한다 DataSource를 Bean으로 등록하고 DB 연동 기능을 구현한 Bean 객체는 DataSource를 주입받아 사용 JdbcTemplate Connection, Statement, ResultSet을 직접 사용하지 않고 편리하게 쿼리를 실행할 수 있다 DAO 클래스에서 JdbcTemplate ..
프록시 (Proxy) 핵심 기능의 실행은 다른 객체에 위임하고 부가적인 기능을 제공하는 객체 AOP 여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 프로그래밍 기법 공통 기능 : 트랜잭션, 로깅, 보안 Advice : 언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의 Before Advice : 대상 객체의 메서드 호출 전에 실행 After Returning Advice : 대상 객체의 메서드가 익셉션 없이 실행된 이후에 실행 After Throwing Advice : 대상 객체의 메서드를 실행하는 도중 익셉션이 발생한 경우 실행 After Advice : 익셉션 발생 여부 상관없이 대상 객체의 메서드 실행 후 실행 Around Advice : 대상 객체의 메시드 실행 전, ..
Spring DI 의존 : 한 클래스가 다른 클래스의 메서드를 실행할 때 '의존'한다 의존하는 객체를 직접 생성하는 대신 의존 객체를 전달받는 방식 : 생성자, setter() 생성자 방식 : Bean 객체를 생성하는 시점에 모든 의존 객체가 주입 생성자의 파라미터 수가 많아지면 생성자 코드를 확인해야함 setter() 방식 : 메서드 이름을 통해 어떤 의존 객체가 주입되는지 알 수 있음 필요한 의존 객체가 전달받지 못해도 Bean 객체가 생성되기 때문에 문제 객체를 생성하고 의존 객체를 주입하는 기능을 분리하여 변경의 유연함 : @Configuration Spring 설정 클래스 ApplicationContext(BeanFactory)는 Bean 객체의 라이프 사이클을 관리 : 스프링 컨..
Java Maven 프로젝트 생성 New Maven project Workspace location 폴더 선택 maven-archetype-quickstart 1.1 선택 group id, artifact id 작성 Git Hub 연동 Eclipse Git Repositories > Clone a Git Repositories Git Hub URL, 계정 입력 Destination > Directory : Local Storage Location 설정 Project > Team > Share Project > Repository 선택 Commit : Local Storage에 반영 Push : Git Hub 원격 Repository에 반영
Spring 3.0 Spring3.0 부터 Java5가 지원된다. 기존에 유지하던 하위호환성에 Generic 이나 가변인자(varargs) 등과 같은 개선사항이 추가된다. (1) 전체 프레임워크를 하나의 spring.jar 파일로 제공하던 부분을 여러개의 jar 파일로 나누어 제공한다. (2) SPEL(Spring Expression Language)가 도입되었다. (3) Rest API 에 대한 지원이 추가되었다. (4) OXM(Object Xml Mapping) 기능이 추가되어 설정을 Xml 형태로 할 수 있게 지원한다. (5) Java annotation 을 이용해서 DI 의 지원이 가능하다. Spring 4.0 Spring 3.0 이 Java5+ 버전들에 대해 지원을 한다면 Spring 4.0 버..
https://victorydntmd.tistory.com/195
https://gmlwjd9405.github.io/2018/12/02/spring-annotation-types.html [Spring] Spring Annotation의 종류와 그 역할 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io Bean 설정 관리 Spring에서는 아래와 같이 Layer별로 구분된 Annotation을 사용할 것을 권장하고 있습니다. @Controller 프리젠테이션 레이어를 구성하는 Controller 클래스를 정의하는데 사용하며, Spring MVC 기반인 경우에 한해 활용 가능하다. @Service 비즈니스 로직을 처리하는 클래스를 정의하는데 사용한다. @Repository DB 처리..