5.1Spring MVC起步
本章内容:
映射请求到Spring控制器
透明的绑定表单参数
校验表单提交
Spring MVC(模型model-视图view-控制器controller)
5.1.1跟踪Spring MVC的请求

1.请求离开浏览器时,带着信息,url。
2.请求的第一站是DispatcherServlet前端控制器。Spring MVC的请求都会经过前端控制器。在这里一个单实例的Servlet会将请求委托给应用程序的其他组件来处理。
3.前端控制器的任务是将请求发送给Spring MVC控制器。控制器是用于处理请求的Spring组件。前端控制器需要知道将请求发送给哪个控制器。所以会查询一个或者多个处理器映射来确定请求的下一站。处理器映射会根据请求所携带的url信息来进行决策。
4.一旦选择了控制器,前端控制器会将请求发给控制器。
5.控制器处理完逻辑后,通常会产生一些信息(模型)。
6.视图解析器会将模型转换为视图返回给浏览器。
5.1.2搭建Spring MVC

package spittr.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import spittr.RootConfig;
/**
* @version 版权 Copyright(c)2019
* @ClassName:
* @Descripton: 使用java将DispatcherServlet配置到Servlet容器中,而不是web.xml文件.
* @author: Shing
* @date: 2020-06-12 16:54
*/
public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{WebConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
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.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
/**
* @version 版权 Copyright(c)2019
* @ClassName:
* @Descripton: dispatcherServlet
* @author: Shing
* @date: 2020-06-13 14:21
*/
//开启扫描,启用springmvc
@Configuration
@EnableWebMvc
@ComponentScan("spittr.web")
public class WebConfig implements WebMvcConfigurer {
/**
* 配置jsp视图解析器
* @return
*/
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.setExposeContextBeansAsAttributes(true);
return resolver;
}
/**
* 配置静态资源的处理
* @param configurer
*/
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
package spittr;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
/**
* @version 版权 Copyright(c)2019
* @ClassName:
* @Descripton: Servlet容器
* @author: Shing
* @date: 2020-06-13 16:45
*/
@Configuration
@ComponentScan(basePackages = {"spittr"},
excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = EnableWebMvc.class)})
public class RootConfig {
}

浙公网安备 33010602011771号