5.1 Spring MVC起步
5.1.1 跟踪Spring MVC的请求
响应流程
- 请求离开浏览器时,带着用户所申请的内容信息(至少url),可能表单
- 第一站是DispatcherServlet,Spring MVC中所有请求都会通过一个前端控制器来将请求委托给应用程序的其他组件
- DispatcherServlet的任务是将请求转发给Controller,应用程序中一般会有多个控制器,DispatcherServlet需要知道要发给哪个控制器,所以它会查找多个处理器映射(handler mapping)
- 良好的控制器一般不处理工作或者很少,而是将业务逻辑委托给Service(服务对象)
- 控制器处理完后,返回信息需要返回给用户并在浏览器上显示,这些信息称为(模型),控制器会将模型打包并标识出用于渲染输出的视图,然后把模型和视图名发送给DispatcherServlet(视图名并不是一个JSP,而需要匹配)
- DispatcherServlet将模型数据传递给视图,视图使用模型数据进行渲染返回给浏览器
5.1.2 搭建Spring MVC
配置DispatcherServlet(使用该方法只是代替xml)
扩展AbstractAnnotationConfigDispatcherServletInitializer的任意类都会自动配置DispatcherServlet和Spring Application Context,Spring Application Context会位于应用程序的Servlet上下文中
其中第一个方法:
protected String[] getServletMappings(){
return new String[]{"/"}
}
他会将一个或多个路径映射到DispatcherServlet上,本例中映射的是“/”他会处理所有请求
DispatcherServlet启动的时候,他会根据上述类中GetServletConfigClasses中所配置的根据JavaConfig所配置的来加载应用上下文,但是在Spring Web应用中还有一个应用上下文是由ContextLoaderListener创建的
- DispatcherServlet加载包含Web组件的bean:控制器,视图解析器等,GetServletConfigClasses方法中加载的JavaConfig用于配置该应用上下文
- ContextLoaderListener的上下文加载应用其他的bean:中间层,数据库组件
GetRootConfigClasses方法中加载的JavaConfig用于配置该应用上下文
启动Spring MVC
- 在XML中使用
<mvc:annotation-driven>
- 使用java配置:
@Configuration
@EnableWebMvc//启用Spring MVC
@ComponentScan(“spirr.web”)//启用组件扫描
public class WebConfig extends WebMvcConfigurerAdapter{
@Bean
public ViewResolver viewResolver(){ }//配置视图解析器
public void ConfigureDefaultServletHandling
(DefaultServletHandlerConfigurer configurer){}//配置静态资源处理器
}
5.1.3 Spittr应用简介
5.2 编写基本的控制器
控制器只是方法上添加了@RequestMapping注解的类,声明了要处理的请求
5.2.1 测试控制器
可以类似于POJO的测试,也可以使用专门的Controller测试
5.2.2 定义类级别的请求处理
把RequestMapping放到Controller类上,表示其下的所有方法的前缀都加上在该RequestMapping中声明的路径,RequestMapping({"/","/homepage"}),也接受一个数组,可以接受多个路径的请求
5.2.3 传递模型数据到视图中
5.3 接受请求的输入
- 查询参数
- 表单参数
- 路径变量
5.3.1 处理查询参数
若要分页,则使用before参数(最小id)和count参数(要显示的数量)
5.3.2 通过路径参数接受输入
是用站位符:RequestMapping(value="/{splittleId}",method=RequestMethod.GET)