package com.bcxin.survey.controller.wechat; import com.bcxin.survey.service.wechat.WechatService; import com.bcxin.survey.wechat.utils.SignUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.transaction.annotation.Transactional; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** * 涓庡井淇″钩鍙板鎺ervlet * @author zhaofei * */ @Transactional public class WechatServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; final static Logger logger = LoggerFactory.getLogger(WechatServlet.class); /** * 纭璇锋眰鏉ヨ嚜寰俊鏈嶅姟鍣� */ @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 寰俊鍔犲瘑绛惧悕 String signature = request.getParameter("signature"); // 鏃堕棿鎴� String timestamp = request.getParameter("timestamp"); // 闅忔満鏁� String nonce = request.getParameter("nonce"); // 闅忔満瀛楃涓� String echostr = request.getParameter("echostr"); PrintWriter out = response.getWriter(); // 閫氳繃妫€楠宻ignature瀵硅姹傝繘琛屾牎楠岋紝鑻ユ牎楠屾垚鍔熷垯鍘熸牱杩斿洖echostr锛岃〃绀烘帴鍏ユ垚鍔燂紝鍚﹀垯鎺ュ叆澶辫触 if (SignUtil.checkSignature(signature, timestamp, nonce)) { out.print(echostr); logger.info("閫氳繃楠岃瘉鎺ュ叆鎴愬姛锛�"); } out.close(); out = null; } /** * 澶勭悊寰俊鏈嶅姟鍣ㄥ彂鏉ョ殑娑堟伅 */ @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO 娑堟伅鐨勬帴鏀躲€佸鐞嗐€佸搷搴� // 灏嗚姹傘€佸搷搴旂殑缂栫爜鍧囪缃负UTF-8锛堥槻姝腑鏂囦贡鐮侊級 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); // 璋冪敤鏍稿績涓氬姟绫绘帴鏀舵秷鎭€佸鐞嗘秷鎭� String respMessage = WechatService.processRequest(request); // 鍝嶅簲娑堟伅 PrintWriter out = response.getWriter(); out.print(respMessage); out.close(); } }