1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        jwxJava 微信公眾號 MVC 開發(fā)框架

        聯(lián)合創(chuàng)作 · 2023-09-25 00:35

        jwx是開源的java公眾號開發(fā)MVC框架,基于spring配置文件和微信消息或事件注解,通過微信上下文處理一個或多個微信公眾號服務(wù)請求。 目的主要有兩個,其一生封裝微信請求xml消息為java實體對象,將返回對象轉(zhuǎn)換為xml響應(yīng)消息;其二是封裝微信接口為java服務(wù)。微信公眾號采用 web服務(wù)作為消息與第三方平臺發(fā)生交互,數(shù)據(jù)格式主要是xml和json,普通的web請求響應(yīng)機(jī)制采用xml數(shù)據(jù)格式交互,微信接口服務(wù)采用json 數(shù)據(jù)格式。jwx主要對這兩個方面做了封裝處理,另外借鑒springmvc的請求處理方式,以WeixinDispatcherServlet類作為消 息分發(fā)控制器,通過消息組裝工廠生成請求消息或事件實體,根據(jù)消息或事件類型,在消息策略處理工廠查找處理策略,獲取相應(yīng)的微信處理方法,Servlet 獲取到處理方法后,請求線程池獲取線程調(diào)用微信方法,根據(jù)微信方法的返回值,生成請求的xml響應(yīng)。本說明文檔將分章節(jié)說明jwx框架的特征、快速入門、 配置、擴(kuò)展等各個方面。

        一、特征

        1. 消息重排自動處理,提供消息重排緩存接口

        2. 明文/加密模式無感知切換

        3. 常用的微信接口服務(wù)封裝

        4. 提供線程池執(zhí)行微信方法,方法調(diào)用線程池大小可配置

        5. 長任務(wù)消息推送

        6. 通過微信上下文配置支持多個微信公眾號處理

        7. 提供統(tǒng)一的異常處理機(jī)制

        8. 提供access_token自動更新機(jī)制

        9. 請求消息組裝

        10. 靈活的響應(yīng)消息類型

        二、快速入門

        本章教材提供一個最簡單的例子,用戶在微信公眾號發(fā)一條foo的文本請求消息,公眾號響應(yīng)一條bar的文本響應(yīng)消息。

        1、maven配置文件

        通過maven生成一個webapp項目,例如項目名為weixin,在maven配置文件pom.xml中添加jwx依賴,jwx的1.0.0jar包已經(jīng)提交到maven中心倉庫,通過中心倉庫搜索jwx關(guān)鍵字可以獲取jar包依賴配置。

        <dependency>
            <groupId>com.github.jweixin</groupId>
            <artifactId>jwx</artifactId>
            <version>1.0.0</version>
        </dependency>

        2、web.xml文件配置

        web.xml是web應(yīng)用的配置文件,jwx從spring配置文件中獲取配置信息,所以必須配置spring上下文環(huán)境;另外,需要配置微信消 息處理分發(fā)Servlet(WeixinDispatcherServlet),用于處理微信送過來的請求消息或事件。jwx對springmvc沒有依 賴關(guān)系,web mvc框架可以根據(jù)實際需要配置。

        <listener>
        	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        
        <servlet>
        	<servlet-name>weixin</servlet-name>
        	<servlet-class>com.github.jweixin.jwx.servlet.WeixinDispatcherServlet</servlet-class>
        	<load-on-startup>1</load-on-startup>
        </servlet>
        
        <servlet-mapping>
        	<servlet-name>weixin</servlet-name>
        	<url-pattern>/wx/*</url-pattern>
        </servlet-mapping>
        • load-on-startup表示Servlet在web應(yīng)用啟動階段加載,數(shù)字代表了啟動次序,如果項目使用了springmvc框架,可以調(diào)整該數(shù)字為2,放到springmvc框架后面啟動加載,但實際上Servlet的啟動次序并沒有太大的關(guān)系。

        • spring配置是jwx必須的,如果沒有配置spring上下文,jwx在啟動階段會報錯。

        • url-pattern模式匹配微信公眾號平臺服務(wù)器配置的URL配置,如果需要處理多個微信公眾號,可以配置多個servlet-mapping或者使用路徑通配符匹配多個url鏈接。

        3、spring配置文件

        spring配置文件applicationContext.xml里面需要配置WeixinConfigurer,這是jwx唯一必須配置項,如果沒有配置,啟動階段會報錯。

        <context:component-scan base-package="com.github.jweixin.jwx.weixin.service" />
        
        <bean class="com.github.jweixin.jwx.config.WeixinConfigurer">
            <property name="packages">
                <list>
                    <value>com.telecomjs.yc.controller</value>
                </list>
            </property>
        </bean>
        • component-scan配置了微信接口服務(wù)類,里面包含常用的微信公眾號接口服務(wù),例如菜單管理、消息服務(wù)、二維碼服務(wù)、用戶管理、微信網(wǎng) 頁授權(quán)、素材管理等服務(wù)內(nèi)容,在web應(yīng)用控制器類和微信控制器類里面可以通過@Autowired注解來注入服務(wù)。本配置并不是必須項。

        • WeixinConfigurer是唯一需要配置的部分,packages屬性必須配置,里面是微信控制器包路徑列 表,WeixinDispatcherServlet在啟動階段會掃描包路徑及其下面的子包路徑,如果類擁有@Weixin注解,則該類會被當(dāng)作微信控制 器類加載到微信上下文。

        • 除了packages屬性是必須配置的,其他配置都有缺省值,包括消息緩存、微信方法線程池的大小、微信方法調(diào)用超時閥值等,這部分內(nèi)容放在配置部分說明了。

        4、編寫微信控制器類

        當(dāng)配置完上面的3個部分,所有的配置文件就結(jié)束了,是不是很簡單呢。下面我們只需要寫微信控制器類就能讓我們的微信公眾號活起來了。微信控制器類是 用@Weixin注解的普通類,與sprngmvc里面的controller很類似,方法的執(zhí)行也很類似。我們在 com.telecomjs.yc.controller包下建一個java類WeixinController,如下:

        package com.telecomjs.yc.controller;
        
        import com.github.jweixin.jwx.context.Weixin;
        import com.github.jweixin.jwx.message.annotation.TextMsg;
        
        @Weixin(value="/wx/coreServlet",
           appID="xxx",
           appSecret="xxx",
           encodingAESKey="xxx",
           token="xxx")
        public class WeixinController {
        
        	@TextMsg("foo")
        	public String foo(){
        		return "bar";
        	}
        }
        • @Weixin需要配置value值,這個實際就是微信服務(wù)器配置里面URL最后的部分,當(dāng)然不包含域名和web應(yīng)用的上下文,切記,不能包含web應(yīng)用上下文,其他4個部分配置內(nèi)容也是公眾號配置內(nèi)容,我們只需要登錄到公眾號看下填進(jìn)去就行了。如果沒有配置encodingAESKey,那么是不能處理加密消息的,如果有l(wèi)og4j的配置文件,啟動階段會給出告警信息的。

        • 同一個公眾號可以配置多個@Weixin注解控制器類,其中只需要一個有其他4項配置就可以了,如果多個控制器類配置了其他4個配置項,如果相對應(yīng)的配置項值不相同,啟動階段會報錯。

        • 不同微信公眾號是通過@Weixin的value值區(qū)分的,該值同時是微信上下文的查找關(guān)鍵字。

        • foo方法上面有@TextMsg注解,是定義的微信方法,在Servlet啟動時通過包掃描加載到微信上下文對象中。jwx針對微信消息或事件類型設(shè)計了一組微信注解,基本涵蓋了微信公眾號定義的消息和事件類型。

        • @TextMsg是文本消息注解,代表請求類型的是文本消息,value值是發(fā)送的文本消息內(nèi)容。處理文本適配模式,@TextMsg還支持正則表達(dá)式適配模式,這部分內(nèi)容在配置部分說明。

        • 本例中微信方法并沒有設(shè)置參數(shù),實際可以靈活設(shè)置參數(shù),例如我們可以在方法中設(shè)置HttpServletRequest request,HttpServletResponse response,InMessage in, WeixinContext context等參數(shù),這部分內(nèi)容也放在配置部分說明。

        • 本例中方法的返回類型是String,代表響應(yīng)的消息內(nèi)容是文本消息,jwx提供了豐富的返回值類型,這部分內(nèi)容會在配置部分詳細(xì)說明。

          5、啟動web應(yīng)用

          上面就是這個最簡單例子的全部內(nèi)容,讓我們啟動web應(yīng)用,進(jìn)入到我們的公眾號,輸入foo文本提交,看看返回的是不是bar這個內(nèi)容了,如果是,恭喜你,你已經(jīng)初步掌握了jwx的使用方法。下面更多的內(nèi)容等著你呢!

        瀏覽 62
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            在线观看三级网站 | 亚洲无码婷婷国产 | 婷婷综合激情 | 《喜爱夜蒲》大尺度视频 | 久久久久久久国产精品免费播放 | 九热在线视频 | 日日碰狠狠躁久久躁蜜桃 | 97人人超碰 | 国产精品久久无码一区二区三区网 | 北京女人操逼 |