久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Spring boot中注冊Servlet

 邵飛翔 2017-04-07

原創(chuàng)性聲明:本文完全為筆者原創(chuàng),,請尊重筆者勞動力,。轉(zhuǎn)載務(wù)必注明原文地址。

今天忽然想開發(fā)一個公眾號,。
不過啟用開發(fā)者模式之前,,在微信公眾平臺里要進行一些基本的配置。


Paste_Image.png

故而,要先實現(xiàn)公眾號后臺與微信后臺對接的驗證功能,。如何實現(xiàn)這個功能呢?那就是在自己的公眾號后臺提供一個servlet服務(wù),,當點擊上圖中的“提交“按鈕時,微信后臺會發(fā)送一個驗證信息到上圖中“URL”對應(yīng)的地址,,驗證通過才能開啟開發(fā)者模式。

那么自己要提供的servlet服務(wù)要做些什么呢,?微信公眾號開發(fā)者文檔中有詳細介紹,這里就不予多說,。此文主要是講Spring boot。

我在創(chuàng)建普通的web項目時,,覺得麻煩,還要部署tomcat,,于是就想直接用已有的一個spring boot空項目。但是發(fā)現(xiàn),,一直以來處理請求用的都是controller,,對于大部分應(yīng)用場景而言,controller也的確是夠用了,。但是,此時我需要一個servlet處理微信后臺驗證,,這個還真沒弄過。于是,,查資料解決了這個問題,,現(xiàn)做個筆記。

如何在spring boot項目中注冊Servlet呢,?

由于沒有web.xml,無法直接在xml中配置,,但是spring boot提供了另外兩種更為簡潔的方式:

一. java代碼實現(xiàn)servlet注冊

1.創(chuàng)建servlet類,。(一貫作風,,直接上code,,簡單粗暴有效)

public class WeChatServlet extends HttpServlet {
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
                        throws ServletException, IOException {

    String signature = req.getParameter("signature");
    String timestamp = req.getParameter("timestamp");
    String nonce = req.getParameter("nonce");
    String echostr = req.getParameter("echostr");
    PrintWriter out = resp.getWriter();
    if (ValidUtil.checkSignature(signature, timestamp, nonce)) {
      out.print(echostr);
    }
  }
}

一個簡單的,,繼承了HttpServlet的類,。

2.在主類中注冊

@SpringBootApplication
public class MyAppliction extends SpringBootServletInitializer {

    public static void main(String[] args) {
      SpringApplication.run(MyApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
       return application.sources(MyApplicaitioni.class);
    }

    // 注冊servlet
    @Bean
    public ServletRegistrationBean weChatValid(){
      //第一個參數(shù)是第1步中創(chuàng)建的WeChatServlet實例,,第二個參數(shù)是其對應(yīng)的路徑,,相當于web.xml中配置時的url-pattern。
      return new ServletRegistrationBean(new WeChatServlet(), "/weChatValid");
    }
}

多個了weChatValid函數(shù)(注意要用@Bean注解),,其中,返回ServletRegistrationBean的實例,其中兩個參數(shù)....(自己看代碼中注釋^0^),。

完畢。

二,、注解實現(xiàn)Servlet注冊

1.創(chuàng)建Servlet類,,并添加注解,。

//注解實現(xiàn)
@WebServlet(urlPatterns = "/weChatValid", description = "微信接口驗證")
public class WeChatServlet extends HttpServlet { 
  protected void   doGet(HttpServletRequest req, HttpServletResponse resp) 
            throws ServletException, IOException { 
      String signature = req.getParameter("signature"); 
      String timestamp = req.getParameter("timestamp"); 
      String nonce = req.getParameter("nonce"); 
      String echostr = req.getParameter("echostr"); 
      PrintWriter out = resp.getWriter();
      if (ValidUtil.checkSignature(signature, timestamp, nonce)) {
          out.print(echostr); 
      } 
    }
}

類前多了個@WebServlet注解,參數(shù)urlPartterndescriptiion不言而喻,。

2.給主類添加一個注解@ServletComponentScan

@ServletComponentScan //添加的注解
@SpringBootApplication
public class MyAppliction extends SpringBootServletInitializer {

    public static void main(String[] args) {
      SpringApplication.run(MyApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
       return application.sources(MyApplication.class);
    }
}

多了個@ServletComponentScan注解,。

完畢,。

此時訪問該Servlet的url就可以是:

http://localhost:8080/weChatValid

Spring boot注解真的是很方便??!寫到這里,Spring boot中注冊Servlet的兩種方法都已經(jīng)介紹完了,。

不過,,微信公眾平臺服務(wù)器配置url可不能填上面這個地址(圖1中的url輸入框),可以用公網(wǎng)映射工具(如ngrok)將本地地址映射到公網(wǎng)上去,,只是替換其中的localhost:8080。(不過更好的方法還是直接去買個空間,,我就是太窮了買不起才用公網(wǎng)映射臨時提交測試一下)。希望本文對你有所幫助,!

1.舉一反三:spring boot 的Filter注冊、Listener注冊和Servlet注冊如出一轍,。既然Servlet對應(yīng)的注解是@WebServlet,,那Filter和Listener就是...(你猜),,不過他們?nèi)齻€在主類上都是用@ServletComponentScan(這個有點不按常理出牌~)

2.學(xué)而再思:第一種方法,,如果要再注冊一個Servlet,,那么主類中該怎么搞,?再創(chuàng)建一個方法?太惡心,,不可能。希望底下評論能有答案,。謝謝!

3.打個廣告:如何手動創(chuàng)建一個Spring boot + angularJs應(yīng)用,,可以參見我的另兩篇博文:《從零開始構(gòu)建一個Spring boot + angularJS Web應(yīng)用1》《從零....balabalabala.....2》

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多