一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Spring boot中注冊Servlet

 邵飛翔 2017-04-07

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

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


Paste_Image.png

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

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

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

如何在spring boot項(xiàng)目中注冊Servlet呢?

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

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

1.創(chuàng)建servlet類。(一貫作風(fēng),直接上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);
    }
  }
}

一個(gè)簡單的,繼承了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(){
      //第一個(gè)參數(shù)是第1步中創(chuàng)建的WeChatServlet實(shí)例,第二個(gè)參數(shù)是其對應(yīng)的路徑,相當(dāng)于web.xml中配置時(shí)的url-pattern。
      return new ServletRegistrationBean(new WeChatServlet(), "/weChatValid");
    }
}

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

完畢。

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

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

//注解實(shí)現(xiàn)
@WebServlet(urlPatterns = "/weChatValid", description = "微信接口驗(yàn)證")
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); 
      } 
    }
}

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

2.給主類添加一個(gè)注解@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);
    }
}

多了個(gè)@ServletComponentScan注解。

完畢。

此時(shí)訪問該Servlet的url就可以是:

http://localhost:8080/weChatValid

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

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

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

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

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本加勒比在线播放一区| 精品少妇一区二区三区四区| 在线播放欧美精品一区| 国产又大又猛又粗又长又爽| 国内女人精品一区二区三区| 国产精品激情对白一区二区| 国产三级视频不卡在线观看| 九九久久精品久久久精品| 色综合视频一区二区观看| 亚洲一二三四区免费视频| 隔壁的日本人妻中文字幕版| 日本东京热加勒比一区二区| 色综合伊人天天综合网中文| 一级片二级片欧美日韩| 99国产高清不卡视频| 日韩欧美一区二区黄色 | 亚洲精品偷拍一区二区三区| 少妇人妻一级片一区二区三区| 日本少妇aa特黄大片| 国产不卡免费高清视频| 欧美日韩国产亚洲三级理论片 | 久久国产精品热爱视频| 欧美精品久久99九九| 欧美黄色黑人一区二区| 欧美精品久久男人的天堂| 一区二区日韩欧美精品| 日本理论片午夜在线观看| 国产av熟女一区二区三区四区| 国产韩国日本精品视频| 午夜精品黄片在线播放| 欧美一区二区三区喷汁尤物| 日韩在线中文字幕不卡| 在线观看视频日韩成人| 国产黄色高清内射熟女视频| 成人午夜视频精品一区| 日韩一区二区三区久久| 日韩免费av一区二区三区| 中文字幕亚洲人妻在线视频| 91插插插外国一区二区婷婷| 好吊一区二区三区在线看| 色偷偷偷拍视频在线观看|