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

Java微信二次開發(fā)(一) Java微信請(qǐng)求驗(yàn)證功能

 更新時(shí)間:2017年04月25日 16:32:41   作者:wangtianze  
這篇文章主要為大家詳細(xì)介紹了Java微信二次開發(fā)第一篇,Java微信請(qǐng)求驗(yàn)證功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

準(zhǔn)備用Java做一個(gè)微信二次開發(fā)項(xiàng)目,把流程寫在這里吧。

第一篇,做微信請(qǐng)求驗(yàn)證

需要導(dǎo)入庫(kù):servlet-api.jar

第一步:新建包c(diǎn)om.wtz.service,新建類LoginServlet.java

package com.wtz.service;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.wtz.util.ValidationUtil;

/**
 *   @author wangtianze QQ:864620012
 * @date 2017年4月17日 下午8:11:32
 * <p>version:1.0</p>
 *  <p>description:微信請(qǐng)求驗(yàn)證類</p>
 */
public class LoginServlet extends HttpServlet {

 @Override
 protected void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  System.out.println("get請(qǐng)求。。。。。。");
  
  //1.獲得微信簽名的加密字符串
  String signature = request.getParameter("signature");
  
  //2.獲得時(shí)間戳信息
  String timestamp = request.getParameter("timestamp");
   
  //3.獲得隨機(jī)數(shù)
  String nonce = request.getParameter("nonce");
  
  //4.獲得隨機(jī)字符串
  String echostr = request.getParameter("echostr");
  
  System.out.println("獲得微信簽名的加密字符串:"+signature);
  System.out.println("獲得時(shí)間戳信息:"+timestamp);
  System.out.println("獲得隨機(jī)數(shù):"+nonce);
  System.out.println("獲得隨機(jī)字符串:"+echostr);
  
  PrintWriter out = response.getWriter();
  
  //驗(yàn)證請(qǐng)求確認(rèn)成功原樣返回echostr參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則失敗
  if(ValidationUtil.checkSignature(signature, timestamp, nonce)){
   out.print(echostr);
  }
  
  out.close();
  out = null;
 }
}

 第二步:新建包c(diǎn)om.wtz.util,新建類Validation.java

package com.wtz.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;

/**
 *  @author wangtianze QQ:864620012
 * @date 2017年4月17日 下午8:35:57
 * <p>version:1.0</p>
 *  <p>description:微信請(qǐng)求校驗(yàn)工具類</p>
 */
public class ValidationUtil {
 private static String token = "wangtianze";
 
 public static boolean checkSignature(String signature,String timestamp,String nonce){
  //1.將token,timestamp,nonce三個(gè)參數(shù)進(jìn)行排序
  String[] str = new String[]{token,timestamp,nonce};
  Arrays.sort(str);
  
  //2.將三個(gè)參數(shù)字符串拼接成一個(gè)字符串
  StringBuilder buff = new StringBuilder();
  for(int i=0;i<buff.length();i++){
   buff.append(str[i]);
  }
  
  //3.進(jìn)行sha1加密
  MessageDigest md = null;
  String result = "";
  try {
   md = MessageDigest.getInstance("SHA-1");
   byte[] data = md.digest(buff.toString().getBytes());
   
   //將字節(jié)數(shù)組轉(zhuǎn)換成字符串
   result = bytesToString(data);
   
   System.out.println("加密后的字符串為:"+result);
   
  } catch (NoSuchAlgorithmException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  return result!=null?(result.equals(signature.toUpperCase())):false;
 }
 
 /**
  * 將字節(jié)數(shù)組轉(zhuǎn)換成十六進(jìn)制字符串
  * @param byteArray
  * @return
  */
 private static String bytesToString(byte[] byteArray){
  String stringDigest = "";
  for(int i=0;i<stringDigest.length();i++){
   stringDigest += byteToHexString(byteArray[i]);
  }
  return stringDigest;
 }
 
 /**
  * 將一個(gè)字節(jié)轉(zhuǎn)換為十六進(jìn)制字符串
  * @param mByte
  * @return
  */
 private static String byteToHexString(byte mByte){
  char[] digit = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  char[] temp = new char[2];
  
  temp[0] = digit[(mByte>>>4) & 0X0F];
  temp[1] = digit[mByte & 0X0F];
  
  String str = new String(temp);
  return str;
 }
}

第一天就做了這些,完成了微信請(qǐng)求驗(yàn)證的功能。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Redis中高并發(fā)讀寫性能的深度解析與優(yōu)化

