spring boot后臺接口與MongoDB實現插入和獲取leetcode試題

很少寫后臺接口,近來spring boot比較火,而吸引我的一大特性是spring boot的部署非常方便:通過application.properties進行配置,使用mvn package生成嵌套了tomcat容器的jar包,再放到任意一臺安裝了java環境的服務器,以java -jar xxx.jar啟動。非常小巧、靈活,與近幾年業界常提到微服務(包括docker)結合的很好。
故此,以快速學習的目的,搭建了spring boot后臺簡單接口,并通過MongoDB存取數據。
該Demo基于MongoDB 3.0.6,IDEA2016.2版本(基于Marven構建spring boot項目),thymeleaf(基于html,spring boot提供的模板之一)構建,實現功能很簡單,

下面理清主要點

一、spring boot配置

網上很多都沒有給出application.properties的位置和創建方式,右擊Resources目錄new->file即可,文件名就是application.properties.這么重要的文件有必要說明一下,因為大多數配置都是在這里面進行。


application.properties位置所在

我因為只配置了端口、mongodb和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等眾多服務。

除了application.properties要配置,pom的依賴也要配置。
下面的配置包含了spring boot、mongodb、thymeleaf這三種配置,引入后選擇auto-import系統自動導入相應的依賴文件。
<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,存入對象。

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

在主Controller中,初始化操作mongodb的對象。
@Autowired
private DemoInfoRepository demoInfoRepository;
一開始給頁面展現什么數據?返回leetcode.html。
@RequestMapping(value="/leetcode", method= RequestMethod.GET)
public String sayHelloForm(Model model) {
    model.addAttribute("helloMessage", new Demo());
    return "leetcode";
}
運行類中執行以下操作存入對象數據,將頁面提交數據字段一一綁定,存入數據庫。
    ```@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";}

//執行完上述操作后,返回message.html.

查詢

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

三、thymeleaf前臺頁面與后臺數據綁定

    <p>題目名稱: <input type="text" th:field="*{name}" />題目序號: <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>題目內容: <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實戰之Rest接口開發及數據庫基本操作
SpringBoot 之 簡單的接口
spring boot 連接mongodb
MongoProperties mongodb3.0以后安全配置
84. Spring Boot集成MongoDB【從零開始學Spring Boot】
spring-boot--使用thymeleaf模板
使用Spring Boot開發Web項目
深入學習spring-boot系列(三)--使用thymeleaf模板
https://github.com/Terry-Shi/blog/wiki/Spring-Boot-thymeleaf

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容