关于springboot:京淘day15实现用户数据校验

5次阅读

共计 5315 个字符,预计需要花费 14 分钟才能阅读完成。

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;
    }
}
正文完
 0