Spring Boot2.0之web開發

一、關於靜態資源的訪問css

在咱們開發Web應用的時候,須要引用大量的js、css、圖片等靜態資源。html

Spring Boot默認提供靜態資源目錄位置需置於classpath下,目錄名需符合以下規則:java

/staticweb

/publicspring

/resources        apache

/META-INF/resourcesjson

好比:咱們能夠在src/main/resources/目錄下建立static,在該位置放置一個圖片文件。啓動程序後,訪問http://localhost:8080/xx.jpg。springboot

二、渲染web頁面app

在以前的示例中,咱們都是經過@RestController來處理請求,因此返回的內容爲json對象。那麼若是須要渲染html頁面的時候,要如何實現呢?jsp

咱們能夠用模板引擎

在動態HTML實現上Spring Boot依然能夠完美勝任,而且提供了多種模板引擎的默認配置支持,因此在推薦的模板引擎下,咱們能夠很快的上手開發動態網站。

Spring Boot提供了默認配置的模板引擎主要有如下幾種:

  • Thymeleaf
  • FreeMarker
  • Velocity
  • Groovy
  • Mustache

Spring Boot建議使用這些模板引擎,避免使用JSP,若必定要使用JSP將沒法實現Spring Boot的多種特性,具體可見後文:支持JSP的配置

當你使用上述模板引擎中的任何一個,它們默認的模板配置路徑爲:src/main/resources/templates。固然也能夠修改這個路徑,具體如何修改,可在後續各模板引擎的配置屬性中查詢並修改。

 

 下面介紹下 使用FreeMarker模板應請渲染web視圖

  首先建立maven工程,pom文件以下:

<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>springboot-frameworker</groupId>
  <artifactId>com.toov5.frameworker</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
         <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-freemarker</artifactId>
   </dependency>
        
    </dependencies> 
  
  
</project>

 

Java類

package com.toov5.frameworker;



import java.util.Map;

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


@Controller
public class index {
    @RequestMapping("/index")
	public String show(Map<String, Object> map){
	    map.put("name", "toov5");
	    map.put("age","20");
	    map.put("sex","0");
		return "index";
	}
	
	
	
}

啓動類:

package com.toov5.frameworker;

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

@SpringBootApplication
public class app {

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

而後建立freemarker文件

目錄結構以下:

其中freemarker的名字後綴和路徑默認最好這樣哈,內容以下所示:

hello frameworker,

${name}*****${age}

 啓動項目,而且訪問: 

  

成功之,是否是很好玩呀~~關於freemaker的語法你們本身找個博客或者相應的教程看看吧,很簡單。重在實踐喲

 

 

PS:有小夥伴問 註解@RestController和@Controller區別

1) 若是隻是使用@RestController註解Controller,則Controller中的方法沒法返回jsp頁面,或者html,配置的視圖解析器 InternalResourceViewResolver不起做用,返回的內容就是Return 裏的內容。

2) 若是須要返回到指定頁面,則須要用 @Controller配合視圖解析器InternalResourceViewResolver才行。
    若是須要返回JSON,XML或自定義mediaType內容到頁面,則須要在對應的方法上加上@ResponseBody註解。

1.使用@Controller 註解,在對應的方法上,視圖解析器能夠解析return 的jsp,html頁面,而且跳轉到相應頁面

若返回json等內容到頁面,則須要加@ResponseBody註解

2.@RestController註解,至關於@Controller+@ResponseBody兩個註解的結合,返回json數據不須要在方法前面加@ResponseBody註解了,但使用@RestController這個註解,就不能返回jsp,html頁面,視圖解析器沒法解析jsp,html頁面

so,你能夠試試,把咱們這個小項目中的 註解替換下 ,你看看頁面返回的啥子,本身體會下哈

 

順便說起一下:

 

classPath是與編譯後的字節碼有關的目錄

相關文章
相關標籤/搜索