一,此部分为xml文件的依赖,按情况添加
二,注解驱动
还将提供以下支持:
支持使用 ConversionService 实例对表单参数进行类型转换;
支持使用 @NumberFormat annotation、@DateTimeFormat;
注解完成数据类型的格式化;
支持使用 @Valid 注解对 JavaBean 实例进行 JSR 303 验证;
支持使用 @RequestBody 和 @ResponseBody 注解;
此部分参考博客链接:https://blog.csdn.net/jamesge2010/article/details/53749461
Spring 3.0.x中使用了mvc:annotation-driven后,默认会帮我们注册默认处理请求,参数和返回值的类,其中最主要的两个类:DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter ,分别为HandlerMapping的实现类和HandlerAdapter的实现类,从3.1.x版本开始对应实现类改为了RequestMappingHandlerMapping和RequestMappingHandlerAdapter。
HandlerMapping的实现类的作用:实现类RequestMappingHandlerMapping,它会处理@RequestMapping 注解,并将其注册到请求映射表中。
HandlerAdapter的实现类的作用:实现类RequestMappingHandlerAdapter,则是处理请求的适配器,确定调用哪个类的哪个方法,并且构造方法参数,返回值。
当配置了mvc:annotation-driven/后,Spring就知道了我们启用注解驱动。然后Spring通过context:component-scan/标签的配置,会自动为我们将扫描到的@Component,@Controller,@Service,@Repository等注解标记的组件注册到工厂中,来处理我们的请求。
三,spring组件扫描,扫描controller
当使用mvc:view-controller标签时一定要加入mvc:annotation-driven,不然会使requestMapping失效。
四,aop的相关配置,感觉这篇博客挺好https://blog.csdn.net/u010890358/article/details/80640433
proxy-target-class该属性值默认为false,表示使用JDK动态代理织入增强;当值为true时,表示使用CGLib动态代理织入增强;但是,即使设置为false,如果目标类没有生命接口,则Spring将自动使用CGLib动态代理. proxy-target-class属性值决定是基于接口的还是基于类的代理被创建。
为true则是基于类的代理将起作用(需要cglib库),
为false或者省略这个属性,则标准的JDK 基于接口的代理将起作用。
参考博客链接:https://blog.csdn.net/qq_22078107/article/details/85882211
五,InternalResourceViewResolver
用于将提供的URI解析为实际URI。
如果URI
:对于/hello
请求,DispatcherServlet
会将请求转发到前缀+ view-name + suffix = /WEB-INF/jsp/hello.jsp
六,资源映射
在SpringMVC中常用的就是Controller与View。但是我们常常会需要访问静态资源,如html,js,css,image等。
默认的访问的URL都会被DispatcherServlet所拦截,但是我们希望静态资源可以直接访问。
如何你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题。
如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg的访问也就被拦截了。
mapping:映射,两个*,它表示映射resources/下所有的URL,包括子路径(即接多个/)
location:本地资源路径,注意必须是webapp根目录下的路径。
七,文件上传解析器
commonsMulitpartResolver 类继承了 CommonsFileUploadSupport , 实现了 MultipartReolver和ServletContextAware等接口。
八, 定义统一异常处理器
利用Spring进行统一异常处理的两种方式:
1.自定义统一异常处理器
自定义Exception实现 HandlerExceptionResolver接口或继承AbstractHandlerExceptionResolver类
1.1 实现接口HandlerExceptionResolver 1.2 继承AbstractHandlerExceptionResolver类
1.3 在配置文件中添加自定义异常处理模块
2.基于@ControllerAdvice注解实现统一异常处理,可方便返回普通异常和Ajax异常信息
自定义Web层异常处理
九,转换器
十,校验器
Spring框架的 validator 组件,是个辅助组件,在进行数据的完整性和有效性非常有用,通过定义一个某个验证器,即可在其它需要的地方,使用即可,非常通用。如何注入到spring容器中,其实就是在spring mvc 的配置文件中,扫描验证器所在的包,同时在验证器的Java Bean类前面加上注解 @Component 即可;当然也可在spring的配置文件 applicationContent.xml 中用常规的配置方式加载该验证器到spring容器中;