笔记23 搭建Spring MVC

1.配置DispatcherServlet 

DispatcherServlet是Spring MVC的核心。在这里请求会第一次 接触到框架,它要负责将请求路由到其他的组件之中。 

使用Java将DispatcherServlet配置在Servlet容器中,而不 会再使用web.xml文件。

SpittrWebAppInitializer.java

 1 package spittr.config;
 2 import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
 3 
 4 public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
 5 
 6     @Override
 7     protected Class<?>[] getRootConfigClasses() {
 8         // TODO Auto-generated method stub
 9         return new Class<?>[] { RootConfig.class };
10     }
11 
12     @Override
13     protected Class<?>[] getServletConfigClasses() {
14         // TODO Auto-generated method stub
15         return new Class<?>[] { WebConfig.class };
16     }
17 
18     @Override
19     protected String[] getServletMappings() { // 将DispatcherServlet映射到“/”
20         // TODO Auto-generated method stub
21         return new String[] { "/" };
22     }
23 
24 }

扩 展AbstractAnnotationConfigDispatcherServletInitializer的任意类都会自动地 配置Dispatcher-Servlet和Spring应用上下文,Spring的应用上下 文会位于应用程序的Servlet上下文之中。 

2.Spring MVC配置类

WebConfig.java

 1 package spittr.config;
 2 
 3 import org.springframework.context.annotation.Bean;
 4 import org.springframework.context.annotation.ComponentScan;
 5 import org.springframework.context.annotation.Configuration;
 6 import org.springframework.web.servlet.ViewResolver;
 7 import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
 8 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
 9 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
10 import org.springframework.web.servlet.view.InternalResourceViewResolver;
11 
12 @Configuration
13 @EnableWebMvc // 启用Spring MVC
14 @ComponentScan("spitter.web") // 启用组件扫描
15 public class WebConfig extends WebMvcConfigurerAdapter {
16     @Bean // 配置JSP视图解析器
17     public ViewResolver viewResolver() {
18         InternalResourceViewResolver resolver = new InternalResourceViewResolver();
19         resolver.setPrefix("/WEB-INF/view/");
20         resolver.setSuffix(".jsp");
21         resolver.setExposeContextBeansAsAttributes(true);
22         return resolver;
23     }
24 
25     @Override // 配置静态资源处理
26     public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
27         // TODO Auto-generated method stub
28         configurer.enable();
29     }
30 
31 }

上面的代码中第一件需要注意的事情是WebConfig现在添加了 @Component-Scan注解,因此将会扫描spitter.web包来查找组件。稍后编写的控制器将会带有@Controller注 解,这会使其成为组件扫描时的候选bean。因此,不需要在配置 类中显式声明任何的控制器。

然后添加了一个ViewResolver bean。更具体来讲, 是Internal-ResourceViewResolver。功能是查找JSP文件,在查找的 时候,它会在视图名称上加一个特定的前缀和后缀。

最后,新的WebConfig类还扩展了WebMvcConfigurerAdapter 并重写了其configureDefaultServletHandling()方法。通过 调用DefaultServlet-HandlerConfigurer的enable()方法,要求DispatcherServlet将对静态资源的请求转发到Servlet容 器中默认的Servlet上,而不是使用DispatcherServlet本身来处理 此类请求。 

3.RootConfig.java

因为主要聚焦于Web开 发,而Web相关的配置通过DispatcherServlet创建的应用上下文 都已经配置好了,因此现在的RootConfig相对很简单

 1 package spittr.config;
 2 
 3 import org.springframework.context.annotation.ComponentScan;
 4 import org.springframework.context.annotation.ComponentScan.Filter;
 5 import org.springframework.context.annotation.Configuration;
 6 import org.springframework.context.annotation.FilterType;
 7 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
 8 
 9 @Configuration
10 @ComponentScan(basePackages = { "spitter" }, excludeFilters = {
11         @Filter(type = FilterType.ANNOTATION, value = EnableWebMvc.class) })
12 public class RootConfig {
13 
14 }

猜你喜欢

转载自www.cnblogs.com/lyj-gyq/p/8922081.html
今日推荐