码迷,mamicode.com
首页 > 编程语言 > 详细

关于springMVC的细节

时间:2019-04-19 20:13:15      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:style   问题:   出现   对象   font   配置   springmvc   创建   commons   

1. Controller的生命周期

Spring框架默认创建的对象是单例.所以业务控制器是一个单例对象.

 

单例对象带来的问题,就是请求的数据如果放在成员变量上面,会相互影响。

请求使用同一个对象处理,在处理的请求比较多的时候,会导致阻塞!!。

 

SpringMVC提供了,request,session 两个生命周期

request:每次新的请求,创建一个新的实例.

session:每次会话创建一个新的实例. 就是同一个浏览器,就使用同一个实例

 

注意事项:配置requestsession生命周期,必须要先加入<mvc:annotation-driven />标签。

 

 

 

问题:为什么要加入该标签呢?

 

由于历史原因,SpringMVC的内核是使用XML编写的。而注解的支持类似系统补丁的方式打到框架里面的。

 

后来出现很多注解有的,而配置文件没有的功能,这些功能就通过   <mvc:annotation-driven />标签扩展加入!!常用依赖该标签的功能如下

 

    1.作用域requestsession的支持

 

    2.放开静态资源的访问

 

    3.上传组件的支持

 

    4.JSON的支持

 

 

1. 上传下载的实现

1.1. 文件上传

SpringMVC支持文件上传组件。commons-fileupload组件,commons-fileupload依赖commons-io组件。

1.1.1. 配置步骤说明

第一步:导入包 commons-fileuplad组件

第二步:配置springmvc支持上传组件

(1)启动SpringMVC注解支持

(2)配置上传解释器 (对象名必须是固定)

第三步:构建一个上传表单

第四步:在业务控制器编写保存上传文件的逻辑

1.1.1. 注意事项

问题:为什么上传解释器,对象名是固定的?

 

注意,因为核心控制器对上传解释器的名字是固定的.multipartResolver,所以我们配置上传解释器,名字必须是multipartResolver

--查询核心控制器DispacherServlet代码,发现multipartResolver一个固定加载的属性。

 

如图所示:SpringMVC的核心控制器里面初始化上传组件时,是通过multipartResolver这个名字精准定位对象的。必须要multipartResolver才可以获得对象

1. 拦截器

1.1. 说明

在系统开发的时候,有这么一些需求.就是将一些工作统一处理. 如:登录认证,权限管理等.我们可以使用拦截器。

 

拦截器与过滤的区别?(回顾)

  1. 过滤器拦截的是请求路径
  2. 拦截器拦截的是表示层方法的映射路径

 

问题:既然拦截器与Servlet的过滤器功能基本一样,为什么需要使用拦截器呢?

 

答:如果使用过滤器SpringMVC的一些功能组件就无法使用。而拦截器是SpringMVC的功能,可以使用SpringMVC里面的一些组件!!

 

关于springMVC的细节

标签:style   问题:   出现   对象   font   配置   springmvc   创建   commons   

原文地址:https://www.cnblogs.com/vip-zht/p/10738304.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!