博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring MVC的学习笔记
阅读量:6152 次
发布时间:2019-06-21

本文共 5282 字,大约阅读时间需要 17 分钟。

基于注解形式配置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/*

如果不需要应用程序上下文层次结构,则应用程序可以仅配置“根”上下文,并将contextConfigLocationServlet参数保留为空。

3.特殊Bean类

 

HandlerMapping

将请求映射到处理程序以及用于预处理和后处理的列表 。映射基于某些标准,其细节因HandlerMapping 实施而异。

两个主要HandlerMapping实现RequestMappingHandlerMapping(支持带@RequestMapping注释的方法)和SimpleUrlHandlerMapping(维护URI路径模式到处理程序的显式注册)。

HandlerAdapter

DispatcherServlet无论实际调用处理程序如何,都可以帮助调用映射到请求的处理程序。例如,调用带注释的控制器需要解析注释。一个主要目的HandlerAdapter是保护DispatcherServlet这些细节。

解决异常的策略,可能将它们映射到处理程序,HTML错误视图或其他目标。请参阅。

String将从处理程序返回的基于逻辑的视图名称解析为View 用于呈现给响应的实际视图。请参阅和。

解决Locale客户正在使用的问题以及可能的时区问题,以便能够提供国际化的视图。请参阅。

解决Web应用程序可以使用的主题 - 例如,提供个性化布局。见。

在一些多部分解析库的帮助下,解析多部分请求(例如,浏览器表单文件上载)的抽象。请参阅。

存储和检索“输入”和“输出” FlashMap,可用于将属性从一个请求传递到另一个请求,通常是通过重定向。请参阅。

说明:应用程序可以声明 处理请求所需的中列出的基础结构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() };    }}

 

转载于:https://www.cnblogs.com/XingXiaoMeng/p/10164660.html

你可能感兴趣的文章
Skip List——跳表,一个高效的索引技术
查看>>
Yii2单元测试初探
查看>>
五、字典
查看>>
前端js之JavaScript
查看>>
Log4J日志配置详解
查看>>
实验7 BindService模拟通信
查看>>
scanf
查看>>
Socket编程注意接收缓冲区大小
查看>>
SpringMVC初写(五)拦截器
查看>>
检测oracle数据库坏块的方法
查看>>
SQL server 安装教程
查看>>
Linux下ftp和ssh详解
查看>>
跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击
查看>>
js时间和时间戳之间如何转换(汇总)
查看>>
js插件---图片懒加载echo.js结合 Amaze UI ScrollSpy 使用
查看>>
java中string和int的相互转换
查看>>
P1666 前缀单词
查看>>
HTML.2文本
查看>>
Ubuntu unity安装Indicator-Multiload
查看>>
解决Eclipse中新建jsp文件ISO8859-1 编码问题
查看>>