最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一篇文章帶你入門Springboot沙箱環(huán)境支付寶支付(附源碼)

 更新時間:2021年06月11日 17:34:25   作者:興趣使然的草帽路飛  
螞蟻沙箱環(huán)境 (Beta) 是協(xié)助開發(fā)者進行接口功能開發(fā)及主要功能聯(lián)調(diào)的輔助環(huán)境。沙箱環(huán)境模擬了開放平臺部分產(chǎn)品的主要功能和主要邏輯

0.前言

文章需求:

對于學生來說,目前網(wǎng)上確實沒有比較統(tǒng)一而且質(zhì)量好的支付教程。因為支付對個人開發(fā)者尤其是學生來說不太友好。因此,自己折騰兩天,算是整理了一篇關(guān)于支付寶沙箱支付的文章。

那么為什么不用微信沙箱支付呢?

微信支付我在另一篇文章中寫過,用的是別人的公眾號和開放平臺賬號,而微信的沙箱測試我自己也搞了好幾天了也沒弄好,確實沒有支付寶沙箱測試容易。因為支付寶提供了一套pc客戶端和手機端的測試軟件(比如沙箱版支付寶)!

微信和支付寶官方為了開發(fā)者測試和學習方便,都提供了沙箱測試環(huán)境下模擬支付業(yè)務(wù)。這篇文章我們就來動手搭建一個支付寶沙箱環(huán)境支付的demo,如果想額外了解微信支付可以看下我的另一篇文章:Springboot整合微信登錄與微信支付(附源碼)

個人覺得,在沙箱測試支付方面,支付寶會相較于微信來說更簡單一些,文檔相對而言比較詳細,有附帶沙箱支付寶APP,測試遠比微信沙箱方便!

1.效果展示

說明:沙箱測試并不是真正的支付,所以付款金額也都是模擬的!

在這里插入圖片描述

在這里插入圖片描述

2.技術(shù)棧介紹

  • 前端demo :
  • 后端demo:SpringBoot2.x + (LomBook插件)
  • 第三方支付:AliPay-SDK

3.前期準備

第一步:申請一個沙箱測試賬號

支付寶沙箱測試賬號申請 進入鏈接后掃碼登錄!

在這里插入圖片描述

第二步:電腦下載一個支付寶提供的客戶端用于生成RSA2

客戶端工具下載(密鑰生成操作文檔)

在這里插入圖片描述

在這里插入圖片描述

下載安裝完成后,開始使用,使用參考文檔:幫助文檔

在這里插入圖片描述

第三步:手機下載 【沙箱版支付寶】

在這里插入圖片描述

可以自行掃碼下載,也可以手機點入鏈接下載,沙箱支付寶下載鏈接

下載后打開沙箱支付寶如下圖:

踩坑:沙箱支付寶登錄所用的賬號和密碼是以開放平臺提供的沙箱賬號為準,而不是我們的手機號或者淘寶賬號!如圖:

在這里插入圖片描述

如果萌新沒有注意到這一點,直接用自己的手機號登錄,是會出現(xiàn)超時或者操作頻繁的提示而登錄不了的!(沒錯,我就是這個萌新…)

哈哈,沙箱支付寶里的錢要能轉(zhuǎn)到支付寶中就好了!

4.后端搭建

項目目錄結(jié)構(gòu)

在這里插入圖片描述

pom.xml

<dependencies>
    <!--
       springboot新版本踩坑:
       不加這個依賴的話,當在配置類中
       使用@ConfigurationProperties(prefix = "xxx")注解時,
       我這個版本的spring boot會提示有問題
    -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artif
        <optional>true</optional>
    </dependency>
    <!-- 支付寶支付jar包 -->
    <dependency>
        <groupId>com.alipay.sdk</groupId>
        <artifactId>alipay-sdk-java</artifactId>
        <version>3.1.0</version>
    </dependency>
    <!-- fastjson -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.62</version>
    </dependency>
    <!-- web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- mybatis -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.3</version>
    </dependency>
    <!-- 熱部署 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <!-- mysql -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!-- lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

application.yml

由于只是demo 演示 所以可以不加數(shù)據(jù)庫和mybatis相關(guān)的配置,只留server相關(guān)配置即可

#=====================================server相關(guān)配置=====================================
server:
  port: 8080
#=====================================數(shù)據(jù)庫相關(guān)配置=====================================
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/alipay?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
    username: root
    password: root
    # 使用Alibaba的druid數(shù)據(jù)源,默認使用自帶的
    type: com.alibaba.druid.pool.DruidDataSource