    Redis中高并發(fā)讀寫性能的深度解析與優(yōu)化

    Redis 作為一款高性能的內(nèi)存數(shù)據(jù)庫(kù),廣泛應(yīng)用于緩存、消息隊(duì)列、實(shí)時(shí)統(tǒng)計(jì)等場(chǎng)景,本文將深入探討 Redis 的讀寫并發(fā)能力,感興趣的小伙伴可以了解下
    2025-03-03
  • java 枚舉類定義靜態(tài)valueOf(java.lang.String)方法的問題及解決

    java 枚舉類定義靜態(tài)valueOf(java.lang.String)方法的問題及解決

    這篇文章主要介紹了java 枚舉類定義靜態(tài)valueOf(java.lang.String)方法的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java Swing實(shí)現(xiàn)餐廳點(diǎn)餐系統(tǒng)源碼(收藏版)

    Java Swing實(shí)現(xiàn)餐廳點(diǎn)餐系統(tǒng)源碼(收藏版)

    這篇文章主要介紹了Java Swing實(shí)現(xiàn)餐廳點(diǎn)餐系統(tǒng)源碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Springboot使用Redis中ZSetOperations實(shí)現(xiàn)博客訪問量

    Springboot使用Redis中ZSetOperations實(shí)現(xiàn)博客訪問量

    在日常的網(wǎng)站使用中,經(jīng)常會(huì)碰到頁(yè)面的訪問量,本文主要介紹了Springboot使用Redis中ZSetOperations實(shí)現(xiàn)博客訪問量,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 淺談fastjson的常用使用方法

    淺談fastjson的常用使用方法

    下面小編就為大家?guī)硪黄獪\談fastjson的常用使用方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • SpringMVC中Model和ModelAndView的EL表達(dá)式取值方法

    SpringMVC中Model和ModelAndView的EL表達(dá)式取值方法

    下面小編就為大家分享一篇SpringMVC中Model和ModelAndView的EL表達(dá)式取值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解

    JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解

    這篇文章主要介紹了JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • java開發(fā)中使用IDEA活動(dòng)模板快速增加注釋的方法

    java開發(fā)中使用IDEA活動(dòng)模板快速增加注釋的方法

    這篇文章主要介紹了java開發(fā)中使用IDEA活動(dòng)模板快速增加注釋,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java中的序列化機(jī)制詳細(xì)解讀

    Java中的序列化機(jī)制詳細(xì)解讀

    這篇文章主要介紹了Java中的序列化機(jī)制詳細(xì)解讀,序列化:將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)臄?shù)據(jù)形式(比如二進(jìn)制)的過程,反序列化:與序列化相對(duì),把序列化轉(zhuǎn)換成的可以存儲(chǔ)或傳輸?shù)臄?shù)據(jù)形式轉(zhuǎn)化為對(duì)象的狀態(tài)信息的過程,需要的朋友可以參考下
    2023-11-11
  • Java各種鎖在工作中使用場(chǎng)景和細(xì)節(jié)經(jīng)驗(yàn)總結(jié)

    Java各種鎖在工作中使用場(chǎng)景和細(xì)節(jié)經(jīng)驗(yàn)總結(jié)

    本章主要說一說鎖在工作中的使用場(chǎng)景,主要以 synchronized 和 CountDownLatch 為例,會(huì)分別描述一下這兩種鎖的使用場(chǎng)景和姿勢(shì)
    2022-03-03

最新評(píng)論

布尔津县| 成都市| 宁陵县| 濮阳县| 泗洪县| 申扎县| 融水| 图们市| 广水市| 望城县| 兴化市| 昂仁县| 浏阳市| 叙永县| 龙江县| 五寨县| 册亨县| 修文县| 汝南县| 抚顺县| 盐亭县| 新巴尔虎左旗| 修水县| 洱源县| 壶关县| 垦利县| 余庆县| 陵川县| 南华县| 弥渡县| 灵山县| 松滋市| 淮安市| 磐安县| 崇明县| 调兵山市| 化州市| 鄂托克前旗| 扶绥县| 辽宁省| 盱眙县|