pom.xml 華為雲鏡像: -基本web開發 2.安裝Lombok插件:plugins >lombok 3.實體類中 4.Controller: 請求參數兩種類型: @RequestParam 獲取查詢參數。即url?name=value 這種形式 @PathVariable 獲取路徑參數。即ur ...
pom.xml
1 <parent> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-parent</artifactId> 4 <version>2.2.0.RELEASE</version> 5 <relativePath/> <!-- lookup parent from repository --> 6 </parent>
maven依賴:
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-web</artifactId> 4 </dependency> 5 6 <dependency> 7 <groupId>org.springframework.boot</groupId> 8 <artifactId>spring-boot-starter-test</artifactId> 9 <scope>test</scope> 10 <exclusions> 11 <exclusion> 12 <groupId>org.junit.vintage</groupId> 13 <artifactId>junit-vintage-engine</artifactId> 14 </exclusion> 15 </exclusions> 16 </dependency>
華為雲鏡像:
1 <mirror> 2 <id>huaweicloud</id> 3 <mirrorOf>*</mirrorOf> 4 <url>https://mirrors.huaweicloud.com/repository/maven/</url> 5 </mirror>
-基本web開發
1、導入依賴庫
lombok的使用:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
2.安裝Lombok插件:plugins---->lombok
3.實體類中
@Data //get set tostring @AllArgsConstructor //所有參數構造方法 @NoArgsConstructor //空參構造方法 public class Car { private Integer id; private String name; private Float price; // @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 傳入參數 @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") 傳出參數 private Date createDate; }
4.Controller:
請求參數兩種類型:
@RequestParam 獲取查詢參數。即url?name=value 這種形式
@PathVariable 獲取路徑參數。即url/{id} 這種形式
@RestController //相當於@Controller+@ResponseBody 類中所有方法都返回json數據 @RequestMapping("/car") public class CarController { @RequestMapping("/demo") public String demo(){ return "demo.html"; }
-靜態資源訪問
(1)、預設靜態資源映射
Spring Boot 對靜態資源映射提供了預設配置
Spring Boot 預設將 /** 所有訪問映射到以下目錄:
classpath:/static
classpath:/public
classpath:/resources
classpath:/META-INF/resources
(2)、自定義靜態資源訪問
將靜態資源路徑設置到磁碟的基本個目錄,上傳文件時上傳到磁碟中
方式1.使用配置類實現WebMvcConfigurer介面,重寫addResourceHandlers(ResourceHandlerRegistry registry)
1 @Configurable 2 public class WebMvcConfig implements WebMvcConfigurer{ 3 @Override 4 public void addResourceHandlers(ResourceHandlerRegistry registry) { 5 //配置映射關係 6 //訪問/images,則映射到d:\a\下 7 registry.addResourceHandler("/images/**").addResourceLocations("file:D:\\a\\"); 8 11 } 12 }
在瀏覽器輸入:http://localhost:8080/images/1.jpg即可訪問。
方式2.配置application.properties
1 web.upload-path=D:/springboot/pic/ 2 spring.mvc.static-path-pattern=/** 3 spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,\ 4 classpath:/static/,classpath:/public/,file:${web.upload-path}
web.upload-path:這個屬於自定義的屬性,指定了一個路徑,註意要以/結尾;
spring.mvc.static-path-pattern=/**:表示所有的訪問都經過靜態資源路徑;
spring.resources.static-locations:在這裡配置靜態資源路徑,前面說了這裡的配置是覆蓋預設配置,
所以需要將預設的也加上否則static、public等這些路徑將不能被當作靜態資源路徑,
在這個最末尾的file:${web.upload-path}之所有要加file:是因為指定的是一個具體的硬碟路徑,其他的使用classpath指的是系統環境變數。
--WebJars
推薦使用Webjars的三大理由:
- 將靜態資源版本化,更利於升級和維護。
- 剝離靜態資源,提高編譯速度和打包效率。
- 實現資源共用,有利於統一前端開發。
使用步驟:
1.引入依賴:
1 <dependency><!--Webjars版本定位工具(前端)--> 2 <groupId>org.webjars</groupId> 3 <artifactId>webjars-locator-core</artifactId> 4 </dependency> 5 6 <dependency><!--Jquery組件(前端)--> 7 <groupId>org.webjars</groupId> 8 <artifactId>jquery</artifactId> 9 <version>3.3.1</version> 10 </dependency>
2.訪問靜態資源
快速訪問:http://localhost:8080/webjars/jquery/jquery.js (推薦)除去版本路徑也可以訪問得到
快速訪問:http://localhost:8080/webjars/jquery/3.3.1/jquery.js
--SpringBoot屬性配置
1.預設屬性配置文件application.properties(可以修改尾碼為.yml)
application.yml
server: port: 8888 servlet: context-path: /javaok
訪問http://localhost:8888/javaok即可
2.自定義屬性及讀取
在application.yml文件中,配置一些常量或者其他參數配置。讀取的時候通過Spring的@Value(“${屬性名}”)註解即可
application.yml server: port: 8888 servlet: context-path: /javaok server_ip: 192.168.10.9999999999
@RestController public class HelloController { @Value("${server_ip}") //獲取到自定義參數值server_ip private String server_ip; @GetMapping("/getMapping") public String getMapping(){ return server_ip; } }
3.實體類屬性賦值
當屬性參數變多的時候,我們習慣創建一個實體,用實體來統一接收賦值這些屬性。
application.yml user: name: www password: 8888888 birthday: 1992.10.28 mobile: 1234567890 address: beijing
實體類:在實體類上增加註解@ConfigurationProperties,並指定prrfix首碼
@ConfigurationProperties(prefix = "user") @Data @NoArgsConstructor @AllArgsConstructor public class User { private String name; private String password; private String birthday; private String mobile; private String address; }
Controller層:
EnableConfigurationProperties註解需要加在調用類上,或者加在啟動類SpringbootSimpleApplication上也可以。
@RestController @EnableConfigurationProperties({User.class,TestUser.class}) //多個實體類載入 public class UserController { @Autowired
User user;
@Autowired
TestUser testUser;
@GetMapping("/testUser")
public String test(){
return testUser.toString();
}
@GetMapping("/getUser")
public String getUser(){
return user.toString();
}
4.自定義配置文件
創建文件test.properties
testuser.name = "mike" testuser.password = "123" testuser.birthday = "1978.10.28"
實體類:
pring boot 1.5版本後@PropertySource註解就不能載入自定義的yml配置文件了
1.5版本後需要通過@PropertySource(“classpath:test.properties”)指定配置文件
@Configuration 註解包含@Component註解
@Configuration @PropertySource("classpath:test.properties") @ConfigurationProperties(prefix = "testuser") @Data @NoArgsConstructor @AllArgsConstructor public class TestUser { private String name; private String password; private String birthday; }
5.多環境配置文件
可以使用多個yml來配置屬性,將於環境無關的屬性放置到application.yml文件裡面;通過與配置文件相同的命名規範,創建application-{profile}.yml文件 存放不同環境特有的配置,例如 application-test.yml 存放測試環境特有的配置屬性,application-prod.yml 存放生產環境特有的配置屬性。
通過這種形式來配置多個環境的屬性文件,在application.yml文件裡面spring.profiles.active=xxx來指定載入不同環境的配置,如果不指定,則預設只使用application.yml屬性文件,不會載入其他的profiles的配置。
application.yml
spring:
profiles:
active: prod //將調用application-prod.yml
application-test.yml server: port: 8081 servlet: context-path: /javaok1
application-prod.yml server: port: 8082 servlet: context-path: /javaok2
application-dev.yml server: port: 8083 servlet: context-path: /javaok3
--SpringBoot構建RESTful API
1 Controller層:
2 private List<User> listUser= Collections.synchronizedList(new ArrayList<User>()); 3 4 //查詢所有 5 @GetMapping("/") 6 public List<User> getAllUser(){ 7 return listUser; 8 } 9 //獲取指定id的user 10 @GetMapping("/{id}") 11 public User getUser(@PathVariable("id") Long id){ 12 for(User u:listUser){ 13 if(u.getId()==id){ 14 return user; 15 } 16 } 17 return null; 18 } 19 //插入 20 @PostMapping("/") 21 public String insert(User user){ 22 listUser.add(user); 23 return "success"; 24 } 25 //根據id修改 26 @PutMapping("/{id}") 27 public String update(@PathVariable("id") Long id,User user){ 28 for (User user2 : listUser) { 29 if(user2.getId()==id) { 30 user2.setName(user.getName()); 31 user2.setAge(user.getAge()); 32 } 33 } 34 return "success"; 35 } 36 //根據id刪除 37 @DeleteMapping("/{id}") 38 public String delete(@PathVariable("id") Long id){ 39 listUser.remove(getUser(id)); 40 return "success"; 41 }