基于注解形式配置Spring MVC
一、注册并初始化DispatcherServlet,由Servlet容器自动检测并启动
注解形式
public class MyWebApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletCxt) { // Load Spring web application configuration AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext(); ac.register(AppConfig.class); ac.setServletContext(servletCxt); ac.refresh(); // Create and register the DispatcherServlet DispatcherServlet servlet = new DispatcherServlet(ac); ServletRegistration.Dynamic registration = servletCxt.addServlet("app", servlet); registration.setLoadOnStartup(1); registration.addMapping("/app/*"); }}
XML形式
org.springframework.web.context.ContextLoaderListener contextConfigLocation /WEB-INF/app-context.xml app org.springframework.web.servlet.DispatcherServlet contextConfigLocation 1 app /app/*
2.WebApplicationContext
层次结构配置SpringMVC
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class [] getRootConfigClasses() { return new Class [] { RootConfig.class }; } @Override protected Class [] getServletConfigClasses() { return new Class [] { App1Config.class }; } @Override protected String[] getServletMappings() { return new String[] { "/app1/*" }; }}
等同于XML配置
org.springframework.web.context.ContextLoaderListener contextConfigLocation /WEB-INF/root-context.xml app1 org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/app1-context.xml 1 app1 /app1/*
如果不需要应用程序上下文层次结构,则应用程序可以仅配置“根”上下文,并将contextConfigLocation
Servlet参数保留为空。
3.特殊Bean类
| 将请求映射到处理程序以及用于预处理和后处理的列表 。映射基于某些标准,其细节因 两个主要 |
|
|
解决异常的策略,可能将它们映射到处理程序,HTML错误视图或其他目标。请参阅。 | |
| |
, | 解决 |
解决Web应用程序可以使用的主题 - 例如,提供个性化布局。见。 | |
在一些多部分解析库的帮助下,解析多部分请求(例如,浏览器表单文件上载)的抽象。请参阅。 | |
存储和检索“输入”和“输出” |
说明:应用程序可以声明 处理请求所需的中列出的基础结构bean 。该DispatcherServlet
检查 WebApplicationContext
对每个特殊的豆。如果没有匹配的bean类型,它将回退到列出的默认类型 。
4.注册SpringMVC与XML文件组合进行配置
import org.springframework.web.WebApplicationInitializer;public class MyWebApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext container) { XmlWebApplicationContext appContext = new XmlWebApplicationContext(); appContext.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml"); ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet(appContext)); registration.setLoadOnStartup(1); registration.addMapping("/"); }}
5.基于Java类进行配置SpringMVC
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class [] getRootConfigClasses() { return null; } @Override protected Class [] getServletConfigClasses() { return new Class [] { MyWebConfig.class }; } @Override protected String[] getServletMappings() { return new String[] { "/" }; }}
6.基于XML的Spring配置
public class MyWebAppInitializer extends AbstractDispatcherServletInitializer { @Override protected WebApplicationContext createRootApplicationContext() { return null; } @Override protected WebApplicationContext createServletApplicationContext() { XmlWebApplicationContext cxt = new XmlWebApplicationContext(); cxt.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml"); return cxt; } @Override protected String[] getServletMappings() { return new String[] { "/" }; }}
也可以重写并注册多个Filter过滤器
public class MyWebAppInitializer extends AbstractDispatcherServletInitializer { /** * 每个过滤器都会根据其具体类型添加一个默认名称,并自动映射到 * DispatcherServlet */ @Override protected Filter[] getServletFilters() { return new Filter[] { new HiddenHttpMethodFilter(), new CharacterEncodingFilter() }; }}