首先导入必须的jar包:
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal</artifactId>
<version>3.2</version>
</dependency>
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal-weixin</artifactId>
<version>1.9</version>
</dependency>
再web.xml加载JFinal:
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>com.ymkj.bxld.common.weixin.WeixinConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/weixin/*</url-pattern>
</filter-mappin
配置完成后,要修改javen_config.txt文件:
appId=wx1d1e14713044b6aa
appSecret=83e11994830347419b05ec3f5075fc72
上面两个key的值在微信公众号测试平台去扫二维码会给你生成。
修改完配置文件,修改加载此配置文件的类,根据自己的需求修改:
路径:jfinal-weixin-demo\src\main\java\com\javen\common\APPConfig.java
以上配置完,可以通过JFianl-weixin的api去调用微信公众号接口。
例如:获取公众号用户信息接口
ApiResult ar = UserApi.getUserInfo(openId);
通过以上代码就可以后去到用户信息。
注意的几点:
1、赋值appId合appSecret的时机,这两个参数在调用接口之前事必须要设置的,好多地方都可以设置,我是在调用方法之前和之后会做处理,写一个拦截器,在sping中配置,代码如下:
public class MyApiInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
ApiConfig apiConfig = new ApiConfig();
apiConfig.setAppId(PropKit.get("appId"));
apiConfig.setAppSecret(PropKit.get("appSecret"));
ApiConfigKit.putApiConfig(apiConfig);
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 {
ApiConfigKit.removeApiConfig(PropKit.get("appId"));
}
}
afterCompletion方法中清空appId,否则第二次进入,access_token生成会有问题。因为appId是放到ThreadLocal中的,具体的代码看demo。