spring boot后臺(tái)接口與MongoDB實(shí)現(xiàn)插入和獲取leetcode試題

很少寫后臺(tái)接口胜嗓,近來spring boot比較火,而吸引我的一大特性是spring boot的部署非常方便:通過application.properties進(jìn)行配置钩乍,使用mvn package生成嵌套了tomcat容器的jar包,再放到任意一臺(tái)安裝了java環(huán)境的服務(wù)器怔锌,以java -jar xxx.jar啟動(dòng)寥粹。非常小巧变过、靈活,與近幾年業(yè)界常提到微服務(wù)(包括docker)結(jié)合的很好涝涤。
故此媚狰,以快速學(xué)習(xí)的目的,搭建了spring boot后臺(tái)簡(jiǎn)單接口阔拳,并通過MongoDB存取數(shù)據(jù)崭孤。
該Demo基于MongoDB 3.0.6,IDEA2016.2版本(基于Marven構(gòu)建spring boot項(xiàng)目),thymeleaf(基于html,spring boot提供的模板之一)構(gòu)建,實(shí)現(xiàn)功能很簡(jiǎn)單糊肠,

下面理清主要點(diǎn)

一货裹、spring boot配置

網(wǎng)上很多都沒有給出application.properties的位置和創(chuàng)建方式嗤形,右擊Resources目錄new->file即可,文件名就是application.properties.這么重要的文件有必要說明一下弧圆,因?yàn)榇蠖鄶?shù)配置都是在這里面進(jìn)行赋兵。


application.properties位置所在

我因?yàn)橹慌渲昧硕丝凇ongodb和thymeleaf搔预,故配置如下霹期。
<pre><code>

  • server.port=8000
  • debug=true
  • spring.http.encoding.charset=UTF-8
  • #mongodb配置

  • spring.data.mongodb.port=27017
  • spring.data.mongodb.host=XX.XX.XX.XX
  • spring.data.mongodb.repositories.enabled=true
  • spring.data.mongodb.database=LeetCode

########################################################

THYMELEAF (ThymeleafAutoConfiguration)

########################################################

  • spring.thymeleaf.prefix=classpath:/templates/
  • spring.thymeleaf.suffix=.html
  • spring.thymeleaf.content-type=text/html
  • spring.thymeleaf.cache=false

</code></pre>
還可配置mysql、redis等眾多服務(wù)拯田。

除了application.properties要配置历造,pom的依賴也要配置。
下面的配置包含了spring boot勿锅、mongodb帕膜、thymeleaf這三種配置,引入后選擇auto-import系統(tǒng)自動(dòng)導(dǎo)入相應(yīng)的依賴文件溢十。
<pre><code>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.0.4</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <version>1.7.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
        <version>1.10.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
        <version>1.4.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
</dependencies>

</code></pre>

二垮刹、mongodb操作

使用MongoRepository,存入對(duì)象张弛。

}```
另外需要題目model類荒典,定義變量和get/set方法,不再贅述吞鸭。

在主Controller中寺董,初始化操作mongodb的對(duì)象。
@Autowired
private DemoInfoRepository demoInfoRepository;
一開始給頁面展現(xiàn)什么數(shù)據(jù)?返回leetcode.html刻剥。
@RequestMapping(value="/leetcode", method= RequestMethod.GET)
public String sayHelloForm(Model model) {
    model.addAttribute("helloMessage", new Demo());
    return "leetcode";
}
運(yùn)行類中執(zhí)行以下操作存入對(duì)象數(shù)據(jù)遮咖,將頁面提交數(shù)據(jù)字段一一綁定,存入數(shù)據(jù)庫造虏。
    ```@RequestMapping(value="/leetcode",method=RequestMethod.POST)
    public String submit(
            @RequestParam("name") String inputtext,
            @RequestParam("id") long result,
            @RequestParam("tag") String tag,
            @RequestParam("acceptance") String acceptance,
            @RequestParam("solution") String solution,
            @RequestParam("content") String content,
            @RequestParam("difficulty") String difficulty){
        Demo demoInfo = new Demo();
        demoInfo.setName(inputtext);
        demoInfo.setId(result);
        demoInfo.setTag(tag);
        demoInfo.setAcceptance(acceptance);
        demoInfo.setSolution(solution);
        demoInfo.setDifficulty(difficulty);
        demoInfo.setContent(content);
        demoInfoRepository.save(demoInfo);
        return "message";}

//執(zhí)行完上述操作后御吞,返回message.html.

查詢

@RequestMapping("/find")
public List<Demo> find(){
    return demoInfoRepository.findAll();//直接調(diào)用findAll()方法麦箍。
}

三、thymeleaf前臺(tái)頁面與后臺(tái)數(shù)據(jù)綁定

    <p>題目名稱: <input type="text" th:field="*{name}" />題目序號(hào): <input type="text" th:field="*{id}"/></p>
    <p>題目通過率: <input type="text" th:field="*{acceptance}" />難度: <input type="text" th:field="*{difficulty}" /></p>
    <p>分類: <input type="text" th:field="*{tag}" /></p>
    <p>題目?jī)?nèi)容: <input type="text" th:field="*{content}" th:width="200" th:height="300"/></p>
    <p>解決方案: <input type="text" th:field="*{solution}" /></p>
    <p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>

參考文章
spring boot可以作為app后端接口嗎
Spring Boot實(shí)戰(zhàn)之Rest接口開發(fā)及數(shù)據(jù)庫基本操作
SpringBoot 之 簡(jiǎn)單的接口
spring boot 連接mongodb
MongoProperties mongodb3.0以后安全配置
84. Spring Boot集成MongoDB【從零開始學(xué)Spring Boot】
spring-boot--使用thymeleaf模板
使用Spring Boot開發(fā)Web項(xiàng)目
深入學(xué)習(xí)spring-boot系列(三)--使用thymeleaf模板
https://github.com/Terry-Shi/blog/wiki/Spring-Boot-thymeleaf

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末陶珠,一起剝皮案震驚了整個(gè)濱河市挟裂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌揍诽,老刑警劉巖诀蓉,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異暑脆,居然都是意外死亡渠啤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門饵筑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來埃篓,“玉大人,你說我怎么就攤上這事根资〖茏ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵玄帕,是天一觀的道長(zhǎng)部脚。 經(jīng)常有香客問我,道長(zhǎng)裤纹,這世上最難降的妖魔是什么委刘? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮鹰椒,結(jié)果婚禮上锡移,老公的妹妹穿的比我還像新娘。我一直安慰自己漆际,他們只是感情好淆珊,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奸汇,像睡著了一般施符。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上擂找,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天戳吝,我揣著相機(jī)與錄音,去河邊找鬼贯涎。 笑死听哭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播欢唾,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼且警,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼粉捻!你這毒婦竟也來了礁遣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后钓试,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體号显,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年呐伞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡崭添,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叛氨,到底是詐尸還是另有隱情呼渣,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布寞埠,位于F島的核電站屁置,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏仁连。R本人自食惡果不足惜蓝角,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饭冬。 院中可真熱鬧使鹅,春花似錦、人聲如沸昌抠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扰魂。三九已至麦乞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間劝评,已是汗流浹背姐直。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蒋畜,地道東北人声畏。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親插龄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子愿棋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容