【Spring Boot 8,Javaweb知识点总结

import life.majiang.community.dto.AccessTokenDTO;

import life.majiang.community.dto.GitHubUser;

import com.alibaba.fastjson.JSON;

import okhttp3.*;

import org.springframework.stereotype.Component;

import java.io.IOException;

@Component

public class GitHubProvider {

private static final MediaType MediaType_JSON

        = MediaType.get("application/json; charset=utf-8");

public String getAccessToken(AccessTokenDTO accessTokenDTO){



    OkHttpClient client = new OkHttpClient();

    RequestBody body = RequestBody.create(JSON.toJSONString(accessTokenDTO), MediaType_JSON);

    Request request = new Request.Builder()

            .url("https://github.com/login/oauth/access_token")

            .post(body)

            .build();

    try (Response response = client.newCall(request).execute()) {

        String resstring = response.body().string();

        String token =resstring.split("&")[0]

                .split("=")[1];

        return token;

    }catch (IOException e) {

        e.printStackTrace();

    }

    return null;

}

public GitHubUser getUser(String AccessToken){

    OkHttpClient client = new OkHttpClient();

    Request request = new Request.Builder()

            .url("https://api.github.com/user?access_token="+AccessToken)

            .build();

    try{

        Response response = client.newCall(request).execute();

        String res = response.body().string();

        GitHubUser gitHubUser = JSON.parseObject(res, GitHubUser.class);

        return gitHubUser;

    } catch (IOException e) {

        e.printStackTrace();

    }

    return null;

}

}




3、AuthorizeController.java 

---------------------------



package life.majiang.community.controller;

import life.majiang.community.dto.AccessTokenDTO;

import life.majiang.community.dto.GitHubUser;

import life.majiang.community.provider.GitHubProvider;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;

/**

*/

@Controller

public class AuthorizeController {

@Autowired

private GitHubProvider gitHubProvider;

@Value("${github.client.id}")

private String clientId;

@Value("${github.client.secret}")

private String clientSecret;

@Value("${github.redirect.uri}")

private String redirectURI;



@GetMapping("/callback")

public String callBack(@RequestParam(name = "code")String code,

                       @RequestParam(name = "state") String state,

                       HttpServletRequest request){

    AccessTokenDTO accessTokenDTO = new AccessTokenDTO();

    accessTokenDTO.setClient_id(clientId);

    accessTokenDTO.setClient_secret(clientSecret);

    accessTokenDTO.setCode(code);

    accessTokenDTO.setRedirect_uri(redirectURI);

    accessTokenDTO.setState(state);

    String accessToken = gitHubProvider.getAccessToken(accessTokenDTO);

    GitHubUser user = gitHubProvider.getUser(accessToken);

    if(user != null){

        //登录成功

        request.getSession().setAttribute("user",user);

        return "redirect:index";

    }else {

        //登录失败

        return "redirect:index";

    }

    //return "index"+user.toString();

}

}




4、HTTP Request 

---------------



知其然不知其所以然,大厂常问面试技术如何复习?

1、热门面试题及答案大全

面试前做足功夫,让你面试成功率提升一截,这里一份热门350道一线互联网常问面试题及答案助你拿offer

面试宝典+书籍+核心知识获取:戳这里免费下载!诚意满满!!!

2、多线程、高并发、缓存入门到实战项目pdf书籍

3、文中提到面试题答案整理

4、Java核心知识面试宝典

覆盖了JVM 、JAVA集合、JAVA多线程并发、JAVA基础、Spring原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB 、Cassandra、设计模式、负载均衡、数据库、一致性算法 、JAVA算法、数据结构、算法、分布式缓存、Hadoop、Spark、Storm的大量技术点且讲解的非常深入

日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB 、Cassandra、设计模式、负载均衡、数据库、一致性算法 、JAVA算法、数据结构、算法、分布式缓存、Hadoop、Spark、Storm的大量技术点且讲解的非常深入**

[外链图片转存中…(img-ZchpIbx6-1628389168661)]

[外链图片转存中…(img-Hnp7jobf-1628389168662)]

[外链图片转存中…(img-EUp8JIts-1628389168662)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值