1.实现用户数据校验
1.1 创立单点登录零碎
1.1.1 创立我的项目
1.1.2 增加继承/依赖/插件
<parent>
<artifactId>jt</artifactId>
<groupId>com.jt</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<!--增加jar包文件依赖-->
<dependencies>
<dependency>
<groupId>com.jt</groupId>
<artifactId>jt-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<!--所有业务零碎,必须增加build标签-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>`
1.1.3 实现jt-sso我的项目创立
1.1.4 实现反向代理
1).批改hosts文件
2). 编辑nginx.conf文件
1.1.5 测试成果展示
1.2 用户数据校验
1.2.1 业务阐明
阐明:当用户输出内容之后,当鼠标离焦时,应该发动Ajax申请去后端服务器JT-SSO校验数据是否存在. 如果数据存在应该提醒用户,如果数据不存在则告知用户该数据能够应用.
1.2.2 页面剖析
1.2.3 业务接口文档阐明
蕴含的内容:
1).业务场景,业务功能属性等…
2).业务端调用的细节. web-sso
3).明确申请门路 url地址
4).明确申请的参数信息 几个 类型 作用
5).明确返回值后果 void xxxx 属性 对象
注意事项:
你认为的不肯定是你认为的… 当需要不明确时 弄清业务之后在入手…
1.2.4 页面JS剖析
1).定位哪些是写死的局部 http://sso.jt.com/user/check/
2).检索所有的代码 搜寻须要的内容
1.2.5 编辑JT-SSO UserController
package com.jt.controller;
import com.fasterxml.jackson.databind.util.JSONPObject;
import com.jt.service.UserService;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/getMsg")
public String getMsg(){
return "单点登录零碎测试实现";
}
/**
* JSONP
* 实现用户数据校验
* url:http://sso.jt.com/user/check/{param}/{type}
* 参数: /{param} 用户须要校验的数据
* /{type} 校验的字段.
* 返回值: SysResult对象(true/false)
*/
@RequestMapping("/check/{param}/{type}")
public JSONPObject checkUser(@PathVariable String param,@PathVariable Integer type,String callback){
//查询数据库获取响应信息.
boolean flag = userService.checkUser(param,type);
SysResult sysResult = SysResult.success(flag);
return new JSONPObject(callback, sysResult);
//callback(JSON构造)
}
}
1.2.6 编辑JT-SSO UserService
package com.jt.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jt.mapper.UserMapper;
import com.jt.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Service
public class UserServiceImpl implements UserService{
//校验type为几
private static Map<Integer,String> paramMap = new HashMap<>();
static {
paramMap.put(1,"username");
paramMap.put(2,"phone");
paramMap.put(3,"email");
}
@Autowired
private UserMapper userMapper;
/**
* 依据用户传递的参数,获取数据库记录
* @param param
* @param type
* @return
*/
@Override
public boolean checkUser(String param, Integer type) {
String column = paramMap.get(type);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(column,param);
int count = userMapper.selectCount(queryWrapper);
//return count>0?true:false;
return count>0;
}
}
1.2.7 页面成果展示
2 HttpClient
2.1 近程拜访调用流程
2.2 HttpClient介绍
HTTP 协定可能是当初 Internet 上应用得最多、最重要的协定了,越来越多的 Java 应用程序须要间接通过 HTTP 协定来拜访网络资源。尽管在 JDK 的 java net包中曾经提供了拜访 HTTP 协定的基本功能,然而对于大部分应用程序来说,JDK 库自身提供的性能还不够丰盛和灵便。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的反对 HTTP 协定的客户端编程工具包,并且它反对 HTTP 协定最新的版本和倡议。HttpClient 曾经利用在很多的我的项目中,比方 Apache Jakarta 上很驰名的另外两个开源我的项目 Cactus 和 HTMLUnit 都应用了 HttpClient。当初HttpClient最新版本为 HttpClient 4.5 .6(2015-09-11)
2.3 HttpClient入门案例
2.3.1 增加jar包
<!--增加httpClient jar包 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
2.3.2 编辑入门案例
public class TestHttpClient {
/**
* 1.实例化HttpClient客户端对象
* 2.定义url地址
* 3.定义申请类型
* 4.发动httpClient申请
* 5.获取响应后果 剖析状态码信息 200 404 500 504 502
* 6.获取后果,进行后续操作
*/
@Test
public void testGet() throws IOException {
HttpClient httpClient = HttpClients.createDefault();
String url = "http://www.baidu.com";
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
if(httpResponse.getStatusLine().getStatusCode() == 200){
//示意申请一切正常
HttpEntity httpEntity = httpResponse.getEntity();//获取响应后果实体对象
String result = EntityUtils.toString(httpEntity, "UTF-8");
System.out.println(result);
}else{
//示意申请有误
System.out.println("申请后果有误!!!");
}
}
}
2.4HttpClient案例阐明
2.4.1 业务场景
要求:
1)通过http://www.jt.com/user/findUs……
2)JT-WEB服务器网址应该向JT-SSO获取用户信息.
URL: http://sso.jt.com/userfindUse… 获取全副的用户信息.
应用HttpClient形式实现.
2.4.2 编辑JT-SSO UserController
/**
* 实现HttpClient业务调用
* url地址: http://sso.jt.com/user/findUserList
* 返回值: UserJSON
*/
@RequestMapping("/findUserList")
public List<User> findUserList(){
return userService.findUserList();
}
2.4.3 编辑JT-SSO UserService
@Override
public List<User> findUserList() {
return userMapper.selectList(null);
}
2.4.4 编辑JT-WEB UserController
/**
* 实现HttpClient测试
* 1.url地址: http://www.jt.com/user/findUserList
* 2.申请参数: 无
* 3.返回值后果: List<User>汇合
*/
@RequestMapping("/findUserList")
@ResponseBody
public List<User> findUserList(){
return httpClientService.findUserList();
}
2.4.5 编辑JT-WEB HttpClientUserServiceImpl
@Service
public class HttpClientUserServiceImpl implements HttpClientService{
//jt-web 须要拜访jt-sso获取数据 HttpClient
//http://sso.jt.com/userfindUserList
@Override
public List<User> findUserList() {
List<User> userList = new ArrayList<>();
String url = "http://sso.jt.com/user/findUserList";
HttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse httpResponse = httpClient.execute(httpGet);
if(httpResponse.getStatusLine().getStatusCode() == 200){
String json =
EntityUtils.toString(httpResponse.getEntity(),"UTF-8");
userList = ObjectMapperUtil.toObject(json, userList.getClass());
}
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return userList;
}
}
发表回复