package com.github.sd4324530.fastweixin.servlet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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; /** * 微信公众平台交互操作基类,提供几乎所有微信公众平台交互方式 * 基于javaee servlet框架,方便使用此框架的项目集成 * * @author peiyu * @since 1.1 */ public abstract class WeixinServletSupport extends HttpServlet { private static final Logger LOG = LoggerFactory.getLogger(WeixinServletSupport.class); private final WeixinSupport support = getWeixinSupport(); /** * 强制要求servlet框架开发者自行实现weixinSupport类 * * @return 用户自行实现的weixinSupport对象 */ protected abstract WeixinSupport getWeixinSupport(); /** * 重写servlet中的get方法,用于处理微信服务器绑定,置为final方法,用户已经无需重写这个方法啦 * * @param request http请求对象 * @param response http响应对象 * @throws ServletException servlet异常 * @throws IOException IO异常 */ @Override protected final void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { support.bindServer(request, response); } /** * 重写servlet中的post方法,用于接收微信服务器发来的消息,置为final方法,用户已经无需重写这个方法啦 * * @param request http请求对象 * @param response http响应对象 * @throws ServletException servlet异常 * @throws IOException IO异常 */ @Override protected final void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (!support.isLegal(request)) { return; } //设置响应编码格式 response.setCharacterEncoding("UTF-8"); String resp = support.processRequest(request); PrintWriter pw = response.getWriter(); pw.write(resp); pw.flush(); pw.close(); } }