上一章
SpringBoot自学第3天——lombok插件以及yml的基本语法
前言
这一次学习了各个放置静态资源的映射目录的优先级以及其他一些小配置。
一、可以放置静态资源的目录
// resources资源包下 没有的需要自己创建
1. META-INF/resources/
2. resources/
3. static/ --- 已存在
4. public/
1. 如果资源放在这几个目录下,那么可以通过链接地址直接访问到
比如:
2. 在这几个目录下直接放一个名为index.html主页,则SpringBoot会在用户访问链接根地址时自动解析展示
例如下面放入了一个静态网页index.html,没有任何其他配置:
运行结果:
静态网页是网上搜索的模板,待会项目链接放在最底下。
3. 利用SpringBoot自动配置网页的Logo
只要找一个图标文件放在静态资源文件夹下(任意一个),并且将其命名为favicon.icon,最后重启项目即可,所有网页都会自动使用到这个图标。
这里提供一个简单的图标查找方法。如果安装了QQ,可以在文件夹中访问
%APPDATA%\Tencent\QQ\Misc\Shortcuts\
然后在QQ中随意拖一个头像到桌面上,那么这个icon图标就生成了。改名为favicon拖入SpringBoot项目中放静态资源的文件夹里就可以用了。
二、Rest风格写Controller处理
所谓rest风格,就是假如我们有一个数据库user,并且要对其进行增删改查的请求。
那我们需要映射四个不同的网页地址来做处理,如:/addUser /deleteUser /findUser /changeUser等
而Rest是用射到同一个地址,但是用请求的method做区分。
如:
1. 写一个html文件放在static中,命名为user.html,用这个网页来请求增删改查
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>user-op</title>
</head>
<body>
<form action="/user" method="get">
<input type="submit" value="get">
</form>
<form action="/user" method="post">
<input type="submit" value="post">
</form>
<form action="/user" method="post">
<input type="hidden" name="_method" value="put">
<input type="submit" value="put">
</form>
<form action="/user" method="post">
<input type="hidden" name="_method" value="delete">
<input type="submit" value="delete">
</form>
</body>
</html>
2. 添加一个Controller,写上增删改查象征性的四个处理函数
//DataController.java
package com.mrzs.controller;
import org.springframework.web.bind.annotation.*;
/**
* @author Supreme
*/
@RestController
public class DataController {
@GetMapping("/user")
public String getUser(){
return "get user";
}
@PostMapping("/user")
public String postUser(){
return "post user";
}
@PutMapping("/user")
public String putUser(){
return "put user";
}
@DeleteMapping("/user")
public String deleteUser(){
return "delete user";
}
}
3. 启动SpringBoot自动分析put与delete请求的配置,在application.properties中添加一行配置
//application.properties
spring.mvc.hiddenmethod.filter.enabled=true
启动项目
由于html只有post和get两种请求方式,没有put和delete请求,所以需要请求地址带上源码默认的_method=put 或 _method=delete
以post方式向后台发送请求,以此来告诉后台这是put请求或delete请求,而不是post请求。
如果想发送put请求来增加一条数据,而没有下面这一行,我们会看到,该次请求被后台controller中的post映射处理了,而不是put映射处理的。
<input type="hidden" name="_method" value="put">
但是加上后,程序就可以正常按照我们想要的逻辑,去给put映射的处理函数中处理,并返回put user
4. 通过自定义相关拦截器Bean的装配,来修改"_method"为自己喜欢的key值
//MyConfig.java
@Configuration
public class MyConfig {
@Bean
public HiddenHttpMethodFilter hiddenHttpMethodFilter(){
HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter();
hiddenHttpMethodFilter.setMethodParam("_m");
return hiddenHttpMethodFilter;
}
}
这样同样可以正常访问put映射页和delete映射页。
总结
1. banner.txt的配置(没什么用,省略了)
2. 静态资源放置映射目录
3. index.html自动解析,无需任何代码配置,放在静态资源文件夹即可
4. favicon.ico图标,无需任何代码配置,放在静态资源文件夹即可
5. Rest风格请求,需要在put与delete请求的表单中增加隐藏参数
<input type="hidden" name="_method" value="put"> //value值“put”大小写不敏感
6. key值"_method"可以通过Config中的Bean配置来修改
本期我们获得了一个主页,还做了一个处理请求的Controller映射,这是web的入门初探,接下来将完全进入到web前端网页和后台请求响应的编写中。
gitee项目链接: SpringBoot自学第4天——静态资源放置