spring web application overview

glossary

request flow

image.png

DispatcherServlet

  • 根据pattern转发request
  • 把request 转发到Spring MVC Controller
  • 根据handler mappings 确定requests要经过的component, mappings可以配置pattern
  • 根据view resolver解析具体的view
  • 启动后创建Spring application context,加载配置的bean:
    • controllers
    • view resolvers
    • handler mappings

controller

  • 指定渲染的view

model

  • 产生需要返回客户端的数据

view

  • render the output

ContextLoaderListener

加载middle-tier和data-tier components

配置mvc

spring web application 中一般会创建两个application context:

  • DispatcherServlet
  • ContextLoaderListener

configuring dispatcherservlet

AbstractAnnotationConfigDispatcherServletInitializer(前提条件web服务器必须支持Servlet 3.0,Apache Tomcat 7以上) JavaConfig:

  • getServletMappings(): 指定map的path
  • protected Class<?>[] getServletConfigClasses(): 指定DispatcherServlet 创建的application context 使用的配置类
  • protected Class<?>[] getRootConfigClasses(): 创建的ContextLoaderListener application context 使用的配置类

enabling spring mvc

  1. 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();
} }
  1. 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 {
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容