0%

SpringMVC相关知识点

SpringMVC相关知识点备忘录


主要组件:

1、前端控制器DispatcherServlet

2、处理器映射器HandlerMapping

3、处理器适配器HandlerAdapter

4、处理器Handler

5、视图解析器ViewResolver

6、视图View

请求处理过程:

用户发送请求>>>前端控制器将请求委托给页面控制器>>>页面控制器委托给业务对象进行处理>>>处理完毕后返回一个ModelAndView>>>前端控制器根据返回的逻辑视图名选择相应的视图进行渲染>>>最后前端控制器将响应返回给用户

与structs2的区别:

1、SpringMVC的入口是一个Servlet,即前端控制器,而structs2是一个filter过滤器。

2、SpringMVC是基于方法开发,请求参数传递到方法的形参可设计为单例或多例;而structs2是基于类开发,传递参数是通过类的属性,只能设计为多例。

SpringMVC如何设定重定向和转发:

**转发:在返回值前加forward

**重定向:在返回值前加redirect

异常处理:

可以将异常抛给Spring框架,由Spring框架来处理,只需要配置简单的异常处理器,在异常处理器中添加视图页面即可。

常见注解:

@RequestMapping:处理请求url映射

@RequestBody:接受请求的json数据,将json数据转换为Java对象

@ResponseBody:将controller方法返回对象转化为json对象响应给客户

SpringMVC控制器注解一般选用@Controller,也可以使用@RestController,@RestController相当于@ResponseBody+@Controller
如果在拦截请求中,想拦截get方式提交的方法,需要在@RequestMapping注解里面加上mothod=RequestMethod.GET
在方法的形参中声明request,SpringMVC会自动把request对象传入,就可以在方法里面得到Request或者Session
如何在拦截的方法里面得到从前台传入的参数:

直接在形参里面声明这个参数,但名字必须和传过来的一致

SpringMVC中函数的返回值是String和ModelAndView,ModelAndView把视图和数据都合并在一起的,所以一般用String比较好
SpringMVC使用ModelMap对象从后台向前台传递数据,可以在这个对象里调用put方法,把对象加到里面,前台可以通过el表达式拿到
如何将ModelMap里面的数据加入到Session里面

可以在类上面加SessionAttributes注解,里面包含的字符串就是要放入Session里面的key

SpringMVC拦截器如何写:

1、实现HandlerInterceptor接口

2、继承适配器类

SpringMVC系统分层:

表现层:数据展现,操作页面,请求转发

业务层:封装业务处理逻辑

持久层:封装数据访问逻辑

表现层通过接口调用业务层;业务层通过接口调用持久层

SpringMVC对文件上传的注意事项:

1、在页面form中提交enctype=”multipart/form-data”的数据时,需要SpringMVC对multipart类型数据进行解析

2、在SpringMVC.xml中配置multipart类型解析器

3、方法中使用MultipartFile attach单个文件上传

​ 方法中使用MultipartFile [] attachs多个文件上传

在配置文件中开启
1
<mvc:annotation-driven>
来实现注解处理器和适配器的开启
@Autowired和@Resource的区别:

同>>> 二者都可以写在setter方法上;两者如果都写在字段上,就不需要再写setter方法

异>>> @Autowired 只按照byType注入,默认情况下要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false,如果想使用按照名称来装配,可以结合Qualifier一起使用

​ @Resource 默认按照byName自动注入;

​ @Resource有两个属性:name和type;

​ Spring将@Resource的name属性解析为bean名字;type则解析为bean类型,所以使用name属性要使用byName;使用type属性则使用byType,都不指定时,通过反射机制使用byName自动注入策略。

依赖注入的三种方式:

1、接口注入

2、Construct注入

3、Setter注入

引入IOC的目的:

1、脱开、降低类之间的耦合

2、实施依赖倒换原则

3、提高系统可插入、可测试、可修改特性

AOP应用场景:

权限、缓存、内容传递、错误处理、性能优化、持久化、同步、事务等

Spring框架为企业级开发带来的好处:
非侵入性:

不强制性的要求实现Spring框架中的接口或继承Spring框架中的类

IOC容器:

帮助应用程序管理对象以及对象之间的依赖关系,对象之间的依赖关系如果发生了改变,只需要修改配置文件而不是修改代码

AOP:

将所有的横切关注功能封装到切面中,通过配置的方式将横切关注功能动态添加到目标代码上,进一步实现了业务逻辑和系统服务之间的分离

事务管理:

为多种持久层技术提供了声明式事务管理,方便的完成了事务管理

持久层设计的目标:

1、数据存储逻辑的分离,提供抽象化的数据访问接口

2、数据访问底层实现的分离,可以在不修改代码的情况下切换底层实现

3、资源管理和调度的分离,在数据访问层实现统一的资源调度(如缓存机制)

4、数据抽象,提供更面向对象的数据操作

实体对象的三种状态:

瞬时态:new一个实体对象后,该对象就处于此态;

持久态:Session中的save()、merge()等方法把此态对象与数据库关联,并把数据插入或更新到数据库时,对象就转化为持久态

​ 持久态对象实例在数据库中有对应的记录

游离态:使用Session中的close()、clear()等方法后可以将对象转化为游离态

​ 游离态随拥有和持久态数据库对应记录一致的标识值,但因此对象已经从会话中消除掉,对象不在持久化管理之内,所以处于游离态

锁机制:

有些业务逻辑在执行过程中要求对数据进行排他性访问,需要通过一些机制保证此过程中数据被锁住不会被外界修改


本文档记录的不够详细,只留做自己备忘查看,不定期更新…