在SpringMVC中整合jfinal微信项目

原创
2016/01/06 11:59
阅读数 2.4K

背景

为了业务拓展,项目需要使用微信,于是找到了 jfinal 微信项目~~~ 

jfinal 自带mvc,orm,ioc框架,jfinal wx 又封装了 微信官方sdk库,还算比较好用~

可是,对于jfinal框架依赖太严重。。。

然后经过一段时间的使用,CTO发话了,需要项目集成,觉得 jfinal 微信项目单独部署一个Tomcat服务器太麻烦了~ 多个系统交互时还需要使用RPC,每次微信项目更新还需要更新其他项目的jar包~ 项目拆分多个,问题多多啊~~

于是我得考虑这个事情该怎么搞比较好。

把项目集成有两种方案:

1.将jfinal wx项目集成到主项目中,主项目使用spring mvc。

2.重写主项目微信模块,主要涉及到 微信服务器认证签名,微信事件处理,微信AccessTokenCacheRefesh问题。


考虑了了一下,还是使用第一种方案,将jfinal wx项目集成。

要保证两个点:

1.集成时项目不能影响主项目。

2.jfinal wx项目能使用主项目的东西,如:Spring的Ioc,事务这一块。

于是看了一下jfinal的源码,发现so easy 。


思路

重写jfinal的JFinalFilter 过滤器,采用装饰者设计模式.

根据指定路径进行业务处理,如:/wx则已jfinal wx处理,其他的走主业务正常流程。


源码


web.xml

 <filter>
		<filter-name>jfinal</filter-name>
		<filter-class>com.jfinal.weixin.filter.NewJFinalFilter</filter-class>
		<init-param>
			<param-name>configClass</param-name>
			<param-value>com.jfinal.weixin.demo.WeixinConfig</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>jfinal</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


NewJFinalFilter.java


package com.jfinal.weixin.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import com.jfinal.core.JFinalFilter;

/**
 * JFinal framework filter
 */
public final class NewJFinalFilter implements Filter {

	JFinalFilter jFinalFilter = new JFinalFilter();

	public void init(FilterConfig filterConfig) throws ServletException {
		jFinalFilter.init(filterConfig);
	}

	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) req;

		String uri = request.getRequestURI();
		if (uri.startsWith("/wx"))
			jFinalFilter.doFilter(req, res, chain);
		else
			chain.doFilter(req, res);
	}

	public void destroy() {
		jFinalFilter.destroy();
	}

}




上面的配置即可实现 Spring MVC& Jfinal wx的项目整合。

源码包

项目启动日志图


访问如下接口,返回结果正常,不影响原有业务逻辑。

http://localhost/checkVerInfo

http://localhost/wx/api/getFollowers


收藏点赞的人多我就把第二点放出来,jfinal wx与spring service整合这一块放出来












展开阅读全文
打赏
9
20 收藏
分享
加载中
该评论暂时无法显示,详情咨询 QQ 群:912889742
求jfinal wx与spring service整合0
2016/08/01 18:45
回复
举报
很强,/
2016/05/30 22:16
回复
举报
linapex博主

引用来自“JFinal”的评论

NewJFinalFilter 这个也可以省去,直接为 JFinalFilter 在 xml 中配置 filter-mapping 时这样弄:<url-pattern>/wx</url-pattern>,然后再创建一个控制器,路由以 "/wx" 打头,并专门接管一下微信请求就打完收工了。
这个方式有考虑过,挺好,挺方便的,但后面觉得放在web.xml中,如果我要取消,直接删除Filter就可以了~~,否则我还要打开java删除控制器方法,还有放在web.xml中没有依赖性~
2016/04/19 17:44
回复
举报
该评论暂时无法显示,详情咨询 QQ 群:912889742
简单明了,赞一个
2016/04/18 20:31
回复
举报
该评论暂时无法显示,详情咨询 QQ 群:912889742
更多评论
打赏
7 评论
20 收藏
9
分享
返回顶部
顶部