#=====================================mybatis相關(guān)配置=====================================
# 開啟控制臺打印sql日志
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    # mybatis 下劃線轉(zhuǎn)駝峰配置
    map-underscore-to-camel-case: true
  # 配置mapper文件掃描
  mapper-locations: com.haust.alipaydemoserver.mapper/*.xml
  # 配置實體類掃描
  type-aliases-package: com.haust.alipaydemoserver.pojo

application-alipay.proerties

# APPID
alipay.appId:2016110100784885
# 商戶私鑰, 即PKCS8格式RSA2私鑰
alipay.privateKey:MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCQiliwqcldz8Kb6HALM35rFNif0Tvg7qiywMzC5F8ySt5HgqN5VWIDC/ABTsUb6MlWhdGbC15r7uIwFB7mkDutG6vIZahhfWnCzisZuMebUkMGO9vJJiJDird20nOGyVuvxHYwQ+E777tZKnJM239psXL+o/vfWEtkVu1A6zEoseGc26gBp7Z6czAFGcOvorrWsj6Z93+ZE4LNAb21Hdc0KgILniYwKev38xACRjNn3a3lpRb+e4QQ24vPqIoLTGmw5DcpsEv3uKMRZwQBK8UB7b8ZwJP+yVSJdCVx+6LHP9VQd+RT5BlD8U6328VITsTr3WteHuPxP+t2a17/RWD1AgMBAAECggEATDHiFx8qG94OBQo/Jmh62BAhMf6mxiiJndGtH4Ar/uMg0im365prFJgSaV4Q4mmQ2Z+po0YW/GbtrdKth3W5P8Q6hmWwodPvENaGOgUClIqE8qBTeHI11c0mcej3JbK4NqwmccMW1PXHmXWa05FSVXFJ4ZqoiFCPTdHVOEfDnmN54DFgoEKYPk6q/xxQmIpwqHQH+s3S2eFSU0rt0aqiKBg2mqKSMYzLE+8vB7FWJS61Cy0mzYVugfgWx2KTQy8y1SC4i4mjQ50DQQ2AgbNr+k8l5G7p7Cja+KDQ6JbGv4nR8DC+sPNhxECDHrSpYDn6BYqw8aRwvN6nmaCdoU3GcQKBgQDheWn3kpJz8r8wdy15WaWzItZD+c8Qwou997bn3iBR7RdFi5INNXmlr5TRc3Lr3d5uidzl4ues2dLnqRYh7tYMQudB6HoweWoPlig6gXblamn6am5MvpFRK9Lsl1zNbN82DDvVH6oaDPvqD+KLPvZ1MIWRQiTz7eRvwo9NYTqKYwKBgQCkG+Q2N2U5g0t6baZ1/TlWpFKnb1t17JTHfwfmbwotnLcKQRVWzqayOdPsKtFHqyhmnhH7BlLt1a1QqK5d/a2KH80i7Y0jmv8Pglpt+gfxEQt87gD8+uZrvx33EpU8KCIwhFNshw4FUr5yB5BcLNQo92NsO0ujHhFC6Q/LxX9axwKBgH3WJS3mv5W2hL2nxdlUDwZLCwolAUt5SERdW9dMQP14NOS7YGe+0IWH2KaMqDa7PMi0aHRkjqgJaYug8pk9kniFXkuKU6d6G5dXVlxQpOqk2UDI5YYvVSrYKn+gekqr2GdxrHLlmSmw1WdsNiNAoIwG6ISJRdZdjoBRNWkaOnHBAoGADpa0KOWvx/cWBKIuxBpouH0PI/dQSCFp8Hood6GzY+6kjvLONNNWGk3tuvbrd9WNV+IBczFSufXe3GbCaXSdssO09r/rZhjnR7es1k392r5LKSX3TIX5aeapgUdToO9oaqu4xtMSugJrD7QAb1FE4wdq/TogNTX9DtetIc5Czg0CgYBGmAHwxJmvokrFmk8ZPkj544tZ9emY1aaUY0jqW21wWCHcRID2+56jsDXXb6IH/Hn9DgHndkl3v9ql6Ha2Y/j2t2Q9XA31QoUmKHU+6QA1aw+GP3VSaLTwlCMgGeWjA9imiFc3pEkS3JrNm3ASdwp+1TPIjcWcxa/ZU+JWrdM3bA==
# 支付寶公鑰, 即對應(yīng)APPID下的支付寶公鑰
alipay.publicKey:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlREBzwWQaJd6ZzSrYlnucsvlX3jV1swYdnymIRsbrObxftBFoKcvuMnqzCgRhvqZN4NEJvW+cQZkbk4otPvk+g+uIK1ZNjF+Cln/gePwHq3WRCrhWFwwBVWASJwPg/XISuaahjXicLb9z2AxvKcNZsLDL46HHO442mniGGOlD8PqK6LvvrhRUvhYgvY5SQ0RfRT0LUnxNl2evsdVOl3dlS6EuQVe4DrqpKS2WseVuXsA8nbXzBKwmR3vcqoxnDI/Nu8ldSLS+KEMEFh6MUL9OcTwhHr4/F8MdKtMSSWru+5m4q8BGNxW4PAP5GM3e1cBlxi/8FnBamL0jIlnhH/8qwIDAQAB
# 服務(wù)器異步通知頁面路徑, 需http://格式的完整路徑
# 踩坑:不能加?type=abc這類自定義參數(shù)
alipay.notifyUrl:
# 頁面跳轉(zhuǎn)同步通知頁面路徑, 需http://格式的完整路徑
# 踩坑:不能加?type=abc這類自定義參數(shù)
alipay.returnUrl:http://192.168.0.106:8084/#/paySuccess
# 簽名方式
alipay.signType:RSA2
# 字符編碼格式
alipay.charset:utf-8
# 支付寶網(wǎng)關(guān)
alipay.gatewayUrl:https://openapi.alipaydev.com/gateway.do
# 日志打印地址
alipay.logPath:"F:\\"

Order訂單實體類

這里我使用了lombok插件,所以以注解的方式節(jié)省了setter/getter 以及構(gòu)造函數(shù)

package com.haust.alipaydemoserver.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
 * @Auther: csp1999
 * @Date: 2020/11/13/21:49
 * @Description: 商品訂單實體類(支付實體對象)
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class Order {
    /**
     * 商戶訂單號,必填
     */
    private String out_trade_no;
    /**
     * 訂單名稱,必填
     */
    private String subject;
    /**
     * 付款金額,必填
     * 根據(jù)支付寶接口協(xié)議,必須使用下劃線
     */
    private String total_amount;
    /**
     * 商品描述,可空
     */
    private String description;
    /**
     * 超時時間參數(shù)
     */
    private String timeout_express = "10m";
    /**
     * 產(chǎn)品編號
     */
    private String product_code = "FAST_INSTANT_TRADE_PAY";
}

