当前位置: 首页 > 工具软件 > spring-jfinal > 使用案例 >

Spring 集成 JFinal 获取微信公众号用户信息

邵君植
2023-12-01

首先导入必须的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"));
	}
	
}

preHandle方法中设置appId和appSecret;

afterCompletion方法中清空appId,否则第二次进入,access_token生成会有问题。因为appId是放到ThreadLocal中的,具体的代码看demo。



 类似资料: