Spring Boot - 整合Jsp/FreeMarker

Spring Boot - 初識 Hello World

索引

  1. Spring Boot - 初識 Hello World
  2. Spring Boot - Servlet、過濾器、監聽器、攔截器
  3. Spring Boot - 靜態資源處理、啓動加載、日誌處理
  4. Spring Boot - 數據庫配置
  5. Spring Boot - 部署Deploy

準備

  1. Jdk8
  2. Ide intelliJ IDEA 或者 eclipse
  3. Maven 3

返回Json格式數據

修改pom依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wanye</groupId>
    <artifactId>com.wanye.springboot</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
    </parent>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>


    </dependencies>

</project>

建立啓動類

package com.wanye;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Created by wanye on 2017/5/20.
 */
@SpringBootApplication
public class Start {

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

建立Controller

package com.wanye.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by wanye on 2017/5/20.
 */
@RestController // @Controller + @ResponseBody
public class HelloController {

    @RequestMapping("/hello")
    public Map<String, String> hello(){
        Map<String, String> hello = new HashMap<String, String>();
        hello.put("data", "hello 小紅");
        hello.put("status", "SUCCESS");
        return hello;
    }
}

啓動方式

經過main()方法來啓動

驗證

訪問http://localhost:8080/hello 咱們能夠看到頁面返回了數據,而且自動轉換成JSON格式,接下來咱們講解剛剛用到的註解html

整合JSP/FreeMarker

在整合JSP/FreeMarker以前,咱們先了解一下spring boot對於controller的支持java

  1. 模版引擎:spring boot支持FreeMarker 、Groovy 、Thymeleaf (Spring 官⽹網使⽤用這個)、Velocity 、JSP
  2. 接收參數:@RequestBody、@RequestParam、@ModelAttribute、JSONObject、HttpEntity 等

經過JSP模板引擎渲染

修改pom依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wanye</groupId>
    <artifactId>com.wanye.springboot</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 整合jsp -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <!-- 整合jsp -->
    </dependencies>

</project>
添加JSP文件
  1. 增長⽬目錄「src/main/webapp/WEB-INF/jsp/」,將jsp⽂文件放⼊入這個⽬目錄中,示例home.jsp代碼(只用來驗證是否訪問到該文件)
<html>
<head>
    <title>jsp</title>
</head>
<body>
hello jsp
</body>
</html>
  1. 在⽬目錄「resources」中,增長application.properties配置⽂文件
# 頁面默認前綴目錄
spring.mvc.view.prefix=/WEB-INF/jsp/
# 響應頁面默認後綴
spring.mvc.view.suffix=.jsp
  1. 建立JSPController
package com.wanye.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Created by wanye on 2017/5/20.
 */
@Controller
public class JSPController {

    @RequestMapping("/jsp/home")
    public String home() {
        return "home";
    }
}
啓動方式
#必須⽤用sping-boot:run啓動
mvn clean spring-boot:run
驗證

訪問http://localhost:8080/jsp/home 頁面返回」hello jsp」,說明整合JSP成功,該請求可以訪問到home.jsp這個文件web

經過FreeMarker模板引擎渲染

修改pom文件

刪除剛剛jsp的pom配置,並修改spring boot 啓動依賴的jarspring

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wanye</groupId>
    <artifactId>com.wanye.springboot</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
    </dependencies>

</project>
添加.ftl模板文件
  1. 在resources下建立templates文件夾,將.ftl文件放⼊
  2. application.properties文件中無需配置(刪除jsp配置)
  3. home.ftl文件
<html>
<head>
    <title></title>
</head>
<body>
hello freemarker. ${time?string("yyyy-MM-dd hh:mm:ss")}
</body>
</html>
  1. 建立FreemarkerController
package com.wanye.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import java.util.Date;

/**
 * Created by wanye on 2017/5/20.
 */
@Controller
public class FreemarkerController {

    @RequestMapping("/ftl/home1")
    public String home1(Model model) {
        model.addAttribute("time", new Date(System.currentTimeMillis()));
        return "home";
    }

    @RequestMapping("/ftl/home2")
    public ModelAndView home2() {
        ModelAndView res = new ModelAndView("home");
        res.addObject("time", new Date(System.currentTimeMillis()));
        return res;
    }
}

這裏經過兩種方式,向頁面傳遞參數「time」。你們本身瞭解一下Model, ModelAndView的使用方法,我這裏就不進行詳細的講述了。數據庫

啓動方式
兩種方式均可以:主函數main()啓動或者spring-boot:run
驗證

訪問http://localhost:8080/ftl/home1 頁面,驗證是否輸出了當前時間。關於FreeMarker語法,你們本身瞭解一下,不是本文關注的重點apache

總結

本文講述了(json,jsp,freemarker)配置及整合方法,並針對web開發經常使用的註解的概念及功能進行了介紹,留下了一個疑問:爲何整合jsp後必須經過spring-boot:run方式啓動?歡迎你們留言討論。json

註解含義

  1. @SpringBootApplication 等價於 @Configuration + @ComponentScan + @EnableAutoConfigurationsegmentfault

    1. @Configuration (能夠理解爲spring的xml配置) +
    2. @ComponentScan (進行組件掃描,若是掃描到有@Component、@Controller、@Service等這些註解的類,並註冊爲Bean,能夠自動收集全部的Spring組件,包括@Configuration類) +
    3. @EnableAutoConfiguration (開啓自動配置,這個註解告訴Spring Boot根據添加的jar依賴猜想你想如何配置Spring,建議標記在啓動類上)
  2. @RestController 等價於 @Controller + @ResponseBody 返回json數據格式(springboot默認使用jackson組件進行轉換)
  3. @RequestMapping 提供路由信息,註冊訪問路徑

最後

若本文對你有幫助,望點贊。爲了提升你們學習效果,錄製了同步的視頻課程,還望你們支持視頻課程tomcat

圖片描述

相關文章
相關標籤/搜索