glossary
request flow

image.png
DispatcherServlet
- 根據(jù)pattern轉(zhuǎn)發(fā)request
- 把request 轉(zhuǎn)發(fā)到Spring MVC Controller
- 根據(jù)handler mappings 確定requests要經(jīng)過的component, mappings可以配置pattern
- 根據(jù)view resolver解析具體的view
- 啟動后創(chuàng)建Spring application context,加載配置的bean:
- controllers
- view resolvers
- handler mappings
controller
- 指定渲染的view
model
- 產(chǎn)生需要返回客戶端的數(shù)據(jù)
view
- render the output
ContextLoaderListener
加載middle-tier和data-tier components
配置mvc
spring web application 中一般會創(chuàng)建兩個application context:
- DispatcherServlet
- ContextLoaderListener
configuring dispatcherservlet
AbstractAnnotationConfigDispatcherServletInitializer(前提條件web服務(wù)器必須支持Servlet 3.0,Apache Tomcat 7以上) JavaConfig:
- getServletMappings(): 指定map的path
- protected Class<?>[] getServletConfigClasses(): 指定DispatcherServlet 創(chuàng)建的application context 使用的配置類
- protected Class<?>[] getRootConfigClasses(): 創(chuàng)建的ContextLoaderListener application context 使用的配置類
enabling spring mvc
- DispatcherServlet 配置:
package spittr.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.
DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.
WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.
InternalResourceViewResolver;
@Configuration
@EnableWebMvc
@ComponentScan("spitter.web")
public class WebConfig
extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver resolver =
new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.setExposeContextBeansAsAttributes(true);
return resolver;
}
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
configurer.enable();
} }
- ContextLoaderListener
package spittr.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@Configuration
@ComponentScan(basePackages={"spitter"},
excludeFilters={
@Filter(type=FilterType.ANNOTATION, value=EnableWebMvc.class)
})
public class RootConfig {
}