Spring Boot入门

本文介绍了JavaWeb开发中的MVC和MVVM框架,热部署的配置方法,Controller的使用,包括文件上传、拦截器、HTTP状态码和RESTful设计原则,以及Swagger工具的应用和开发快捷键。
摘要由CSDN通过智能技术生成

 一、两种框架

MVC框架

Model:存储、封装数据

View:视图,显示数据

Controller:协调控制

复杂业务的Controller非常庞大,难以维护。 

MVVM框架——增强版MVC

Model

View

Viewmodel :管理原属于Controller的数据和逻辑处理部分

二、 开发环境热部署

修改后自动重新编译、启动项目

1、在pom.xml中添加依赖spring-boot-devtools

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

2、在application.propeties中配置devtools

spring.devtools.restart.enable=true
spring.devtools.restart.additional-paths=src/main/java
spring.devtools.restart.exclude=static/**

3、修改设置

setting/Build,Execution,Deployment/Compile/Build project automatically

setting/Advances Setting/Compiler/Allow auto-make

 三、Controller 控制器

1. 服务器接收客户端请求

@RestController 只请求数据,返回文本数据,默认将返回数据转换为JSON格式

@Controller 请求页面和数据,返回页面,通常与Thymeleaf模板引擎结合使用

2. 控制器接收前端请求

路由映射

@RequestMapping(Get、Post、Delete、Put) 浏览器请求

Get:获取资源

Post:新增资源

Delete:删除资源

Put:更新全部资源

Patch:部分更新资源

路由匹配

* 任意字符

** 任意路径

? 单个字符

 3. 参数传递

//http://localhost:8080/hello?nickname=zhang&phone=123
//参数没传递就是null
@GetMapping("/hello")
public String hello(String nickname, String phone)//传入参数nickname

//http://localhost:8080/hello?nickname=zhang
//将nickname传给name,required=false表示传不传递都可以
@GetMapping("/hello")
public String hello(@RequestParam(value="nickname",required=false) String name)

四、文件上传

表单的enctype="multipart/form-data"

application.properties配置上传文件大小,允许用户通过浏览器查看上传文件。

spring.servlet.multipart.max-file-size=10MB
spring.web.resources.static-locations=/upload/
package com.example.demo.Controller;

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@RestController
public class FileController {
    //private static final String UPLOADED_FOLDER=System.getProperty("user.dir")+"/uploaded";

    @PostMapping("/upload")
    //HttpServletRequest前端网络请求的对象
    public String upload(String nickname, MultipartFile f, HttpServletRequest request) throws IOException{
        System.out.println(nickname);
        System.out.println("Size of file:"+f.getSize());
        System.out.println(f.getContentType());//文件类型
        System.out.println(f.getOriginalFilename());//文件原始名称
        System.out.println(System.getProperty("user.dir"));

        String path=request.getServletContext().getRealPath("/upload/");//动态获取web服务器的运行路径
        System.out.println(path);
        saveFile(f,path);
        return "saved";
    }

    public void saveFile(MultipartFile f,String path) throws IOException{
        File upDir=new File(path);
        if(!upDir.exists()){
            upDir.mkdir();
        }
        File file=new File(path+f.getOriginalFilename());
        f.transferTo(file);
    }
}

五、拦截器

前端请求先到达拦截器

prehandler方法->控制器方法->拦截器posthandle方法->aftercomplement方法。

六、HTTP状态码

1xx:通信传输协议级信息

2xx:成功

3xx:重定向,客户端必须执行一些其他操作才能完成其请求

4xx:客户端错误

5xx:服务器错误

七、restful

每个网址表示一种资源

@RestController
public class UserController{
    
    @GetMapping("/user/{id}")
    public String getUserById(@PathVariable int id){
        return "getuserbyid";
    }

    @PostMapping("/user")
    public String save(User user){
        return "saveuser";
    }

    @PutMapping("/user")
    public String update(User user){
        return "updateuser";
    }

    @DeleteMapping("/user/{id}")
    public String deleteUserById(@PathVariable int id){
        return "deleteuserbyid";
    }
}

八、Swagger

框架,自动生成完善的restful API文档,并根据后台代码自动更新,提供完整测试界面调试API

九、快捷键

alt+insert 快速添加get、set、tostring函数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值