2016/7/01 WeChat小项目--WeiXinServlet类

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

 

import com.mashen.util.ConfigUtil;

import com.mashen.util.SignUtil;

 

/**

 *Servlet implementation class WeiXinServlet

 *

 */

@WebServlet("/WeiXinServlet")

//一个继承于HttpServlet的子类WeiXinServle类,HttpServlet类主要提供了doGetdoPOST以及Service方法

public class WeiXinServlet extendsHttpServlet {

      privatestatic final long serialVersionUID = 1L;

 

      /**

       * @see HttpServlet#HttpServlet()

       */

      publicWeiXinServlet() {

           super();

           //TODO Auto-generated constructor stub

      }

 

      /**

       * 验证微信公众号开发者

       * 只有在微信官网填写服务器配置的时候被调用

       */

//重写doGet方法,里面传入HttpServletRequest以及HttpServletRsponese的对象,我们需要通过调用他们来实现发送请求以及做出回应的动作

      protectedvoid doGet(HttpServletRequest request, HttpServletResponse response)

                 throwsServletException, IOException {

           //TODO Auto-generated method stub

//提醒程序员现在是doGet方法在被调用

           System.out.println("doGetstart");

           //声明字符串signature(加密签名)、timestamp(时间戳)、nonce(随机数)、echostr(随机字符串)

           Stringsignature = request.getParameter("signature");

           Stringtimestamp = request.getParameter("timestamp");

           Stringnonce = request.getParameter("nonce");

           Stringechostr = request.getParameter("echostr");

//如果加密签名为空的话就调用HttpServletResponse类的对象response做出回应动作,在客户端输出“参数错误”(通过调用responsegetprintwriter动作来成为一个PrintWriter类的对象然后再调用Printwriter对象的write动作进行输出)

           if(signature == null) {

                 response.getWriter().write("参数错误");

//不为空的话就通过SignUtil类经过一系列操作,看这个加密签名、时间戳、随机数、随机字符串、token是否相符合

           }else if (SignUtil.validSign(signature, ConfigUtil.getValues("token"),timestamp, nonce)) {

//验证符合之后输出验证成功,并在客户端打输出echostr(随机字符串)

                 System.out.println("验证成功");

                 response.getWriter().write(echostr);

           }else {

 

//验证不通过在客户端打印验证失败,并在客户端输出fail

                 System.out.println("验证失败");

                 response.getWriter().write("fail");

           }

      }

 

      /**

       * @see HttpServlet#doPost(HttpServletRequestrequest, HttpServletResponse

       *     response)

       */

      protectedvoid doPost(HttpServletRequest request, HttpServletResponse response)

                 throwsServletException, IOException {

           //TODO Auto-generated method stub

//同理,当调用doPOST方法时会打印出doPOST start,但是这里面并没有写除了打印之外的任何操作,并且当dogetdoPOST同时存在的时候默认调用doGet方法,所以这里并不会使用到doPOST方法。

           System.out.println("doPoststart");

      }

 

}

 

 

                            ------有些代码不应该被忘记,也没有源代码不应该被记住。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值