SpringMVC
Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet。
Spring MVC 角色划分清晰,分工明细。由于 Spring MVC 本身就是 Spring 框架的一部分,可以说和 Spring 框架是无缝集成。性能方面具有先天的优越性,是当今业界最主流的 Web 开发框架,最热门的开发技能。
充当前端控制器
SpringMVC注解解析
@RequestMapping
作用:用于建立请求URL和处理请求方法之间的对应关系
位置:
类上,请求URL的第一级访问目录。此处不写的话,相当 于应用的根目录
方法上,请求URL的第二级访问目录,与类上的使用@ReqquestMapping标注的一级目录一起组成访问虚拟路径。
Value:用于指定请求的URL。它的path属性的作用是一样的
Method:用于指定请求的参数
Params:用于指定限制请求参数的条件。
SpringMVC的数据响应
页面跳转
2.返回ModelAndView
ModelAndView modelAndView = new ModelAndView();
//设置模型数据
modelAndView.addObject(“username”,”itcast”)
//设置视图名称
modelAndView.setViewName(“sucess”)
回写数据
-
直接返回字符串
1)通过SpringMVC框架注入的response对象,使用response.getWriter().print(“hello world”)回写数据,此时不需要视图跳转,业务方法返回值为void.
2)将需要回写的字符串直接返回,但此时需要通过@ResponseBody注解告知SpringMVC框架,方法返回的字符串不是跳转是直接在http响应体中返回
-
返回对象或集合
1)通过SpringMVC帮助我们对对象进行json字符串的转换并回写,为处理器适配器配置消息转换参数,指定jackson进行对象或集合的转换,因此需要在spring-mvc.xml中进行如下配置
2)在方法上添加@ResponseBody就可以返回json格式的字符串,但是这样配置比较麻烦,配置的代码比较多,因此,我们可以使用mvc的注解驱动代替上诉配置。
SpringMVC获得请求数据
1. 获得请求参数
客户端请求参数的格式是:name=value&name=value…
服务端要或得请求得参数,有时还需要进行数据得封装,SpringMVC可以接收如下类型得参数:
基本类型参数
POJO参数
数组类型参数
集合类型数据
2. 获得基本类型参数
Controller中的业务方法的参数名称要与请求参数得name一致,参数值会自动映射匹配
3. 获得POJO参数
Controller中的业务方法的POJO参数名称要与请求参数的name一致,参数值会自动映射匹配
4. 获得数组类型参数
Controller中的业务方法的数组名称与请求参数的name一致,参数值会自动映射匹配
5. 获得集合类型参数
获得集合参数时,要将集合参数包装到一个POJO中才可以。
当使用ajax提交时,可以指定contentType为json格式,那么在方法参数位置使用RequestBody可以直接接收集合数据而无需使用POJO进行包装。
静态资源访问:
6.请求数据乱码问题
当post请求时,数据会出现乱码,我们可以设置一个过滤器来进行编码的过滤
7.参数绑定注解@resquestParam
当请求的参数名称与Controller的业务方法参数名称不一致时,就需要通过@RequestParam注解显示的绑定
8.获得Restful风格的参数
Resful是一种软件架构风格、设计风格,而不是标准,知识提供了一组设计原则和约束条件,主要用于客户端和服务端交互类的软件,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存机制等。
Resful风格的请求是使用”url+请求参数”表示一次请求目的,HTTP协议里面四个表示操作方式的动词如下:
GET:用于获取资源
POST:用于新建资源
PUT:用于更新资源
DELET:用于删除资源
9.自定义类型转换器
10.获得Servlet相关API
SpringMVC支持使用原始ServletAPI对象作为控制器方法的参数进行注入,常用的对象如下:
HttpServletRequest
HttpServletResponse
HttpSession
11.获取请求头
12.文件上传
单文件上传实现
1) 导入fileupload和io坐标
2) 配置文件上传解析器
3) 编写文件上传代码
多文件上传实现
JDBCTemplate
JdbcTemplate操作步骤
- 导入Spring-jdbc和spring-tx坐标
- 创建数据库和实体
- 创建JdbcTemplate对象
- 执行数据库操作
SpringMVC拦截器(interceptor)
SpringMVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。
- 创建拦截器类实现HandlerInterceptor接口
- 配置拦截器
- 测试拦截器效果
拦截器方法说明:
SpringMVC异常处理
- 简单异常处理器SimpleMappingExceptionResolver
- 自定义异常处理器