우리가 흔히 사용하는 MVC 레이어와 컨트롤 레이어 프레임워크에는 주로 각각 Action과 Controller에 해당하는 Struts2와 SpringMVC가 포함되어 있습니다. 그렇다면 SpringMVC와 Struts의 주요 차이점은 무엇입니까?
1. 프레임워크 메커니즘
우리는 Struts2가 Filter를 사용하여 구현하는 반면 SpringMVC는 Servlet을 사용하여 구현한다는 것을 알고 있습니다.
Struts2는 StrutsPrepareAndExecuteFilter를 사용하고 SpringMVC는 DispatcherServlet을 사용합니다. 필터는 특별한 서블릿입니다. 컨테이너가 시작된 후 필터가 초기화됩니다. 서블릿보다 나중에 서비스가 중지된 후 충돌이 발생합니다. 서블릿은 호출될 때 초기화되고, 필터가 호출되기 전에 서비스가 중지된 후 충돌합니다.
2. 차단 메커니즘
1. Struts2
Struts2 프레임워크는 클래스 수준 차단입니다. 각 요청은 Spring과 통합되면 Struts2 Action을 생성합니다. Bean 주입 범위는 프로토타입 모드 프로토타입이며(그렇지 않으면 스레드 동시성 문제가 발생함) 요청 데이터가 setter 및 getter를 통해 속성에 주입됩니다.
Struts2에서는 Action이 요청 및 응답 컨텍스트에 해당하며, 이는 속성을 통해 수신될 수 있음을 보여줍니다.
2. SpringMVC
SpringMVC는 메소드 수준 차단입니다. 따라서 이 메서드는 기본적으로 독립적이며 요청 및 응답 데이터에 독점적으로 액세스할 수 있습니다. 각 메소드는 동시에 URL에 해당합니다. 매개변수 전달은 메소드에 고유한 메소드에 직접 삽입됩니다. 처리 결과는 ModeMap을 통해 프레임워크로 반환됩니다.
Spring 통합 중에 SpringMVC의 Controller Bean은 기본적으로 싱글톤 모드로 설정되므로 기본적으로 모든 요청에 대해 하나의 Controller만 생성되며 공유 속성이 없어야 합니다. 따라서 스레드로부터 안전합니다. 기본 범위를 변경하려면 @Scope 주석을 추가하여 수정해야 합니다.
3. 공연
SpringMVC는 SpringMVC의 메소드 기반 차단으로 인해 싱글톤 모드 Bean 주입이 한 번만 로드됩니다. Struts2는 클래스 수준 차단입니다. 인스턴스에 해당하는 새 작업을 요청할 때마다 모든 속성 값 주입을 로드해야 하므로 SpringMVC가 Struts2보다 빠릅니다.
4. 차단 메커니즘
Struts2에는 자체 차단 인터셉터 메커니즘이 있습니다. , SpringMVC는 독립적인 Aop 메소드를 사용합니다.
위 내용은 컨트롤 레이어 SpringMVC와 Struts2의 차이점입니다. 자세한 내용은 PHP 중국어 홈페이지(www. php.cn)!