1 用户登录
1.1 单点登录业务实现
单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是目前比较流行的.
实现步骤:
1.用户输入用户名和密码之后点击登录按钮开始进行登录操作.
2.JT-WEB向JT-SSO发送请求,完成数据校验
3.当JT-SSO获取数据信息之后,完成用户的校验,如果校验通过则将用户信息转化为json.并且动态生成UUID.将数据保存到redis中. 并且返回值uuid.
如果校验不存在时,直接返回"不存在"即可.
4.JT-SSO将数据返回给JT-WEB服务器.
5.如果登录成功,则将用户UUID保存到客户端的cookie中.
Cookie知识介绍:
* 1.cookie.setPath("/") 根目录有效
* url1: www.jt.com/addUser
* url2: www.jt.com/user/addUser
*
* 2. cookie.setDomain(“域名地址”); cookie在哪个域名中共享
* 例子1: cookie.setDomain(“www.jt.com”);
* 只有在www.jt.com的域名中有效
*
* cookie.setDomain(“jt.com”);
* 只有在jt.com结尾的域名中有效
2 用户信息回显
2.1 用户信息回显业务需求
思路: 用户通过TICKET信息,利用JSONP的方式动态获取远程的服务器数据信息.之后将数据返回之后 回显数据.
/**
* 业务说明:
* 通过跨域请求方式,获取用户的JSON数据.
* 1.url地址: http://sso.jt.com/user/query/efd321aec0ca4cd6a319b49bd0bed2db?callback=jsonp1605775149414&_=1605775149460
* 2.请求参数: ticket信息
* 3.返回值: SysResult对象 (userJSON)
* 需求: 通过ticket信息获取user JSON串
*/
@RequestMapping("/query/{ticket}")
public JSONPObject findUserByTicket(@PathVariable String ticket,String callback){
String userJSON = jedisCluster.get(ticket);
if(StringUtils.isEmpty(userJSON)){
return new JSONPObject(callback, SysResult.fail());
}else{
return new JSONPObject(callback, SysResult.success(userJSON));
}
}
3 用户登出操作
3.1 退出业务逻辑
当用户点击退出操作时,应该重定向到系统首页. 同时删除redis信息/Cookie信息.
/**
* 完成用户退出操作
* url地址:http://www.jt.com/user/logout.html
* 参数: 没有参数
* 返回值: String 重定向到系统首页
* 业务:
* 1.删除redis K-V 获取ticket信息
* 2.删除cookie
*/
@RequestMapping("/logout")
public String logout(HttpServletRequest request,HttpServletResponse response){
//1.获取Cookie中的JT_TICKET值
Cookie[] cookies = request.getCookies();
if(cookies != null && cookies.length>0){
for (Cookie cookie : cookies){
if(cookie.getName().equals("JT_TICKET")){
String ticket = cookie.getValue();
//redis删除ticket信息
jedisCluster.del(ticket);
cookie.setMaxAge(0); //0表示立即删除
//规则cookie如果需要操作,必须严格定义
cookie.setPath("/");
cookie.setDomain("jt.com");
response.addCookie(cookie);
}
}
}
return "redirect:/";
}
4 商品信息展现
4.1业务需求说明
当用户点击商品时应该跳转到商品的展现页面,在页面中应该展现2部分数据.item数据/itemDesc数据. item.jsp页面
数据取值方式:
1.获取item信息 ${item.title }
2.获取ItemDesc数据 ${itemDesc.itemDesc}
5 实现页面跳转
实现商品的展现
* url: http://www.jt.com/items/562379.html
* 参数: 562379商品ID号
* 返回值: item.jsp
* 页面取值: item对象/itemDesc对象
{item.id/title}
6 购物车业务操作
业务分析
说明:当用户点击购物车按钮时,应该跳转到购物车列表页面.
6.1 购物车数量的修改
6.2 购物车删除
业务逻辑: 当删除购物车时,应该删除数据库记录,之后将页面重定向到购物车列表页面.
6.3 购物车新增
业务说明: 当购物车点击新增时,需要重定向到购物车列表页面. 完成购物车"新增""
注意事项: 如果用户重复添加购物车.则只做购物车数量的更新,如果购物车没有记录,则新增数据.
7 权限控制
需求: 如果用户不登录,则不允许访问购物车列表页面,如果没有登录则应该重定向到用户登录页面.
拦截器编辑
8 富文本编辑器
KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE、Firefox、Chrome、Safari、Opera等主流浏览器。
9 MybatisPlus实现分页查询
10 EasyUI中树形结构
10.1 异步树加载
10.2 分布式思想
11 异步方式调用
11.1 AJAX原理
特点: 局部刷新:异步调用(加载)
调用原理说明:
1.用户将请求发给AJAX引擎进行处理.之后等待引擎返回数据.
2.ajax引擎接收到用户的请求之后.,代替用户访问后端服务器,
3.后端服务器接收请求之后,执行业务处理. 并且将返回值返回.
4.ajax引擎收到返回值结果之后,要在第一时间通知给用户. 利用回调函数将数据传给客户端.ajax调用成功.