1.1 介绍Spring web mvc 框架
1.1.1 MVC→模型-视图-控制器
1.1.2 主要控制器:DispatcherServlet,在默认处理程序基于 @Controller 和 @RequestMapping 的注释,提供广泛的灵活的处理方法。与 Spring3.0 的介绍,@Controller 机制还允许您创建 rest 风格的 Web 站点和应用程序,通过 @PathVariable 注释和其他功能。
1.1.3 在Spring web mvc 中你可以使用任何对象作为命令或窗体支持的对象 ;你不需要执行一个特定于框架的接口或基类。春天的数据绑定 是高度灵活: 例如,它对待类型不匹配,作为验证错误,可以通过计算由应用程序,而不是系统错误.
1.1.4 Spring视图解析是非常灵活的。视图名称解析是通过文件扩展名或接受标头的内容类型进行谈判,通过 bean 的名称、 属性的文件或甚 至一个自定义的 ViewResolver 实现高度可配置的。(在 MVC 中 M) 模型是地图界面,允许完全抽象的视图技术。您可以直接集成基 于模板的渲染技术 (如 JSP、 速度和 Freemarker,或直接生成 XML、 JSON、 原子和许多其他类型的内容。地图模型简单地转化为适 当的格式,如 JSP 请求属性、 速度模板模型。
1.2 The DispatcherServlet控制器
1.2.1 Spring mvc
框架,正如许多其他 web MVC 框架,请求驱动的设计围绕中央的Servlet,分派到控制器的请求,并提供其他功能,便于进行 web 应用程序的开发。 Spring的DispatcherServlet 然而,确实更不只是这些。它与Spring IoC 容器完全集成,这样允许您使用Spring具有的每个其他功能。下面的关系图说明了请求处理 的Spring Web MVC DispatcherServlet 工作流。精通模式的读者将认识到 DispatcherServlet 的"前端控制器"设计模式 (这是一种模式,与许多其他领先 的 web 框架共享Spring Web MVC) 的表达式。
如图:
Spring Web MVC (高级别) 中的请求处理工作流程
DispatcherServlet 是实际的 Servlet (它从 HttpServlet 基类继承),这样是在 web 应用程序的 web.xml 中宣布。
您需要请求你想要的 DispatcherServlet 来处理,通过相同的web.xml 文件中使用的 URL 映射映射。这是标准的 Java EE Servlet 配置 ;
下面的示例演示这种 DispatcherServlet 宣言和映射:
-
<web-app>
-
<servlet>
-
<servlet-name>example</servlet-name>
-
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
-
<load-on-startup>1</load-on-startup>
-
</servlet>
-
-
<servlet-mapping>
-
<servlet-name>example</servlet-name>
-
<url-pattern>/example/*url-pattern>
-
servlet-mapping>
-
web-app>
在前面的示例中,将由 DispatcherServlet 实例命名示例处理所有请求都从 /example 开始。在 Servlet 3.0 + 环境中,你也可以以编程方式配置的 Servlet
容器的选择。下面是基于代码相当于上面的 web.xml 示例:
-
public class MyWebApplicationInitializer implements WebApplicationInitializer {
-
-
@Override
-
public void onStartup(ServletContext container) {
-
ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet());
-
registration.setLoadOnStartup(1);
-
registration.addMapping("/example/*");
-
}
-
-
}
WebApplicationInitializer 是检测到并自动用来初始化任何 Servlet 3 容器提供的Spring MVC,以确保您的基于代码的配置接口。这个
名为 AbstractDispatcherServletInitializer的 interace 的一个抽象基类实现使它更容易通过简单地指定其 servlet 映射注册DispatcherServlet。
在 Web MVC 框架中,每个 DispatcherServlet 都有它自己的 WebApplicationContext,继承了所有的beans,已经在根 WebApplicationContext 中定义。
在 servlet 特定范围中,可以重写这些继承的beans,你可以定义新的特定范围的 bean 本地到一个给定的 Servlet 实例。
Spring Web MVC上下文结构:
在 DispatcherServlet 初始化,Spring MVC 查找的文件命名为 [servlet 名称]-在你的 web应用程序的 WEB-INF 目录中的 servlet.xml 和
创建 bean 定义那里,重写任何具有相同的名称在全局范围内定义的 bean 的定义。
请考虑下面的 DispatcherServlet Servlet 配置 (在 web.xml 文件中):
-
<web-app>
-
<servlet>
-
<servlet-name>golfing</servlet-name>
-
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
-
<load-on-startup>1</load-on-startup>
-
</servlet>
-
<servlet-mapping>
-
<servlet-name>golfing</servlet-name>
-
<url-pattern>/golfing/*url-pattern>
-
<servlet-mapping>
-
-
web-app>
阅读(2389) | 评论(0) | 转发(0) |