Service層

/**
 * @Auther: csp1999
 * @Date: 2020/11/13/21:55
 * @Description: 支付 service
 */
public interface AliPayService {
    /**
     * 支付寶支付接口
     * @param order
     * @return
     * @throws AlipayApiException
     */
    String aliPay(Order order) throws AlipayApiException;
}
/**
 * @Auther: csp1999
 * @Date: 2020/11/13/21:56
 * @Description: 支付service 實現(xiàn)類
 */
@Service
public class AliPayServiceImpl implements AliPayService {
    @Autowired
    private Alipay alipay;
    @Override
    public String aliPay(Order order) throws AlipayApiException {
        return alipay.pay(order);
    }
}

Controller層

/**
 * @Auther: csp1999
 * @Date: 2020/11/13/21:47
 * @Description: 支付寶沙箱測試 controller
 */
@RestController
public class PayController {
    @Autowired
    private AliPayService aliPayService;
    /**
     * 支付寶支付 api
     *
     * @param outTradeNo
     * @param subject
     * @param totalAmount
     * @param description
     * @return
     * @throws AlipayApiException
     */
    @PostMapping(value = "/order/alipay")
    public String alipay(String outTradeNo, String subject,
                         String totalAmount, String description) throws AlipayApiException {
        Order order = new Order();
        order.setOut_trade_no(outTradeNo);
        order.setSubject(subject);
        order.setTotal_amount(totalAmount);
        order.setDescription(description);
        System.out.println(order);
        return aliPayService.aliPay(order);
    }
}

配置類

支付寶支付配置類以及支付寶支付組件注入Spring容器

AliPayConfig.java

/**
 * @Auther: csp1999
 * @Date: 2020/11/13/19:19
 * @Description: 支付寶配置類(讀取配置文件)
 */
