学习springboot第一天~
1. springboot是对spring的缺点进行改善和优化,它的约定大于配置,开箱即用,没有代码生成,也不需要xml文件配置,可以修改属性值来满足需求
2. springboot的入门程序
在idea中创建springboot的项目
(1) 默认有个DemoApplication类,是springboot的启动类
这个类必须要和其他代码的父级齐平,即它与所有类的父级是同一等级
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {//启动类
SpringApplication.run(DemoApplication.class, args);
} }
(2) 在resource目录下有application.properties,是springboot的配置文件
(3) test包下有DemoApplicationTests测试类,是springboot的单元测试
(4) pom.xml文件
3. springboot web应用
创建实体bean Car类
导入依赖,安装lombok插件
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
Car.java
@Data //set+get
@NoArgsConstructor //无参构造
@AllArgsConstructor //包含所有参数的有参构造
public class Car {
private Integer id;
private String name;
private Float price;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")//时间格式转化
private Date createDate;
}
CarController.java
@RequestParam:获取查询参数
@PathVariable:获取路径参数
@RestController //@RestController:相当于@Controller+@ResponseBody
@RequestMapping("/car")
public class CarController {
@RequestMapping("/findCar")
public Car findCar(){
Car car = new Car(1, "宝马", 123.0F, new Date()); return car;
} @RequestMapping("/getCar/{id}")
public Car findOne(@PathVariable("id")Integer id, @RequestParam("name")String name,@RequestParam("price")Float price){
Car car = new Car();
car.setId(id); car.setName(name);
car.setPrice(price);
return car;
}
}
获取springboot静态资源
(1) 默认静态资源映射
springboot默认将/**所有访问映射到classpath:/static,classpath:/public,classpath:/WETA-INF/resources
即在resources目录下新建public,static,META-INF/resources,分别放入静态资源文件,可以直接通过访问资源名称,即可访问
Spring Boot 默认会挨个从 public、META-INF/resources、static 里面找是否存在相应的资源,如果有则直接返回
(2) 自定义静态资源访问
第一种方式:可以创建一个配置类
@Configuration //将一个java类作为一个配置类
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//将所有d:\\Desktop\\访问都映射到/pathFile/**路径下
registry.addResourceHandler("/pathFile/**").addResourceLocations("file:d:\\Desktop\\");
}
}
在浏览器输入:localhost:8080/pathFile/1.jpg即可访问该图片资源
第二种方式:修改配置文件application.properties
编写配置文件中的代码时,一定要细心,我同学就是因为在spring.mvc.static-path-pattern=/**后多写了一个空格,导致一直访问出错,所以在配置时,一定要仔细检查
# 自定义的属性,指定一个路径
web.upload-path=d:/Desktop/
#表示所有的访问都经过静态资源路径
spring.mvc.static-path-pattern=/**
# 配置静态资源路径,这里的配置会覆盖默认访问配置(public、static、resources路径访问将会失效),所以需要配置
spring.resources.static-locations=classpath:/static/,classpath:/public/,classpath:/META-INF/resources/,file:${web.upload-path}
在浏览器输入:localhost:8080/1.jpg即可访问
WebJars
将所有前端的静态文件打包成一个jar包,然后引入此jar包,可以很好的对前端静态资源进行管理
当时在打包时,因为直接把整个项目打成jar包,在本项目中引入后访问,一直报404。项目不能引入自己的jar包?我也不清楚什么原因,反正就是一直报错,就很烦~。
解决:1.一定要新建一个项目,在新项目中引入jar包的依赖,
2. 要保证新项目中没有该jar包中的静态资源文件
3.springboot属性配置
修改springboot自动生成的application.properties配置文件的后缀名为yml(yml干嘛的我也不清楚,反正就是要修改成yml,可能更好用?),可以修改默认配置
springboot开发web应用的时候,默认tomcat启动端口号为8080,可以在配置文件中修改访问的端口号:
server:
port: 8888
注意:port前一定要留有空格,port:后也要留有空格(不留,在idea中port单词会不变色,不能使用)
也可以修改访问路径:
server:
port: 8888
servlet:
context-path: /java0708
此时可以访问:http://localhost:8888/java0708
书写是有顺序的,也有约束,要根据约束写,不然不起作用
也可以自定义属性和读取
在application.yml中定义常量:
offcn_ip: 12.134
编写Controller类,读取自定义的属性:
@RestController
public class TestConController {
@Value("${offcn_ip}")
private String offcn_ip; @GetMapping("/getValue")
public String getIP(){
return "ip:"+offcn_ip;
}
}
实体类属性赋值
在application.yml中配置:
userbody:
name: offcn
password: 123456
birthday: 1992.10.28
mobile: 13802789765
address: beijing
不能再配置文件中写中文,会出现乱码,需要通过转码工具,才能输出中文(很麻烦,所以我写的是英文)
创建实体类
@ConfigurationProperties(prefix = "userbody")
public class UserBody {
private String name;
private String password;
private String birthday;
private String mobile;
private String address;
}
编写Controller调用属性bean
@RestController
@EnableConfigurationProperties({UserBody.class})
public class HelloControllerBean {
@Autowired
UserBody userbody; @GetMapping("/getUser")
public String getUser(){
return userbody.toString();
}
}
springboot构建RESTful
RESTful是一种软件架构风格!
RESTful架构风格规定,数据的元操作,即CRUD(create, read, update和delete,即数据的增删查改)操作,分别对应于HTTP方法:GET用来获取资源,
POST用来新建资源(也可以用于更新资源),
PUT用来更新资源,
DELETE用来删除资源,
这样就统一了数据操作的接口,仅通过HTTP方法,就可以完成对数据的所有增删查改工作
|
HTTP协议请求方法 |
SpringBoot注解 |
URL |
功能说明 |
|
POST |
@PostMapping |
/users |
创建一个用户 |
|
GET |
@GetMapping |
/users |
查询用户列表 |
|
GET |
@GetMapping |
/users/id |
根据id查询一个用户 |
|
PUT |
@PutMapping |
/users/id |
根据id更新一个用户 |
|
DELETE |
@DeleteMapping |
/users/id |
根据id删除一个用户 |
@RestController
@RequestMapping("/user-test")
public class UserController {
private List<User> userList = Collections.synchronizedList(new ArrayList<User>()); //获取全部用户信息
@GetMapping("/")
public List<User> getUserList(){
return userList;
} //添加用户信息
@PostMapping("/")
public String createUser(User user){
userList.add(user);
return "success";
} //获取指定用户id信息
@GetMapping("/{id}")
public User getUser(@PathVariable("id") Long id){
for (User user : userList) {
if (user.getId() == id){
return user;
}
}
return null;
} //修改指定用户id信息
@PutMapping("/{id}")
public String updateUser(@PathVariable("id")Long id,User user){
for (User user1 : userList) {
if (user1.getId() == id){
user1.setName(user.getName());
user1.setAge(user.getAge());
}
}
return "success";
} //删除指定用户id信息
@DeleteMapping("/{id}")
public String deleteUser(@PathVariable("id")Long id){
userList.remove(getUser(id));
return "success";
}
}
今天知识有点多,有点杂,很多代码都没有贴出来了,我还是比较懒,就总结了一些重要的知识点,应该不太全面,之后有时间会继续完善的
作为初学者的我,这东西不是太好用,可能用spring习惯了,不过大多的知识还是比较基础的,今天学习比较轻松,明天继续努力啦
学习springboot第一天~的更多相关文章
- SpringBoot第一集:入门(2020最新最易懂)
2020最新SpringBoot第一集:入门(2020最新最易懂) 学习思路: 是什么?为什么要学,有什么用?有什么特点?简单明了的总结一句话! SpringBoot推荐开发工具: Spring To ...
- RabbitMQ学习总结 第一篇:理论篇
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- 学习KnockOut第一篇之Hello World
学习KnockOut第一篇之Hello World 笔者刚开始学习KnockOut.写的内容就相当于一个学习笔记.且在此处向官网致敬,比较喜欢他们家的Live Example版块,里面有jsFiddl ...
- ActionBarSherlock学习笔记 第一篇——部署
ActionBarSherlock学习笔记 第一篇--部署 ActionBarSherlock是JakeWharton编写的一个开源框架,使用这个框架,可以实现在所有的Android ...
- Java学习记录第一章
学习Java第一章的记录,这一章主要记录的是Java的最基础部分的了解知识,了解Java的特性和开发环境还有Java语言的优缺点. 计算机语言的发展大概过程:机器语言--->汇编语言---> ...
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- javascript的ES6学习总结(第一部分)
ES6(ESNext学习总结——第一部分) ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版. ECMA每年6月份,发布一个版本 201 ...
- Web基础学习---HTML 第一天
Web基础学习---HTML 第一天 1 HTML标签 2.CSS Web开发基础HTML好吧离开Python几天...如何学好前端?? 多去看别人的网站.多看.多写.多练,(知乎.36Kr.)多练就 ...
- QT学习之第一个程序
QT学习之第一个程序 目录 手动创建主窗口 居中显示 添加窗口图标 显示提示文本 Message Box的应用 手动连接信号与槽 手动创建主窗口 窗口类型 QMainWindow: 可以包含菜单栏.工 ...
随机推荐
- flutter 下拉加载+下拉加载
功能: 1.下拉加载 2.上拉加载 3.显示加载图标 4.更新列表数据,隐藏加载图标 flutter库: flutter_spinkit: ^3.1.0 加载图标 其他:加载列表需要列表,基于上一节的 ...
- 【React Native】在原生和React Native间通信(RN调用原生)
一.从React Native中调用原生方法(原生模块) 原生模块是JS中也可以使用的Objective-C类.一般来说这样的每一个模块的实例都是在每一次通过JS bridge通信时创建的.他们可以导 ...
- 如何在在手机上安装linux(ubuntu )关键词:Termux
目录 Termux软件 @(如何在在手机上安装ubuntu 关键词:Termux) Termux软件 Termux是一款开源且不需要root,运行在Android终端上极其强大的linux模拟器. 首 ...
- 自己用到的解决Python3.6.5+Django2.0集成xadmin后台点击添加或者内容详情报 list index out of range 的错误的办法如下:
Python3.6.5 Django2.0 这是Django版本与xadmin兼容的问题 解决办法如下: 注释掉如下代码: def render(self, name, value, attrs=No ...
- go语言设计模式之state
state.go package main import ( "fmt" "math/rand" "os" "time" ...
- 设计模式-Template(行为模式) 采用 继承的方式 将算法封装在抽象基类中,在子类中实现细节。利用面向对象中的多态实现算法实现细节和高层接口的松耦合。
以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //Template.h class AbstractClass { public: virtual ~AbstractCla ...
- Windows10 下利用Hyper-V安装CentOS系统
开启Windows10的Hyper-v功能(需要重启电脑) 控制面板→程序→启用或关闭Windows功能→打开Hyper-v→确定 创建虚拟机 在Windows管理工具中找到Hyper-v管理器并双击 ...
- linux,xshell命令
一. linux 1.Linux发行版 <1> 常见的发行版本如下: Ubuntu Redhat Fedora openSUSE Linux Mint Debian Manjaro M ...
- Codeforces Round 596 题解
万幸的是终于碰上了一场上分好场. 不幸的是一开始差点不会 A. 万幸的是想了个不那么稳的结论过了 pretest. 不幸的是罚时很高,而且慌得一比. 万幸的是然后半个小时内把 B 和 C 码了. 不幸 ...
- nui-app 笔记
https://uniapp.dcloud.io