构建Spring Web应用程序
这篇简单的来说就是初次使用Spring MVC.
每当用户从浏览器点击链接或者提交表单的时候,请求就开始工作了。这里面有很复杂的过程。
1)用户点击链接或者提交表单发送请求
2)请求进入Spring 的第一个地方DispatherServlet。这是一个前端控制器来将用户的请求发送给其他应用程序。
3)DispatherServlet就是根据不同的处理映射器(handler mapping)将请求发送给控制器。
4)耐心等待控制器处理这些数据或者根据不同的业务逻辑将其委托给其他对象来处理业务。完成后这些信息将返回给浏览器显示,这些信息被称为Model,最后发送给视图view。控制器的最后一步操作就是将model和view打包发送回去给DispatherServlet.
5 ) DispatherServlet根据传输回来的逻辑名称,将使用时解析器来匹配特定的视图来实现。
6 )视图结果的展示。这个渲染后再把响应给浏览器
搭建Spring MVC
1这次介绍的是使用java的方式来配置Spring,只适合Servlet3.0以上环境,传统的xml配置方式以后再说。
1 该图中SpittrWebAppInitializer类继承自AbstractAnnotationConfigDispatcherServletInitializer类,该类能够自动配置Dispatcher-Servlet和Spring应用上下文。对该类进行追踪会发现。该类实现了javax.servlet.ServletContainerInitializer接口。这个接口就是用来配置Servlet容器的。在Spring中也实现了ServletContainerInitializer这个接口名字是SpringServletContainerInitializer,然后再去寻找实现WebApplicationInitializer的类并把配置任务交给他们来完成。
在Spring3.2中引入了WebApplicationInitializer简单的实现,名字是AbstractAnnotationConfigDispatcherServletInitiali,所以在上图所说的SpittrWebAppInitializer也就间接的实现了WebApplicationInitializer。
2图中getServletMappings()会将路径映射到我们所说的DispatcherServlet上面。当DispatcherServlet启动的时候会把配置好的bean全部加载,在图中的getServletConfigClasses()中我们使用定义的WebConfig配置类中的bean. 在这里可以指定bean.在SpringWeb中还有一个应用上下文,这个就是由ContextLoaderListener创建的。实际上AbstractAnnotationConfigDispatcherServletInitializer这个类会同时创建DispatcherServlet和ContextLoaderListener。然后GetServletConfigClasses()方法返回带有注解@Configuration的类就是用来定义DispatcherServlet管理的bean.同理getRootConfigClasses()方法返回的带有@Configuration注解的类将会用来配置ContextLoaderListener创建的应用上下文中的bean。
3如图
在该图中使用了@ComponentScan("spitte.web") 会扫描spitte.web 会找到该找到的bean.
我们会为加入bean的上面加入@Controller注解
通过return 返回的视图,DispatcherServlet会将根据配置的InternalResourceViewResolver方式视图的名称将会解析到/WEB-INF/views/home.jsp的jsp下来展示视图。
对于最新的在Spring实战第四版中测试的案例还没有得到验证,待验证后在对其总结。