课程名称:Spring MVC入门与数据绑定
课程章节:第一章-第四章
课程内容:
一.URL Mapping
URL Mapping指将URL与Controller方法绑定
通过将URL与方法绑定,SpringMVC便可通过Tomcat对外暴露服务
@RequestMapping:通用绑定,作用在方法上,不再区分get/post请求
@GetMapping:绑定Get请求
@PostMapping:绑定Post请求
二.接收请求参数的常用做法
使用Controller方法参数接收
使用JavaBean接收数据
三.解决中文乱码的问题
1.Web应用的中文乱码由来
Tomcat默认使用字符集ISO-8859-1,属于西欧字符集
解决乱码思路是将ISO-8859-1转换为UTF-8
Controller中请求与响应都需要设置UTF-8字符集
2.中文乱码配置
Get请求乱码-server.xml增加URIEncoding属性, tomcat8.0以后默认是UTF-8
POST请求乱码 -web.xml配置CharacterEncodingFilter
Response响应乱码- Spring配置StringHttpMessageConverter
四.响应输出结果
@ResponseBody-产生响应文本
@ResponseBody直接产生响应体数据,过程不涉及任何视图
@ResponseBody可产生标准字符串/JSON/XML等格式数据
@ResponseBody被StringHttpMessageConverter所影响
ModelAndView-利用模板引擎渲染输出
ModelAndView对象是指模型(数据)与视图(界面)对象
通过ModelAndView可将数据对象与模板引擎绑定
SpringMVC默认的View是JSP,也可以是其他模板引擎
mav.addObject()方法设置的属性默认存放在当前请求中
默认ModelAndView使用请求转发(forward)至页面
重定向使用 new ModelAndView("redirect:/index.jsp")
1.方法被@ResponseBody描述,SpringMVC直接响应String字符串本身
2.方法不存在@ResponseBody,则SpringMVC处理String指代的视图(页面)
五.RESTful
1.开发风格
使用URL作为用户交互入口
明确的语义规范(GET,POST,PUT,DELETE)
只返回数据(JSON|XML),不包含任何展现
2.命名要求
URI | 说明 | 修改建议 |
---|---|---|
GET /articles?au=lily | 正确用法 | |
GET/a/1 | URI必须具有语义 | GET /Student/1 |
POST/createArticle/1 | URI必须使用名词 | POST /article/1 |
GET /articles/author/1 | URI扁平化,不超两级 | GET /articles/author?id=1 |
DELETE /articles/1 | URI名词区分单复数 | GET /articles?au=lily DELETE /article/1 |
3.简单请求
指标准结构的HTTP请求,对应GET/POST请求
4.非简单请求包含俩种情况:
(1)复杂要求的HTTP请求,指PUT/DELETE
(2)在标准的GET/POST请求中扩展了额外的自定义请求头的话
两者最大区别是非简单请求发送前需要发送预检请求
六.浏览器的同源策略
只要协议,域名,端口有任何一个不同,都被当作是不同的域
浏览器Console看到Access-Control-Allow-Orign就代表跨域了
源URL | 目标URL | 直接访问 ? |
---|---|---|
http://imooc.com | http:abc.imooc.com | 不能 |
http://localhost | http://127.0.0.1 | 不能 |
1.HTML中允许跨域的标签
< img>显示远程图片
< script>加载远程JS
< link>加载远程CSS
2.CORS跨域资源访问
CORS是一种机制,通过在HTTP请求以及响应头的部分增加一些额外信息,通知浏览器可以访问其他域的资源
URL响应头包含 Access-Control-* 指明请求允许跨域
3.SpringMVC解决跨域访问
@CrossOrign -Controller跨域注解
<mvc:cors > SpringMVC全局跨域配置
七.拦截器
拦截器用于对URL请求进行前置/后置过滤
Interceptor与Filter用途相似,但实现方式不同
Interceptor底层就是基于SpringAOP面向切面编程实现的
1.拦截器开发流程
Maven依赖servlet-api
实现HandlerInterceptor接口
applicationContext配置过滤地址
课程收获: