在SpringMVC中整合jfinal微信項目

jopen 8年前發布 | 41K 次閱讀 Spring MVC Web框架

背景

為了業務拓展,項目需要使用微信,于是找到了 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整合這一塊放出來












來自: http://my.oschina.net/linapex/blog/598279

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!