目录
1.搭建后端完成结构
1.1后端结构说明
1.1.1后端作用
1,接受前端发送的数据.(json串) ---接收 springMvc Controller
2,按照用户的业务需求处理数据---接收处理 Spring Service (BAO MP)
3,将处理后的结果,按照**特定的要求**返回给用户--返回数据 springMvc Controller
1.1.2 后端代码结构级功能
controller 控制层,处理前端传入的数据
mapper 接口层,调用sql语句的接口文档
service 接受和返回java运行后的数据
resource 核心配置文件和sql语句文件
1.1.3 后端测试要求
要求:接收URL请求地址,之后JSON数据返回.
URL: http://localhost:8090/getAll
要求利用MP的方式查询数据库.
1.1.4 控制层代码
//标识Controller类 交给Spring容器管理/返回JSON数据
@RestController
public class UserController {
@Autowired
private UserService userService;
/**需求: 查询全部用户信息
* URL: /getAll
* 返回值: List<User>
*/
@RequestMapping("/getAll")
public List<User> getAll(){
return userService.getAll(); }
}
1.1.5服务层代码
@Service
public class UserServiceImpl implements UserService{
@Autowired //JDK动态代理对象
private UserMapper userMapper;
@Override
public List<User> getAll() {
//不需要where条件,查询是全部数据.
return userMapper.selectList(null);
}
}
2.前后端业务调用
2.1 前后端调用流程
2.2编辑前端的页面
2.2.1使用hbuilder管理项目
需求: 前端准备一个表格,之后在表格中展现后端查询的所有数据.
知识点
1.html css
2.js (jquary)
3.Ajax.$.ajax({…})
4.了解JS的处理基,VUE
html页面
<table id="tab01" border="1px" align="center" width="80%">
<tr>
<td colspan="5" align="center"><h1>用户列表</h1></td>
</tr>
<tr>
<td align="center">编号</td>
<td align="center">姓名</td>
<td align="center">年龄</td>
<td align="center">性别</td>
<td align="center">操作</td>
</tr>
<tr>
<td align="center">100</td>
<td align="center">黑熊精</td>
<td align="center">3000</td>
<td align="center">男</td>
<td align="center">
<input type="button" value="修改" />
<input type="button" value="删除" />
</td>
</tr>
<tr>
<td align="center">230</td>
<td align="center">鲤鱼精</td>
<td align="center">3900</td>
<td align="center">女</td>
<td align="center">
<input type="button" value="修改" />
<input type="button" value="删除" />
</td>
</tr>
</table>
2.3 关于JSON结构
2.3.1 什么是JSON
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
2.3.2 Object格式
例子:
{"id":100, "name": "tomcat","age":"18"}
2.3.3Array格式
案例:
[100, "张三", "李四"]
2.3.4 嵌套结构
例子及其简析
{"id":100, "name":"lydon" ,
"likecolor":["red","blue","yellow","gray","green"],
"likeobject":[{"name":"lily","live":"宜宾","fav":"paint"},
{"name":"Arilisy","live":"遂宁","fav":"汉服"},
{"name":"Buffeermei","live":"资阳","fav":"王一博"}]
}
说明:这样获取的对象可以是数组+对象,也可以是对象+数组,可以互相嵌套,如输出结果如下
2.4关于ajax
2.4.1 ajax概述和特点
ajax即Asynchronous Javascript And XML(异步JavaScript和XML)在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。 [3]
使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作
特点:
1.局部刷新
2.异步访问
2.4.2 Ajax为什么可以异步
同步:
当用户发起请求时,如果后端服务器没有返回数据,此时用户页面无法展现. 一直出于加载的状态 (整个页面同时刷新)
异步:有Ajax引擎
步骤原理:
1. 用户将请求发送给Ajax引擎. 之后JS继续向下执行.
2. Ajax引擎接收用户请求之后,通过代理的方式访问后端服务器.
3. 后端服务器接收请求之后,执行业务操作,最终将响应的结果返回值代理服务器(Ajax引擎)
4. 引擎通过回调函数的方式返回给用户数据.
2.4.3 jQuary下载
网址: https://jquery.com/
2.4.4 ajax语法
/**
* 常见Ajax写法:
* 1.$.ajax({})
* 2.$.get()
* 3.$.post()
* 4.$.getJSON()*/
/**
* 语法说明:
* $.get(Url,data,function(data){},resultType)
* 参数说明:
* 1.url:请求服务器的网址
* 2.data:前端向服务器传递的参数
* 3.回调函数:请求成功之后开始回调
* 4.dataType:返回值的结果的数据类型*/
2.5数据简析Jquery前后端调用
2.5.1 js中循环写法
1. 基础for循环写法
//JS可以将接收的JSON串动态转化为JS对象
$.get(url,function(data){
//循环遍历返回值
for(var i=0; i<data.length;i++){
console.log(data[i])
}
})
2 高效for循环写法
//for循环方式2
for(index in data){
console.log(data[index])
}
3 js中of循环写法
//循环遍历数组:for循环方式3
//of 关键字 直接获取遍历对象
for(user of data){
var id=user.id
var name=user.name
var age=user.age
var sex=user.sex
}
2.5.2.模板字符串
说明: 模版字符串语法从ES5以后提供的
语法: 反引号
特点:
1. 被反引号包裹的都是字符串 可以随意换行 可以保留代码结构.
2. 可以动态的从对象中获取数据 语法: ${对象.属性}
for(user of data){
`<tr align="center">
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.sex}</td>
</tr>`
//将Tr标签追加到表格中
$("#tab01").append(tr)
}
3.跨域问题
3,1同源策略
要素1:浏览器地址: file:///D:/workspace/cgb2105/webDemo/userList.html 展现页面
要素2:Ajax的请求地址: http://localhost:8090/getAll
要求:如果要素1和要素2(即浏览器地址和Ajax的请求地址)满足三项相同---**http协议 / 请求的域名 /端口号**三者相同,则满足同源策略
如:
例子1:
1. 浏览器地址: http://localhost:8090/a.html
2. Ajax地址: http://localhost:8091/getAll 不满足:端口号不一样
例子2:
1. 浏览器地址: http://localhost:8090/a.html
2. Ajax地址: http://www.baidu.com:80/getAll 不满足: 域名/端口号不一样
例子3: 前提: IP与域名正确映射 DNS
1. 浏览器地址: http://10.1.10.8/a.html
2. Ajax地址: http://www.baidu.com/getAll 不满足:域名不一致
总结:http 默认端口号;80 https 默认端口号;443
全球域名简析器:DNS ip与域名不同,域名要经过简析才可使用
3.2什么是跨域?
跨域,指的是从一个域名去请求另外一个域名的资源。即跨域名请求!跨域时,浏览器不能执行其他域名网站的脚本,是由浏览器的同源策略造成的,是浏览器施加的安全限制。
跨域的严格一点来说就是只要协议,域名,端口有任何一个的不同,就被当作是跨域。
3.3跨域的解决方案
3.3.1.jsonp (了解)
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的
核心知识: 利用 <script src属性=“获取远程服务器数据”> 实现跨域访问.
3.3.2CORS 跨域资源共享
跨源资源共享 (CORS) 是一种基于HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其它origin(域,协议和端口),这样浏览器可以访问加载这些资源。
解释:跨源资源共享 (CORS)通过http**响应头**信息标签,浏览器默认支持CORS.在请求前会支持"'预检'",如果"预检"成功则在一段时间
报错信息:
3.3.3 注解解决跨域
1.注解标识
2.相应头信息