@Configuration
@PropertySource("classpath:application-alipay.properties")
@ConfigurationProperties(prefix = "alipay")
@Data
public class AliPayConfig {
    /**
     * APPID
     */
    private String appId;
    /**
     * 商戶私鑰, 即PKCS8格式RSA2私鑰
     */
    private String privateKey;
    /**
     * 支付寶公鑰
     */
    private String publicKey;
    /**
     * 服務(wù)器異步通知頁面路徑,需http://格式的完整路徑
     * 踩坑:不能加?type=abc這類自定義參數(shù)
     */
    private String notifyUrl;
    /**
     * 頁面跳轉(zhuǎn)同步通知頁面路徑,需http://格式的完整路徑
     * 踩坑:不能加?type=abc這類自定義參數(shù)
     */
    private String returnUrl;
    /**
     * 簽名方式
     */
    private String signType;
    /**
     * 字符編碼格式
     */
    private String charset;
    /**
     * 支付寶網(wǎng)關(guān)
     */
    private String gatewayUrl;
    /**
     * 日志打印地址
     */
    private String logPath;
}

Alipay.java

/**
 * @Auther: csp1999
 * @Date: 2020/11/13/21:57
 * @Description: 調(diào)用支付寶支付的組件
 */
@Component
public class Alipay {
    @Autowired
    private AliPayConfig alipayConfig;
    /**
     * 支付接口
     *
     * @param order
     * @return
     * @throws AlipayApiException
     */
    public String pay(Order order) throws AlipayApiException {
        // 支付寶網(wǎng)關(guān)
        String serverUrl = alipayConfig.getGatewayUrl();
        // APPID
        String appId = alipayConfig.getAppId();
        // 商戶私鑰, 即PKCS8格式RSA2私鑰
        String privateKey = alipayConfig.getPrivateKey();
        // 格式化為 json 格式
        String format = "json";
        // 字符編碼格式
        String charset = alipayConfig.getCharset();
        // 支付寶公鑰, 即對應(yīng)APPID下的支付寶公鑰
        String alipayPublicKey = alipayConfig.getPublicKey();
        // 簽名方式
        String signType = alipayConfig.getSignType();
        // 頁面跳轉(zhuǎn)同步通知頁面路徑
        String returnUrl = alipayConfig.getReturnUrl();
        // 服務(wù)器異步通知頁面路徑
        String notifyUrl = alipayConfig.getNotifyUrl();
        // 1、獲得初始化的AlipayClient
        AlipayClient alipayClient = new DefaultAlipayClient(
                serverUrl, appId, privateKey, format, charset, alipayPublicKey, signType);
        // 2、設(shè)置請求參數(shù)
        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
        // 頁面跳轉(zhuǎn)同步通知頁面路徑
        alipayRequest.setReturnUrl(returnUrl);
        // 服務(wù)器異步通知頁面路徑
        alipayRequest.setNotifyUrl(notifyUrl);
        // 封裝參數(shù)(以json格式封裝)
        alipayRequest.setBizContent(JSON.toJSONString(order));
        // 3、請求支付寶進行付款,并獲取支付結(jié)果
        String result = alipayClient.pageExecute(alipayRequest).getBody();
        // 返回付款信息
        return result;
    }
}

跨域攔截器配置以及注冊

CorsInterceptor.java

/**
 * @Auther: csp1999
 * @Date: 2020/10/21/12:06
 * @Description: 跨域攔截器
 */
public class CorsInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, 
                             HttpServletResponse response, Object handler) throws Exception {
        //表示接受任意域名的請求,也可以指定域名
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin"));
        //該字段可選,是個布爾值,表示是否可以攜帶cookie
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS");
        response.setHeader("Access-Control-Allow-Headers", "*");
        // 預檢處理,方行所有非簡單請求方法
        if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
            return true;
        }
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, 
                           Object handler, ModelAndView modelAndView) throws Exception {
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, 
                                Object handler, Exception ex) throws Exception {
    }
}

InterceptorConfig.java

/**
 * @Auther: csp1999
 * @Date: 2020/10/20/13:26
 * @Description: 攔截器配置
 */
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
    /*
     * 將跨域攔截器交給spring容器托管
     * @return: com.haust.online_class.interceptor.CorsInterceptor
     * @create: 2020/10/21 12:20
     * @author: csp1999
     */
    @Bean
    public CorsInterceptor corsInterceptor() {
        return new CorsInterceptor();
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 跨域攔截器注冊(注意:跨域攔截器注冊要放在最上方)
        registry.addInterceptor(corsInterceptor()).addPathPatterns("/**");
        WebMvcConfigurer.super.addInterceptors(registry);
    }
}

啟動spirngboot項目

在這里插入圖片描述

5.前端搭建

前端代碼就不展示了,demo源碼會提供給大家,來看下前端的樣子把:

支付操作的頁面:

在這里插入圖片描述

支付完成后支付寶回調(diào)的頁面:

在這里插入圖片描述

啟動前端項目:

端口自定義就行!


在這里插入圖片描述

6. 支付測試

測試支付:


在這里插入圖片描述

進入支付寶支付頁面:


在這里插入圖片描述

沙箱支付寶掃碼支付:(支付密碼默認111111)


在這里插入圖片描述


在這里插入圖片描述

后臺查看打印訂單情況:

在這里插入圖片描述

7. 總結(jié)

源碼地址Gitee代碼倉庫地址

這篇文章就到這里了,也希望大家多多關(guān)注腳本之家的其他內(nèi)容!

相關(guān)文章

  • Spring事務(wù)失效的場景梳理總結(jié)

    Spring事務(wù)失效的場景梳理總結(jié)

    實際項目開發(fā)中,如果涉及到多張表操作時,為了保證業(yè)務(wù)數(shù)據(jù)的一致性,大家一般都會采用事務(wù)機制,好多小伙伴可能只是簡單了解一下,遇到事務(wù)失效的情況,便會無從下手,下面這篇文章主要給大家介紹了關(guān)于Spring事務(wù)失效場景的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Java源碼解析HashMap的resize函數(shù)

    Java源碼解析HashMap的resize函數(shù)

    今天小編就為大家分享一篇關(guān)于Java源碼解析HashMap的resize函數(shù),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 關(guān)于Spring源碼深度解析(AOP功能源碼解析)

    關(guān)于Spring源碼深度解析(AOP功能源碼解析)

    這篇文章主要介紹了關(guān)于Spring源碼深度解析(AOP功能源碼解析),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java設(shè)計模式探究之觀察者模式詳解

    Java設(shè)計模式探究之觀察者模式詳解

    這篇文章主要為大家詳細介紹了JAVA的觀察者模式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-08-08
  • Spring中異步注解@Async的使用、原理及使用時可能導致的問題及解決方法

    Spring中異步注解@Async的使用、原理及使用時可能導致的問題及解決方法

    這篇文章主要介紹了Spring中異步注解@Async的使用、原理及使用時可能導致的問題及解決方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Java SpringMVC攔截器與異常處理機制詳解分析

    Java SpringMVC攔截器與異常處理機制詳解分析

    SpringMVC是一種基于Java,實現(xiàn)了Web MVC設(shè)計模式,請求驅(qū)動類型的輕量級Web框架,即使用了MVC架構(gòu)模式的思想,將Web層進行職責解耦?;谡埱篁?qū)動指的就是使用請求-響應(yīng)模型,框架的目的就是幫助我們簡化開發(fā),SpringMVC也是要簡化我們?nèi)粘eb開發(fā)
    2021-10-10
  • mybatis-plus分頁查詢的實現(xiàn)實例

    mybatis-plus分頁查詢的實現(xiàn)實例

    頁查詢是一項常用的數(shù)據(jù)庫查詢方法,本文主要介紹了mybatis-plus分頁查詢的實現(xiàn)實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-06-06
  • Java應(yīng)用啟動停止重啟Shell腳本模板server.sh

    Java應(yīng)用啟動停止重啟Shell腳本模板server.sh

    這篇文章主要為大家介紹了Java應(yīng)用啟動、停止、重啟Shell腳本模板server.sh,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Java中類變量和類方法的基本使用

    Java中類變量和類方法的基本使用

    這篇文章主要介紹了Java中類變量和類方法的基本使用,類變量也叫靜態(tài)變量/靜態(tài)屬性,是該類的所有對象共享的變量,任何一個該類的對象訪問它時,取到的都是相同的值,同樣任何一個該類的對象去修改它時,修改的也是同一個變量,需要的朋友可以參考下
    2023-07-07
  • shiro實現(xiàn)單點登錄(一個用戶同一時刻只能在一個地方登錄)

    shiro實現(xiàn)單點登錄(一個用戶同一時刻只能在一個地方登錄)

    這篇文章主要介紹了shiro實現(xiàn)單點登錄(一個用戶同一時刻只能在一個地方登錄)的相關(guān)資料,非常不錯,具有參考借鑒價值,感興趣的朋友一起學習吧
    2016-08-08

最新評論

阜城县| 广水市| 龙江县| 丰顺县| 岳西县| 烟台市| 惠州市| 嵩明县| 河北省| 乌鲁木齐市| 垦利县| 集安市| 清镇市| 喀喇沁旗| 南宫市| 永昌县| 万宁市| 宣汉县| 新河县| 商河县| 赤壁市| 时尚| 扎赉特旗| 堆龙德庆县| 固安县| 汤原县| 武平县| 安溪县| 靖安县| 崇礼县| 吉隆县| 咸丰县| 巴彦县| 三原县| 南江县| 金门县| 观塘区| 阳朔县| 台前县| 武夷山市| 扎赉特旗|